-C When\sin\sPAGER_RESERVED\sstate,\sdon't\swrite\sto\sthe\smain\sfile\swhen\srolling\nback\sa\sstatement\stransaction.\s(CVS\s1560)
-D 2004-06-10T04:32:17
+C Misc\sfixes\sfor\stest\scases\sfailing\sdue\sto\sthe\snew\slocking\smodel.\s(CVS\s1561)
+D 2004-06-10T05:59:25
F Makefile.in ab7b0d5118e2da97bac66be8684a1034e3500f5a
F Makefile.linux-gcc a9e5a0d309fa7c38e7c14d3ecf7690879d3a5457
F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd
F src/os_unix.h 1cd6133cf66dea704b8646b70b2dfdcbdd9b3738
F src/os_win.c 6b8f9fcc683bb888e07fc485372803baa68faadb
F src/os_win.h 004eec47b1780fcaf07420ddc2072294b698d48c
-F src/pager.c 778379c031daa20d134a934d5753c19b606c10db
+F src/pager.c d852730901441babf6cd16fc528dd6eecc2b2eab
F src/pager.h ca8f293e1d623a7c628a1c5e0c6cf43d5bbb80bf
F src/parse.y 097438674976355a10cf177bd97326c548820b86
F src/pragma.c 6ab13748a415bf8e8f2dd79e5f713fbe72dfd3f4
F test/conflict.test 45ce1e44ea748944aed233df8c278a9e1c4c87cc
F test/crashtest1.c 09c1c7d728ccf4feb9e481671e29dda5669bbcc2
F test/date.test aed5030482ebc02bd8d386c6c86a29f694ab068d
-F test/delete.test ddb1d4e172a01c0165804f82f81df556fb48a856
+F test/delete.test ac14bd6df5f1581d646eebc013d6b844a885dcf6
F test/enc.test a55481d45ff493804e8d88357feb4642fc50a6b2
-F test/enc2.test fb00c4954b4f3eca1e8ec9c26671c68f6170226d
+F test/enc2.test 28b61a098dd571b06147fe9f857489edba4e405d
F test/expr.test 521588701dae8cf5aa2b8a18c5c897711f754332
F test/fkey1.test d65c824459916249bee501532d6154ddab0b5db7
F test/func.test 9816fbed0a5e87e00f4fc88b4cdcd638abc524c4
F test/memdb.test befe8f26d430d07ba65692243a893a0e82a0b866
F test/memleak.test 4d5d374c8ea1fc5ac634aed58cac1047848ce65e
F test/minmax.test 9dcf52f713b1b9e61d0a88a51eb8bb2e3c52d0ab
-F test/misc1.test 06e92b613615d38919bf6fea85536bc685a3da4b
+F test/misc1.test 8472d2133c33efa29d514b464c4129f638b9cd31
F test/misc2.test 10c2ce26407d37411b96273e552d5095393732be
F test/misc3.test eb488314990bfc0959221a1acc465013238bf168
F test/misuse.test 1095f26d1aed406c65e1d2eba651c4bb7c38cbff
F test/tclsqlite.test ab5e5c5a00b592c48c38fec8095cde74186c3fc2
F test/temptable.test a770ba6308d7f7332fce985086b8e06bed6430c2
F test/tester.tcl fc10520db0d3ce4ef6a8b5ab91bd102fc3f4280a
-F test/thread1.test 2fd5c10e82434f6b03be77b61fde5a050668abf2
+F test/thread1.test 52ab8d963691d5a34a7f998d364371c8c725a253
F test/threadtest1.c f7f896e62ed46feae1dc411114a48c15a0f82ee2
F test/threadtest2.c d94ca4114fd1504f7e0ae724bcd83d4b40931d86
F test/trans.test 4a26c6fa3639202c334521954c17d8abe8a1c8e8
F www/tclsqlite.tcl 19191cf2a1010eaeff74c51d83fd5f5a4d899075
F www/vdbe.tcl 59288db1ac5c0616296b26dce071c36cb611dfe9
F www/whentouse.tcl a8335bce47cc2fddb07f19052cb0cb4d9129a8e4
-P b8aaa3a29e0ddef357ab1b3b0b9f87ed390f2f36
-R ad810f31dbb79cebb57b3882d1073a25
+P adb2bd61436927d37b23bae857089d62e12397af
+R e8b127567100f827cb21e845b744b7ae
U danielk1977
-Z 5213c6eb04cd03f6a07cc2df587564de
+Z 7c95f2d087a4836fb9faba67d8f7b64b
-adb2bd61436927d37b23bae857089d62e12397af
\ No newline at end of file
+71e98d0d089576433c4b06dcba1c57063bd366f5
\ No newline at end of file
** file simultaneously, or one process from reading the database while
** another is writing.
**
-** @(#) $Id: pager.c,v 1.121 2004/06/10 04:32:17 danielk1977 Exp $
+** @(#) $Id: pager.c,v 1.122 2004/06/10 05:59:25 danielk1977 Exp $
*/
#include "os.h" /* Must be first to enable large file support */
#include "sqliteInt.h"
/* If the pager is in RESERVED state, then there must be a copy of this
** page in the pager cache. In this case just update the pager cache,
- ** not the database file.
+ ** not the database file. The page is left marked dirty in this case.
+ **
+ ** FIX ME: Ideally the page would only be left marked dirty when the
+ ** pager is in RESERVED state if it was dirty when this statement
+ ** transaction was started.
**
** If in EXCLUSIVE state, then we update the pager cache if it exists
** and the main file. The page is then marked not dirty.
if( pPager->xDestructor ){
pPager->xDestructor(pData, pPager->pageSize);
}
- pPg->dirty = 0;
- pPg->needSync = 0;
+ if( pPager->state==PAGER_EXCLUSIVE ){
+ pPg->dirty = 0;
+ pPg->needSync = 0;
+ }
+
CODEC(pPager, pData, pPg->pgno, 3);
}
return rc;
# This file implements regression tests for SQLite library. The
# focus of this file is testing the DELETE FROM statement.
#
-# $Id: delete.test,v 1.14 2004/05/27 17:22:56 drh Exp $
+# $Id: delete.test,v 1.15 2004/06/10 05:59:25 danielk1977 Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
do_test delete-8.4 {
execsql {SELECT * FROM t3}
} {123}
+
+# Update for v3: In v2 the DELETE statement would succeed because no
+# database writes actually occur. Version 3 refuses to open a transaction
+# on a read-only file, so the statement fails.
do_test delete-8.5 {
catchsql {
DELETE FROM t3 WHERE a<100;
}
-} {0 {}}
+# v2 result: {0 {}}
+} {1 {attempt to write a readonly database}}
do_test delete-8.6 {
execsql {SELECT * FROM t3}
} {123}
# various suported unicode encodings (UTF-8, UTF-16, UTF-16le and
# UTF-16be).
#
-# $Id: enc2.test,v 1.6 2004/06/09 12:30:06 danielk1977 Exp $
+# $Id: enc2.test,v 1.7 2004/06/10 05:59:25 danielk1977 Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
}
} {1 {attached databases must use the same text encoding as main database}}
+db2 close
+
finish_test
# This file implements tests for miscellanous features that were
# left out of other test files.
#
-# $Id: misc1.test,v 1.26 2004/06/09 09:55:20 danielk1977 Exp $
+# $Id: misc1.test,v 1.27 2004/06/10 05:59:25 danielk1977 Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
# Make sure the initialization works even if a database is opened while
# another process has the database locked.
#
+# Update for v3: The BEGIN doesn't lock the database so the schema is read
+# and the SELECT returns successfully.
do_test misc1-11.1 {
execsql {BEGIN}
execsql {UPDATE t1 SET a=0 WHERE 0}
sqlite db2 test.db
set rc [catch {db2 eval {SELECT count(*) FROM t1}} msg]
lappend rc $msg
-} {1 {database is locked}}
+# v2 result: {1 {database is locked}}
+} {0 3}
do_test misc1-11.2 {
execsql {COMMIT}
set rc [catch {db2 eval {SELECT count(*) FROM t1}} msg]
# This file implements regression tests for SQLite library. The
# focus of this script is multithreading behavior
#
-# $Id: thread1.test,v 1.4 2004/06/02 06:30:18 danielk1977 Exp $
+# $Id: thread1.test,v 1.5 2004/06/10 05:59:25 danielk1977 Exp $
set testdir [file dirname $argv0]
thread_compile C {INSERT INTO t2 VALUES(98,99)}
thread_step C
thread_result C
+ thread_finalize C
+ thread_result C
} SQLITE_BUSY
+
do_test thread1-2.4 {
execsql {SELECT * FROM t2}
} {}
+
do_test thread1-2.5 {
thread_finalize A
thread_result A
} SQLITE_OK
do_test thread1-2.6 {
+ thread_compile C {INSERT INTO t2 VALUES(98,99)}
thread_step C
thread_result C
+ thread_finalize C
+ thread_result C
} SQLITE_BUSY
do_test thread1-2.7 {
execsql {SELECT * FROM t2}
thread_result B
} SQLITE_OK
do_test thread1-2.9 {
+ thread_compile C {INSERT INTO t2 VALUES(98,99)}
thread_step C
thread_result C
} SQLITE_DONE