Re: using callbacks with connect_cached

"David E. Wheeler" <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.dbi.general
Message-ID <[email protected]>
On Aug 23, 2013, at 12:22 PM, Vincent Veyron <[email protected]> wrote:

> As you can see, no caching happens when any callback is present in the
> connect method (connected, connect_cached.new, or
> connect_cached.reused).

Oh, you know what? I think this is why the example in the docs and my blog post puts the callback into a lexical variable, then just passes that lexical. This is because the params passed to connect_cached(), if they vary at all, create different connections. You call connect_cached() three times, and construct the Callbacks hash reference anew each time. So it is different each time.

Try this:

my $cb = {
    'connect_cached.reused' => sub { print "reused!!!"; return; },
};
for my $test (1..3) {
    my $cached_dbh = MyApp::SQLite->connect_cached(
        "dbi:SQLite:dbname=$dbfile", '', '',
        {
            RaiseError  => 1,
            PrintError  => 0,
            Callbacks => $cb,
        }
    );
    ...
}

Best,

David
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.