-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

~From what I can tell people are just in shock and awe that checking 3000
tables each holding several years of data for a company (again:  several
years of data for 3000 different companies) calls malloc() several
million times.

Interesting enough, somebody came up with a hackish solution that could
probably be written to be more clean.

Matthew Arrington gives the below code:

#define SQLITE_WORK_BUFF_SIZE (128*1024) // make power of 2
#define SQLITE_WORK_BUFF_MASK (SQLITE_WORK_BUFF_SIZE-1)
char sqlite_workBuff[SQLITE_WORK_BUFF_SIZE];
int sqlite_writeIdx=0;

void *SQLITE_ALLOC(int nBytes)
{
~      void *ret;
~      sqlite_writeIdx = (sqlite_writeIdx + nBytes) & SQLITE_WORK_BUFF_MASK;
~      ret = sqlite_workBuff + sqlite_writeIdx;
~      sqlite_writeIdx+=nBytes;
~      return ret;
}

this idea could take being expanded on; as is it does leave room for
many screw-ups and hardcore memory corruption, especially in threaded
environments.

Steve Frierdich wrote:
| I have been noticing all the email messages about excessive malloc
| calls. Is there a serious bug in Sqlite about malloc being called
| excessively causing memory leaks in sqlite version 3? And if there is,
| is there a way to fix it the source code?
|
| Thank
|
| Steve
|
| D. Richard Hipp wrote:
|
|> Andrew Shakinovsky wrote:
|>
|>> I have noticed with SQLite (at least this was true with 2.8x, not
|>> sure about
|>> 3x) that if you try to use an ORDER BY with a table that doesn't have an
|>> index on the field you are ORDERing by, it will do the entire sort
|>> (presumably just the keys) in memory. This will cause you to run out of
|>> memory if the table is too large.
|>>
|>
|> This is also true of version 3.0 and (the soon to be released) version
|> 3.1.  I believe this constraint is documented somewhere, though I
|> cannot say where right off hand.  Somebody please correct me (and
|> submit documentation patches) if I am wrong.
|>
|>
|

- --
All content of all messages exchanged herein are left in the
Public Domain, unless otherwise explicitly stated.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFB43M3hDd4aOud5P8RApMzAJ4+qkchPTbM4CF9DWrIblE4AJHLRACffZON
mc8txoELVoMtnqph6G2+jX4=
=KoXS
-----END PGP SIGNATURE-----

Reply via email to