From 1e336b42f1f72523881920d6c8fbe06d18e618f6 Mon Sep 17 00:00:00 2001
From: drh
Date: Thu, 14 Feb 2002 12:50:33 +0000
Subject: [PATCH] Fix an incorrect assert() in pager.c. (CVS 369)
FossilOrigin-Name: 08a68e098a677c508652ba2ff4bd63185cab7546
---
VERSION | 2 +-
manifest | 18 +++++++++---------
manifest.uuid | 2 +-
src/pager.c | 4 ++--
test/misc1.test | 22 +++++++++++++++++++++-
www/changes.tcl | 7 +++++++
6 files changed, 41 insertions(+), 14 deletions(-)
diff --git a/VERSION b/VERSION
index 2bf1c1ccf3..f90b1afc08 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.3.1
+2.3.2
diff --git a/manifest b/manifest
index 1b96af2422..de25a3c242 100644
--- a/manifest
+++ b/manifest
@@ -1,9 +1,9 @@
-C Version\s2.3.1\s(CVS\s445)
-D 2002-02-13T23:30:00
+C Fix\san\sincorrect\sassert()\sin\spager.c.\s(CVS\s369)
+D 2002-02-14T12:50:34
F Makefile.in 9fa4277413bf1d9cf91365f07d4108d7d87ed2af
F Makefile.template 3372d45f8853afdb70bd30cc6fb50a3cd9069834
F README a4c0ba11354ef6ba0776b400d057c59da47a4cc0
-F VERSION ed0510bca23ecd087a7c96ee72838b17e2b5d355
+F VERSION 8a3972d032a0720e980b8b9143ef5c03312e37d6
F aclocal.m4 11faa843caa38fd451bc6aeb43e248d1723a269d
F config.guess f38b1e93d1e0fa6f5a6913e9e7b12774b9232588
F config.log 6a73d03433669b10a3f0c221198c3f26b9413914
@@ -31,7 +31,7 @@ F src/main.c 300320ba68d3e5b22c2c5b2c07fa884878202181
F src/md5.c 52f677bfc590e09f71d07d7e327bd59da738d07c
F src/os.c 1953080d14098cd45e5bde88941567688efb72b1
F src/os.h a17596ecc7f38a228b83ecdb661fb03ce44726d6
-F src/pager.c 4059bda97a7e10083b77b7d347fea45426b08589
+F src/pager.c d261a3a0b4e96a400ef5432297edec09b041e9c7
F src/pager.h b28f004e2f5541dc60cc32db01bf80cf4d056283
F src/parse.y 734ba1e0dce9882345e65de5a14d9fe02fb757c2
F src/printf.c 300a90554345751f26e1fc0c0333b90a66110a1d
@@ -72,7 +72,7 @@ F test/limit.test a930f3eba2a7691c8397ccab33710b931589566a
F test/lock.test 19593689260c419efe7ced55b1418653a4b7bcd1
F test/main.test 1626345b5f630c5398eede500d9354813b76b0fd
F test/malloc.test 70fdd0812e2a57eb746aaf015350f58bb8eee0b1
-F test/misc1.test 5ed0df7274912cbce56f1afa19c9510510b0a7f9
+F test/misc1.test 7fd54d33547177da86e39e13e9608c5112681831
F test/notnull.test b1f3e42fc475b0b5827b27b2e9b562081995ff30
F test/pager.test b0c0d00cd5dce0ce21f16926956b195c0ab5044c
F test/printf.test 3cb415073754cb8ff076f26173143c3cd293a9da
@@ -107,7 +107,7 @@ F www/arch.fig d5f9752a4dbf242e9cfffffd3f5762b6c63b3bcf
F www/arch.png 82ef36db1143828a7abc88b1e308a5f55d4336f4
F www/arch.tcl 72a0c80e9054cc7025a50928d28d9c75c02c2b8b
F www/c_interface.tcl 82a026b1681757f13b3f62e035f3a31407c1d353
-F www/changes.tcl f8f4837a26f49cff1c65bfd69a47f04ec705c1de
+F www/changes.tcl 4bf48ffd0027217e25d9e2db7914dca099096a2a
F www/conflict.tcl 81dd21f9a679e60aae049e9dd8ab53d59570cda2
F www/crosscompile.tcl 3622ebbe518927a3854a12de51344673eb2dd060
F www/download.tcl a6d75b8b117cd33dcb090bef7e80d7556d28ebe0
@@ -122,7 +122,7 @@ F www/speed.tcl 83457b2bf6bb430900bd48ca3dd98264d9a916a5
F www/sqlite.tcl 8b5884354cb615049aed83039f8dfe1552a44279
F www/tclsqlite.tcl 829b393d1ab187fd7a5e978631b3429318885c49
F www/vdbe.tcl 2013852c27a02a091d39a766bc87cff329f21218
-P df6bf627a51358e8b14297403feab7b888c38580
-R 2dd44e4df5f1749abcfa5e153ebc4db9
+P 846148d6e3fd0529abfef3f819e4a7cb91e44422
+R 83a2e2aa6bfb49216f2c372d2d5334c7
U drh
-Z fef393ae90710c36822a8b0657319b1f
+Z 0128439de8d04ee4033ade5a65fa6e18
diff --git a/manifest.uuid b/manifest.uuid
index 9a6188ba81..585036225e 100644
--- a/manifest.uuid
+++ b/manifest.uuid
@@ -1 +1 @@
-846148d6e3fd0529abfef3f819e4a7cb91e44422
\ No newline at end of file
+08a68e098a677c508652ba2ff4bd63185cab7546
\ No newline at end of file
diff --git a/src/pager.c b/src/pager.c
index d4fe1852de..bdb5741e61 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.38 2002/02/02 18:49:20 drh Exp $
+** @(#) $Id: pager.c,v 1.39 2002/02/14 12:50:35 drh Exp $
*/
#include "sqliteInt.h"
#include "pager.h"
@@ -1093,7 +1093,7 @@ int sqlitepager_write(void *pData){
** then write the current page to the checkpoint journal.
*/
if( pPager->ckptOpen && !pPg->inCkpt && (int)pPg->pgno<=pPager->ckptSize ){
- assert( pPg->inJournal );
+ assert( pPg->inJournal || (int)pPg->pgno>pPager->origDbSize );
rc = sqliteOsWrite(&pPager->cpfd, &pPg->pgno, sizeof(Pgno));
if( rc==SQLITE_OK ){
rc = sqliteOsWrite(&pPager->cpfd, pData, SQLITE_PAGE_SIZE);
diff --git a/test/misc1.test b/test/misc1.test
index a34e354d7a..d4e8417f16 100644
--- a/test/misc1.test
+++ b/test/misc1.test
@@ -13,7 +13,7 @@
# This file implements tests for miscellanous features that were
# left out of other test files.
#
-# $Id: misc1.test,v 1.2 2002/02/13 23:22:54 drh Exp $
+# $Id: misc1.test,v 1.3 2002/02/14 12:50:35 drh Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
@@ -114,4 +114,24 @@ do_test misc1-3.1 {
lindex $r 1
} {hi}
+# Here's a test for yet another bug found by Joel Lucsy. The code
+# below was causing an assertion failure.
+#
+do_test misc1-4.1 {
+ execsql {
+ BEGIN;
+ CREATE TABLE t2(a);
+ INSERT INTO t2 VALUES('This is a long string to use up a lot of disk -');
+ UPDATE t2 SET a=a||a||a||a;
+ INSERT INTO t2 SELECT '1 - ' || a FROM t2;
+ INSERT INTO t2 SELECT '2 - ' || a FROM t2;
+ INSERT INTO t2 SELECT '3 - ' || a FROM t2;
+ INSERT INTO t2 SELECT '4 - ' || a FROM t2;
+ INSERT INTO t2 SELECT '5 - ' || a FROM t2;
+ INSERT INTO t2 SELECT '6 - ' || a FROM t2;
+ COMMIT;
+ SELECT count(*) FROM t2;
+ }
+} {64}
+
finish_test
diff --git a/www/changes.tcl b/www/changes.tcl
index 68272e740c..1657df3acb 100644
--- a/www/changes.tcl
+++ b/www/changes.tcl
@@ -17,6 +17,13 @@ proc chng {date desc} {
puts "
"
}
+chng {2002 Feb 14 (2.3.2)} {
+Bug fix: There was an incorrect assert() in pager.c. The real code was
+ all correct (as far as is known) so everything should work OK if you
+ compile with -DNDEBUG=1. But without disability the assertions, there
+ could be a fault.
+}
+
chng {2002 Feb 13 (2.3.1)} {
Bug fix: An assertion was failing if "PRAGMA full_column_names=ON;" was
set and you did a query that used a rowid, like this: