Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Re: Re: Would you use SQLite?

by broquaint (Abbot)
on Mar 04, 2002 at 18:01 UTC ( #149168=note: print w/replies, xml ) Need Help??

in reply to Re: Would you use SQLite?
in thread Would you use SQLite?

Is this possibly because there are single quotes in the $key value? So your SQL may in fact look like this (minus the formatting :-)
INSERT INTO objects (md5, url) VALUES ( '$md5', ''' -- ^ note the extra single quote!!! )
If so, it would be a good case to use those ever handy DBI placholders
$dbh->do("INSERT INTO objects (md5, url) VALUES (?,?)" undef, $md5, $key);



Replies are listed 'Best First'.
Re: Re: Re: Would you use SQLite?
by Matts (Deacon) on Mar 06, 2002 at 07:38 UTC
    Also if you do a prepare outside your loop followed by the execute with placeholders inside the loop, you'll see an eensy weeny tiny bit of a performance boost, because I don't have to keep re-parsing the SQL.

    But no, all memory leaks appear to be cleared up now.

    And I'll look into the NDEBUG issue - thanks!

      Already have the prepare outside the loop (I tend to read lots before I try something new--SQL and DBI were entirely new to me, so I read all 5 or so posts by you on the subject as well as all of the SQLite page ;-).

      The NDEBUG thing is here: Database Speed Comparison

      The specific line is:

      SQLite version 2.0-alpha-2 was compiled with -O2 optimization and with the -DNDEBUG=1 compiler switch. Setting the NDEBUG macro is very important in SQLite version 2.0. SQLite 2.0 contains some expensive "assert()" statements in the inner loop of its processing. Setting the NDEBUG macro makes SQLite 2.0 run nearly twice as fast.

      This may already be set by default now, but everything I could find in the makefiles indicates it is not. So, DBI::SQLite might get a nice little speed boost for next to nothing. But even if not, it is already plenty fast so far for my application. The client side CGI script has gotten slower, by quite a lot (as it has to connect to the DB and whatever else goes into starting up). It takes it a good three seconds to begin working, but once it is producing results it goes at a very zippy pace. So no complaints here.

      Thanks for the additional info on the possibility of leaks. And thanks a ton for the module--it works great, and was very easy to install and program (I guess DBI gets the credit for programmability--but you did a great job packaging SQLite into a module/DBD).

Re: Re: Re: Would you use SQLite?
by SwellJoe (Scribe) on Mar 04, 2002 at 18:13 UTC
    Thanks broquaint!

    That seems to have done it. I had tried that already, but I didn't get the syntax quite right so got strange errors (I left out the 'undef'--why is that there/required?).

      > I left out the 'undef'--why is that there/required?
      It certainly is required :-) It's used to "pass driver specific hints", and as yet, I've found no use for it (but that's because I mainly use MySQL which doesn't make use of these hints (as far as I know ...)).


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://149168]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (9)
As of 2018-03-20 16:32 GMT
Find Nodes?
    Voting Booth?
    When I think of a mole I think of:

    Results (254 votes). Check out past polls.