-C Version\s3.2.4\s(CVS\s2619)
-D 2005-08-24T11:14:47
+C Fix\sa\sbug\sin\sDELETE\sthat\smight\scause\sa\ssegfault\swhen\sdeleting\smore\nthan\s40940\srows\sof\sdata\sall\sat\sonce.\s(CVS\s2620)
+D 2005-08-24T16:13:52
F Makefile.in b109ddb46a5550d0732dcd6caca01c123f6d5cdd
F Makefile.linux-gcc 06be33b2a9ad4f005a5f42b22c4a19dab3cbb5c7
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
F src/vdbeInt.h 9be9a6c43d38124bd03cc5cf05715605b1789fd9
F src/vdbeapi.c 7790e9f8da2dde29510a196d1e41ff53da7eb8a8
F src/vdbeaux.c 874624698fad54a59c6a0bcccea9d5aaa8655ab6
-F src/vdbefifo.c b8805850afe13b43f1de78d58088cb5d66f88e1e
+F src/vdbefifo.c 9efb94c8c3f4c979ebd0028219483f88e57584f5
F src/vdbemem.c 4732fd4d1a75dc38549493d7f9a81d02bf7c59b5
F src/where.c 485041aa51fb33f43b346e018f7c01422847f364
F tclinstaller.tcl 046e3624671962dc50f0481d7c25b38ef803eb42
F test/default.test 252298e42a680146b1dd64f563b95bdf088d94fb
F test/delete.test 33e1670049364fc3604217a6c2eda042a47115ab
F test/delete2.test e382b6a97787197eb8b93dd4ccd37797c3725ea3
+F test/delete3.test 555e84a00a99230b7d049d477a324a631126a6ab
F test/diskfull.test ba27afd587af1216f92d2bb00132cbc0e39354fc
F test/enc.test 7a03417a1051fe8bc6c7641cf4c8c3f7e0066d52
F test/enc2.test d1ab077b84f4d3099246915422b1ab6b81481e0a
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
F www/version3.tcl a99cf5f6d8bd4d5537584a2b342f0fb9fa601d8b
F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513
-P 139a28d231875e72538fd6842168c458441ad1d0
-R 2f6c9b894551e0a3c64b6097033bd8f9
+P 8cef2c1ae728970a38d794f9903115da5d0fcd55
+R a70653770f548ef58ecb2d4303ec79dd
U drh
-Z fbfbdff77016e0ef0591035e80b41a64
+Z 4fc4e011eef56b244e6411516a20c5a0
-8cef2c1ae728970a38d794f9903115da5d0fcd55
\ No newline at end of file
+7c599bae33ba4eb10fc486ae3dab76330ce69936
\ No newline at end of file
*/
static FifoPage *allocatePage(int nEntry){
FifoPage *pPage;
+ if( nEntry>32767 ){
+ nEntry = 32767;
+ }
pPage = sqliteMallocRaw( sizeof(FifoPage) + sizeof(i64)*(nEntry-1) );
if( pPage ){
pPage->nSlot = nEntry;
pPage = pFifo->pFirst;
assert( pPage!=0 );
assert( pPage->iWrite>pPage->iRead );
+ assert( pPage->iWrite<=pPage->nSlot );
assert( pPage->iRead<pPage->nSlot );
+ assert( pPage->iRead>=0 );
*pVal = pPage->aSlot[pPage->iRead++];
pFifo->nEntry--;
if( pPage->iRead>=pPage->iWrite ){
--- /dev/null
+# 2005 August 24
+#
+# The author disclaims copyright to this source code. In place of
+# a legal notice, here is a blessing:
+#
+# May you do good and not evil.
+# May you find forgiveness for yourself and forgive others.
+# May you share freely, never taking more than you give.
+#
+#***********************************************************************
+# This file implements regression tests for SQLite library. The
+# focus of this script is a test of the DELETE command where a
+# large number of rows are deleted.
+#
+
+set testdir [file dirname $argv0]
+source $testdir/tester.tcl
+
+# Create a table that contains a large number of rows.
+#
+do_test delete3-1.1 {
+ execsql {
+ CREATE TABLE t1(x integer primary key);
+ BEGIN;
+ INSERT INTO t1 VALUES(1);
+ INSERT INTO t1 VALUES(2);
+ INSERT INTO t1 SELECT x+2 FROM t1;
+ INSERT INTO t1 SELECT x+4 FROM t1;
+ INSERT INTO t1 SELECT x+8 FROM t1;
+ INSERT INTO t1 SELECT x+16 FROM t1;
+ INSERT INTO t1 SELECT x+32 FROM t1;
+ INSERT INTO t1 SELECT x+64 FROM t1;
+ INSERT INTO t1 SELECT x+128 FROM t1;
+ INSERT INTO t1 SELECT x+256 FROM t1;
+ INSERT INTO t1 SELECT x+512 FROM t1;
+ INSERT INTO t1 SELECT x+1024 FROM t1;
+ INSERT INTO t1 SELECT x+2048 FROM t1;
+ INSERT INTO t1 SELECT x+4096 FROM t1;
+ INSERT INTO t1 SELECT x+8192 FROM t1;
+ INSERT INTO t1 SELECT x+16384 FROM t1;
+ INSERT INTO t1 SELECT x+32768 FROM t1;
+ INSERT INTO t1 SELECT x+65536 FROM t1;
+ INSERT INTO t1 SELECT x+131072 FROM t1;
+ INSERT INTO t1 SELECT x+262144 FROM t1;
+ COMMIT;
+ SELECT count(*) FROM t1;
+ }
+} {524288}
+do_test delete3-1.2 {
+ execsql {
+ DELETE FROM t1 WHERE x%2==0;
+ SELECT count(*) FROM t1;
+ }
+} {262144}
+integrity_check delete3-1.3
+
+finish_test