From 02927cc1f332ec59387424bc6a0489426d20fe67 Mon Sep 17 00:00:00 2001 From: drh Date: Mon, 12 Apr 2010 19:43:43 +0000 Subject: [PATCH 1/4] Clear a global variable in e_fts3.test before it is used. FossilOrigin-Name: ae89dfd26b65fb1a3633a4338f5cb5e54a7d2035 --- manifest | 24 +++++++++++++++++------- manifest.uuid | 2 +- test/e_fts3.test | 1 + 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/manifest b/manifest index 55eab897f8..a81ba1608d 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,8 @@ -C Fix\sa\sproblem\swhere\sa\sprocess\sin\sexclusive\smode\scould\sdelete\sa\shot-journal\sfile\swithout\srolling\sit\sback\sfrom\swithin\ssqlite3_close()\sor\sDETACH.\sThis\sproblem\swas\sintroduced\sby\sthe\sprevious\scommit,\sit\sis\snot\spresent\sin\sany\sreleases. -D 2010-04-12T17:08:45 +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA1 + +C Clear\sa\sglobal\svariable\sin\se_fts3.test\sbefore\sit\sis\sused. +D 2010-04-12T19:43:43 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0 F Makefile.in 4f2f967b7e58a35bb74fb7ec8ae90e0f4ca7868b F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -333,7 +336,7 @@ F test/descidx3.test 3394ad4d089335cac743c36a14129d6d931c316f F test/diskfull.test 0cede7ef9d8f415d9d3944005c76be7589bb5ebb F test/distinctagg.test 1a6ef9c87a58669438fc771450d7a72577417376 F test/e_fkey.test 6721a741c6499b3ab7e5385923233343c8f1ad05 -F test/e_fts3.test 5adb033fae6e07002d11f4a7c8f8e8ff9f31e8ec +F test/e_fts3.test 75bb0aee26384ef586165e21018a17f7cd843469 F test/enc.test e54531cd6bf941ee6760be041dff19a104c7acea F test/enc2.test 6d91a5286f59add0cfcbb2d0da913b76f2242398 F test/enc3.test 5c550d59ff31dccdba5d1a02ae11c7047d77c041 @@ -797,7 +800,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f -P 562d20e662da474ea326165730ecfdfcf9b414ee -R 8333162e7f153eb6e6f78b7cbd811ab4 -U dan -Z 65fbb5bed20edd048b9a7fedeedd0df1 +P 51a613950824698687c0db83b7884db33d45f7f5 +R ff89b38a0a4a8fecbd176e1ed262b9c3 +U drh +Z 08eb609a7934096f724eca11d8ed75b5 +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1.4.6 (GNU/Linux) + +iD8DBQFLw3fyoxKgR168RlERApVMAJ9f1yTVR1hBKqFZPhPTgmDsmIYfuACffsYB +gJYRnEpMu05BFGT/ycW9PUI= +=ZWEh +-----END PGP SIGNATURE----- diff --git a/manifest.uuid b/manifest.uuid index 37bbe815aa..f0b03e07c7 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -51a613950824698687c0db83b7884db33d45f7f5 \ No newline at end of file +ae89dfd26b65fb1a3633a4338f5cb5e54a7d2035 \ No newline at end of file diff --git a/test/e_fts3.test b/test/e_fts3.test index 6a14d50d96..3f7ed0e517 100644 --- a/test/e_fts3.test +++ b/test/e_fts3.test @@ -252,6 +252,7 @@ ddl_test 1.3.2.8 { DROP TABLE docs } # Test the examples in section 3 (full-text index queries). # ddl_test 1.4.1.1 { CREATE VIRTUAL TABLE docs USING fts3(title, body) } +unset -nocomplain R foreach {tn title body} { 2 "linux driver" "a device" 3 "driver" "linguistic trick" From 09c0f6d02d908032e209eef6fdc3f4bcdb725c82 Mon Sep 17 00:00:00 2001 From: drh Date: Mon, 12 Apr 2010 19:44:22 +0000 Subject: [PATCH 2/4] Recent changes cause the xSync method of the memory journal implementation to be used, so remove the assert(0). FossilOrigin-Name: 1f2cb9402838373f6370660dfc885013df079895 --- manifest | 18 +++++++++--------- manifest.uuid | 2 +- src/memjournal.c | 9 ++++----- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/manifest b/manifest index a81ba1608d..d9d042fdaf 100644 --- a/manifest +++ b/manifest @@ -1,8 +1,8 @@ -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 -C Clear\sa\sglobal\svariable\sin\se_fts3.test\sbefore\sit\sis\sused. -D 2010-04-12T19:43:43 +C Recent\schanges\scause\sthe\sxSync\smethod\sof\sthe\smemory\sjournal\simplementation\nto\sbe\sused,\sso\sremove\sthe\sassert(0). +D 2010-04-12T19:44:23 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0 F Makefile.in 4f2f967b7e58a35bb74fb7ec8ae90e0f4ca7868b F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -141,7 +141,7 @@ F src/mem1.c 89d4ea8d5cdd55635cbaa48ad53132af6294cbb2 F src/mem2.c 2ee7bdacda8299b5a91cff9f7ee3e46573195c38 F src/mem3.c 9b237d911ba9904142a804be727cc6664873f8a3 F src/mem5.c eb7a5cb98915dd7a086fa415ce3a5a0f20d0acff -F src/memjournal.c 5bfc2f33c914946e2f77ed3f882aff14dfc9355d +F src/memjournal.c f3be374af30588de297dcf678925b2a4758e4135 F src/mutex.c 581a272e09098040ca3ef543cb5f3d643eff7d50 F src/mutex.h 6fde601e55fa6c3fae768783c439797ab84c87c6 F src/mutex_noop.c 5f58eaa31f2d742cb8957a747f7887ae98f16053 @@ -800,14 +800,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f -P 51a613950824698687c0db83b7884db33d45f7f5 -R ff89b38a0a4a8fecbd176e1ed262b9c3 +P ae89dfd26b65fb1a3633a4338f5cb5e54a7d2035 +R 1fd72ebc321ad90b597550b67392160f U drh -Z 08eb609a7934096f724eca11d8ed75b5 +Z 0794d323ac548fe92e3d7347c04ad222 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) -iD8DBQFLw3fyoxKgR168RlERApVMAJ9f1yTVR1hBKqFZPhPTgmDsmIYfuACffsYB -gJYRnEpMu05BFGT/ycW9PUI= -=ZWEh +iD8DBQFLw3gaoxKgR168RlERAhOvAKCMwBUAU5LgdJlGE1Wpcg7e+X5SWgCeKxdR +H+SY4j6giHqJOHvYiTWkJlo= +=TTDT -----END PGP SIGNATURE----- diff --git a/manifest.uuid b/manifest.uuid index f0b03e07c7..6d9f4eec97 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -ae89dfd26b65fb1a3633a4338f5cb5e54a7d2035 \ No newline at end of file +1f2cb9402838373f6370660dfc885013df079895 \ No newline at end of file diff --git a/src/memjournal.c b/src/memjournal.c index 0d81ecff7c..f042475dc9 100644 --- a/src/memjournal.c +++ b/src/memjournal.c @@ -196,11 +196,10 @@ static int memjrnlClose(sqlite3_file *pJfd){ ** exists purely as a contingency, in case some malfunction in some other ** part of SQLite causes Sync to be called by mistake. */ -static int memjrnlSync(sqlite3_file *NotUsed, int NotUsed2){ /*NO_TEST*/ - UNUSED_PARAMETER2(NotUsed, NotUsed2); /*NO_TEST*/ - assert( 0 ); /*NO_TEST*/ - return SQLITE_OK; /*NO_TEST*/ -} /*NO_TEST*/ +static int memjrnlSync(sqlite3_file *NotUsed, int NotUsed2){ + UNUSED_PARAMETER2(NotUsed, NotUsed2); + return SQLITE_OK; +} /* ** Query the size of the file in bytes. From 08ede1d08be4a83f831b28c8e479fedb1675ca75 Mon Sep 17 00:00:00 2001 From: drh Date: Mon, 12 Apr 2010 20:54:13 +0000 Subject: [PATCH 3/4] Add e_fts3.test to the set of tests excluded from the inmemory_journal exclusion list, since it does simulated OOM errors which trigger I/O errors and SQLite is unable to recover from I/O errors without a persistent journal. FossilOrigin-Name: e7e7127f0b0db582274338a9fefc30a0c0be07c3 --- manifest | 18 +++++++++--------- manifest.uuid | 2 +- test/permutations.test | 1 + 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/manifest b/manifest index d9d042fdaf..0ebe29578a 100644 --- a/manifest +++ b/manifest @@ -1,8 +1,8 @@ -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 -C Recent\schanges\scause\sthe\sxSync\smethod\sof\sthe\smemory\sjournal\simplementation\nto\sbe\sused,\sso\sremove\sthe\sassert(0). -D 2010-04-12T19:44:23 +C Add\se_fts3.test\sto\sthe\sset\sof\stests\sexcluded\sfrom\sthe\sinmemory_journal\nexclusion\slist,\ssince\sit\sdoes\ssimulated\sOOM\serrors\swhich\strigger\sI/O\serrors\nand\sSQLite\sis\sunable\sto\srecover\sfrom\sI/O\serrors\swithout\sa\spersistent\sjournal. +D 2010-04-12T20:54:14 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0 F Makefile.in 4f2f967b7e58a35bb74fb7ec8ae90e0f4ca7868b F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -532,7 +532,7 @@ F test/pageropt.test 3ee6578891baaca967f0bd349e4abfa736229e1a F test/pagesize.test 76aa9f23ecb0741a4ed9d2e16c5fa82671f28efb F test/pcache.test eebc4420b37cb07733ae9b6e99c9da7c40dd6d58 F test/pcache2.test 0d85f2ab6963aee28c671d4c71bec038c00a1d16 -F test/permutations.test dfc70940fedd5660b89f9b9e3f158f3970f83c4e +F test/permutations.test 6117bae41935a787cc92faee81e91f813580eccb F test/pragma.test 6960f9efbce476f70ba9ee2171daf5042f9e3d8a F test/pragma2.test 5364893491b9231dd170e3459bfc2e2342658b47 F test/printf.test 05970cde31b1a9f54bd75af60597be75a5c54fea @@ -800,14 +800,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f -P ae89dfd26b65fb1a3633a4338f5cb5e54a7d2035 -R 1fd72ebc321ad90b597550b67392160f +P 1f2cb9402838373f6370660dfc885013df079895 +R 5567f4e8e626c3cb084ceff986806e4e U drh -Z 0794d323ac548fe92e3d7347c04ad222 +Z deb0531907145df38c27450b253f1d1a -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) -iD8DBQFLw3gaoxKgR168RlERAhOvAKCMwBUAU5LgdJlGE1Wpcg7e+X5SWgCeKxdR -H+SY4j6giHqJOHvYiTWkJlo= -=TTDT +iD8DBQFLw4h5oxKgR168RlERAjQeAJ4/Z9ltgzAA1u0gks/CLLSHD5Q+YgCeK/Zj +HvGRuCSTWXMpAy0S5Uom4JU= +=odUk -----END PGP SIGNATURE----- diff --git a/manifest.uuid b/manifest.uuid index 6d9f4eec97..7510108a83 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -1f2cb9402838373f6370660dfc885013df079895 \ No newline at end of file +e7e7127f0b0db582274338a9fefc30a0c0be07c3 \ No newline at end of file diff --git a/test/permutations.test b/test/permutations.test index 06b1d44587..ada6503a79 100644 --- a/test/permutations.test +++ b/test/permutations.test @@ -467,6 +467,7 @@ run_tests "inmemory_journal" -description { autovacuum_ioerr2.test incrvacuum_ioerr.test ioerr.test ioerr.test ioerr2.test ioerr3.test ioerr4.test ioerr5.test vacuum3.test incrblob_err.test diskfull.test backup_ioerr.test + e_fts3.test # Exclude test scripts that use tcl IO to access journal files or count # the number of fsync() calls. From c9206ed56e3750315cd2db09ea6aad35a9972fb4 Mon Sep 17 00:00:00 2001 From: dan Date: Tue, 13 Apr 2010 06:18:02 +0000 Subject: [PATCH 4/4] Test that the rollback-hook is invoked if a commit-hook implementation returns non-zero (causing a rollback). Remove documentation comment that says otherwise from sqlite.h.in. FossilOrigin-Name: 012cf101bf8be9e39c138786ea5a5039b8131e55 --- manifest | 26 ++++++++------------------ manifest.uuid | 2 +- src/sqlite.h.in | 2 -- test/hook.test | 27 +++++++++++++++++++++++++++ 4 files changed, 36 insertions(+), 21 deletions(-) diff --git a/manifest b/manifest index 0ebe29578a..0092203951 100644 --- a/manifest +++ b/manifest @@ -1,8 +1,5 @@ ------BEGIN PGP SIGNED MESSAGE----- -Hash: SHA1 - -C Add\se_fts3.test\sto\sthe\sset\sof\stests\sexcluded\sfrom\sthe\sinmemory_journal\nexclusion\slist,\ssince\sit\sdoes\ssimulated\sOOM\serrors\swhich\strigger\sI/O\serrors\nand\sSQLite\sis\sunable\sto\srecover\sfrom\sI/O\serrors\swithout\sa\spersistent\sjournal. -D 2010-04-12T20:54:14 +C Test\sthat\sthe\srollback-hook\sis\sinvoked\sif\sa\scommit-hook\simplementation\sreturns\snon-zero\s(causing\sa\srollback).\sRemove\sdocumentation\scomment\sthat\ssays\sotherwise\sfrom\ssqlite.h.in. +D 2010-04-13T06:18:02 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0 F Makefile.in 4f2f967b7e58a35bb74fb7ec8ae90e0f4ca7868b F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -169,7 +166,7 @@ F src/resolve.c ac5f1a713cd1ae77f08b83cc69581e11bf5ae6f9 F src/rowset.c 69afa95a97c524ba6faf3805e717b5b7ae85a697 F src/select.c 5a08245cb18b7ddf2456274653599cbf738d3830 F src/shell.c c40427c7245535a04a9cb4a417b6cc05c022e6a4 -F src/sqlite.h.in c5001b77dc0cb046136da65d8dbdf234048be21d +F src/sqlite.h.in 0aeb53778e1591032fdf12ba7aa059250beb480a F src/sqlite3ext.h 69dfb8116af51b84a029cddb3b35062354270c89 F src/sqliteInt.h bd7ff54663bdd5b57e0eb8b49aca5a3a3c60119a F src/sqliteLimit.h 3afab2291762b5d09ae20c18feb8e9fa935a60a6 @@ -424,7 +421,7 @@ F test/fuzz2.test 207d0f9d06db3eaf47a6b7bfc835b8e2fc397167 F test/fuzz3.test aec64345184d1662bd30e6a17851ff659d596dc5 F test/fuzz_common.tcl a87dfbb88c2a6b08a38e9a070dabd129e617b45b F test/fuzz_malloc.test 4eca9d345f06d5b0b0105f7a2ef9e7f22658827b -F test/hook.test c9c992f2914977072a71e98df3bfcad1f47737c9 +F test/hook.test f04c3412463f8ec117c1c704c74ca0f627ce733a F test/icu.test 1fc0ff9a3bafc80abf679b11afc0f8a3ce995abd F test/in.test d49419c6df515852f477fa513f3317181d46bc92 F test/in2.test 5d4c61d17493c832f7d2d32bef785119e87bde75 @@ -800,14 +797,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f -P 1f2cb9402838373f6370660dfc885013df079895 -R 5567f4e8e626c3cb084ceff986806e4e -U drh -Z deb0531907145df38c27450b253f1d1a ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1.4.6 (GNU/Linux) - -iD8DBQFLw4h5oxKgR168RlERAjQeAJ4/Z9ltgzAA1u0gks/CLLSHD5Q+YgCeK/Zj -HvGRuCSTWXMpAy0S5Uom4JU= -=odUk ------END PGP SIGNATURE----- +P e7e7127f0b0db582274338a9fefc30a0c0be07c3 +R 169f65701c60c914b5babe14af8a5a2d +U dan +Z 59ba641787a7f590bcc552c76de3273b diff --git a/manifest.uuid b/manifest.uuid index 7510108a83..8176592c4b 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -e7e7127f0b0db582274338a9fefc30a0c0be07c3 \ No newline at end of file +012cf101bf8be9e39c138786ea5a5039b8131e55 \ No newline at end of file diff --git a/src/sqlite.h.in b/src/sqlite.h.in index 24d4e8fbc5..78f3773e99 100644 --- a/src/sqlite.h.in +++ b/src/sqlite.h.in @@ -3880,8 +3880,6 @@ sqlite3_stmt *sqlite3_next_stmt(sqlite3 *pDb, sqlite3_stmt *pStmt); ** an error or constraint causes an implicit rollback to occur. ** ^The rollback callback is not invoked if a transaction is ** automatically rolled back because the database connection is closed. -** ^The rollback callback is not invoked if a transaction is -** rolled back because a commit callback returned non-zero. ** ** See also the [sqlite3_update_hook()] interface. */ diff --git a/test/hook.test b/test/hook.test index b526708e0d..6496d41e13 100644 --- a/test/hook.test +++ b/test/hook.test @@ -334,4 +334,31 @@ do_test hook-5.2.2 { # End rollback-hook testing. #---------------------------------------------------------------------------- +#---------------------------------------------------------------------------- +# Test that if a commit-hook returns non-zero (causing a rollback), the +# rollback-hook is invoked. +# +proc commit_hook {} { + lappend ::hooks COMMIT + return 1 +} +proc rollback_hook {} { + lappend ::hooks ROLLBACK +} +do_test hook-6.1 { + set ::hooks [list] + db commit_hook commit_hook + db rollback_hook rollback_hook + catchsql { + BEGIN; + INSERT INTO t1 VALUES('two', 'II'); + COMMIT; + } + execsql { SELECT * FROM t1 } +} {one I} +do_test hook-6.2 { + set ::hooks +} {COMMIT ROLLBACK} +unset ::hooks + finish_test