From 3caf58ea65c80be7b125bf5ac123e2e43d248cf0 Mon Sep 17 00:00:00 2001 From: drh Date: Mon, 30 Jan 2006 22:48:44 +0000 Subject: [PATCH] Memory DB works with autovacuum. (CVS 3041) FossilOrigin-Name: 34dff874a2bf8331be87310809ba11d813fadb7d --- manifest | 14 +++++++------- manifest.uuid | 2 +- src/pager.c | 4 ++-- test/memdb.test | 26 +++++++++++++++++++++++++- 4 files changed, 35 insertions(+), 11 deletions(-) diff --git a/manifest b/manifest index 0be9c1606b..cc6ca086b6 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Make\ssure\sthe\s3rd\sparameter\sto\ssqlite3_prepare()\sis\shonored.\s\sTicket\s#1650.\s(CVS\s3040) -D 2006-01-30T22:35:44 +C Memory\sDB\sworks\swith\sautovacuum.\s(CVS\s3041) +D 2006-01-30T22:48:44 F Makefile.in e936c6fc3134838318aa0335a85041e6da31f6ee F Makefile.linux-gcc 74ba0eadf88748a9ce3fd03d2a3ede2e6715baec F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028 @@ -59,7 +59,7 @@ F src/os_unix.c 73c5e722a661ed98d8919f204911e4e34e51fa41 F src/os_unix.h 5768d56d28240d3fe4537fac08cc85e4fb52279e F src/os_win.c 566bf7b41b72556fd7dca390bceaa2769dc395e9 F src/os_win.h 41a946bea10f61c158ce8645e7646b29d44f122b -F src/pager.c c9fdc3f4026f22e73d8fa586c4f58e14129036bb +F src/pager.c b5b380ea7a36f84e50c3adc1a414820a0eb3baa6 F src/pager.h e0acb095b3ad0bca48f2ab00c87346665643f64f F src/parse.y 4285cd2d0f31a8db4c4d54325f88e500452fa029 F src/pragma.c 4496cc77dc35824e1c978c3d1413b8a5a4c777d3 @@ -195,7 +195,7 @@ F test/malloc3.test fd4186bee73c2a2638f4e2a05a684c06836f725b F test/malloc4.test 59cd02f71b363302a04c4e77b97c0a1572eaa210 F test/malloc5.test 7425272e263325fda7d32cb55706e52b5c09e7e0 F test/manydb.test 8de36b8d33aab5ef295b11d9e95310aeded31af8 -F test/memdb.test ed97df0414a6e33e043e3eeffccb54d06098d0ae +F test/memdb.test a67bda4ff90a38f2b19f6c7f95aa7289e051d893 F test/memleak.test df2b2b96e77f8ba159a332299535b1e5f18e49ac F test/minmax.test cad887abca5504396718e2cd5729ca40758743e8 F test/misc1.test 5a9cfffc59e5da583492a1c07efcb08a48cd1135 @@ -349,7 +349,7 @@ F www/tclsqlite.tcl bb0d1357328a42b1993d78573e587c6dcbc964b9 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0 F www/version3.tcl a99cf5f6d8bd4d5537584a2b342f0fb9fa601d8b F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513 -P 8efc8c57103cab61bc06842391744bec69c24428 -R 67662a16bac53c6b6882b43161155881 +P 9d53cc880fd2aa3bd4b4a59f666b57b0b7864e8f +R a00b5e878885404ba1ff7012291e506f U drh -Z 3ce9dce65c4451fa921d25ff4c0e8dad +Z 3c9e0a653cb5ce6429201a9bb17db65f diff --git a/manifest.uuid b/manifest.uuid index 3a8fd78ed3..fc4bd38e75 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -9d53cc880fd2aa3bd4b4a59f666b57b0b7864e8f \ No newline at end of file +34dff874a2bf8331be87310809ba11d813fadb7d \ No newline at end of file diff --git a/src/pager.c b/src/pager.c index bd80b07c7a..e01ed62cfb 100644 --- a/src/pager.c +++ b/src/pager.c @@ -18,7 +18,7 @@ ** file simultaneously, or one process from reading the database while ** another is writing. ** -** @(#) $Id: pager.c,v 1.256 2006/01/24 13:09:33 danielk1977 Exp $ +** @(#) $Id: pager.c,v 1.257 2006/01/30 22:48:44 drh Exp $ */ #ifndef SQLITE_OMIT_DISKIO #include "sqliteInt.h" @@ -2676,7 +2676,7 @@ int sqlite3pager_get(Pager *pPager, Pgno pgno, void **ppPage){ /* Populate the page with data, either by reading from the database ** file, or by setting the entire page to zero. */ - if( sqlite3pager_pagecount(pPager)<(int)pgno ){ + if( sqlite3pager_pagecount(pPager)<(int)pgno || MEMDB ){ memset(PGHDR_TO_DATA(pPg), 0, pPager->pageSize); }else{ assert( MEMDB==0 ); diff --git a/test/memdb.test b/test/memdb.test index 3aed00487d..c1eb1152ce 100644 --- a/test/memdb.test +++ b/test/memdb.test @@ -11,7 +11,7 @@ # This file implements regression tests for SQLite library. The # focus of this script is in-memory database backend. # -# $Id: memdb.test,v 1.14 2006/01/17 09:35:02 danielk1977 Exp $ +# $Id: memdb.test,v 1.15 2006/01/30 22:48:44 drh Exp $ set testdir [file dirname $argv0] @@ -388,6 +388,30 @@ ifcapable subquery { } } +# Ticket #1524 +# +do_test memdb-8.1 { + db close + sqlite3 db {:memory:} + execsql { + PRAGMA auto_vacuum=TRUE; + CREATE TABLE t1(a); + INSERT INTO t1 VALUES(randstr(5000,6000)); + INSERT INTO t1 VALUES(randstr(5000,6000)); + INSERT INTO t1 VALUES(randstr(5000,6000)); + INSERT INTO t1 VALUES(randstr(5000,6000)); + INSERT INTO t1 VALUES(randstr(5000,6000)); + SELECT count(*) FROM t1; + } +} 5 +do_test memdb-8.2 { + execsql { + DELETE FROM t1; + SELECT count(*) FROM t1; + } +} 0 + + } ;# ifcapable memorydb finish_test