"Rick Keiner" <[EMAIL PROTECTED]> wrote:
> Yes, apparently. The :memory: DB doesn't show the storage being reclaimed by
> the OS. In fact, after some more analysis, it's not reusing storage already
> allocated. :( Could that be?
>
> After checking the vacuum.c code. It's not doing anything for an in-memory
> DB. Would that be handled elsewhere?
>
> /* Get the full pathname of the database file and create a
> ** temporary filename in the same directory as the original file.
> */
> pMain = db->aDb[0].pBt;
> zFilename = sqlite3BtreeGetFilename(pMain);
> assert( zFilename );
> if( zFilename[0]=='\0' ){
> /* The in-memory database. Do nothing. Return directly to avoid causing
> ** an error trying to DETACH the vacuum_db (which never got attached)
> ** in the exit-handler.
> */
> return SQLITE_OK;
> }
>
Auto-vacuum and VACUUM, in spite of similar names, are very different
mechanisms. You enable autovacuum by issuing a pragma:
PRAGMA auto_vacuum=ON;
prior to creating any tables in your :memory: database.
--
D. Richard Hipp <[EMAIL PROTECTED]>