From 56089737c13119f17799ab9a0cb130be668b0640 Mon Sep 17 00:00:00 2001 From: dan Date: Wed, 6 Apr 2011 12:37:09 +0000 Subject: [PATCH 1/5] Add configurations featuring the -ftrapv switch and large values for SQLITE_MAX_ATTACHED to releasetest.tcl. FossilOrigin-Name: 989588abf3e88e198b7224604d54f7dc24d2576f --- manifest | 15 +++--- manifest.uuid | 2 +- test/attach4.test | 112 +++++++++++++++++++++++++++++++++++++++++++ test/releasetest.tcl | 7 +++ 4 files changed, 128 insertions(+), 8 deletions(-) create mode 100644 test/attach4.test diff --git a/manifest b/manifest index ffd971b88a..6512a7cc40 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Suppress\smany\sharmless\scompiler\swarnings,\smostly\ssigned/unsigned\scomparisons\s\nwithin\sasserts\sor\sunused\sparameters\sin\sextensions. -D 2011-04-05T22:08:24.148 +C Add\sconfigurations\sfeaturing\sthe\s-ftrapv\sswitch\sand\slarge\svalues\sfor\sSQLITE_MAX_ATTACHED\sto\sreleasetest.tcl. +D 2011-04-06T12:37:09.027 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 7a4d9524721d40ef9ee26f93f9bd6a51dba106f2 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -271,6 +271,7 @@ F test/async5.test f3592d79c84d6e83a5f50d3fd500445f7d97dfdf F test/attach.test 2bb09073d7d5499127db00f50780766dcea913e1 F test/attach2.test a295d2d7061adcee5884ef4a93c7c96a82765437 F test/attach3.test bd9830bc3a0d22ed1310c9bff6896927937017dc +F test/attach4.test d58859e62e0a70f17481eed01bf94995f72fea7f F test/attachmalloc.test 1d5b821a676f7bf0b00d87cc106b78966789ba57 F test/auth.test b047105c32da7db70b842fd24056723125ecc2ff F test/auth2.test 270baddc8b9c273682760cffba6739d907bd2882 @@ -619,7 +620,7 @@ F test/randexpr1.test 1084050991e9ba22c1c10edd8d84673b501cc25a F test/rdonly.test c267d050a1d9a6a321de502b737daf28821a518d F test/reindex.test 44edd3966b474468b823d481eafef0c305022254 F test/releasetest.mk 2eced2f9ae701fd0a29e714a241760503ccba25a -F test/releasetest.tcl 02497b7fb9c53fa65fc8757de7675987cd571068 +F test/releasetest.tcl c0c0865f1dff08dde08a964ef49e83217ebedbf8 F test/rollback.test 1a83118ea6db4e7d8c10eaa63871b5e90502ffdc F test/rowhash.test 0bc1d31415e4575d10cacf31e1a66b5cc0f8be81 F test/rowid.test e58e0acef38b527ed1b0b70d3ada588f804af287 @@ -926,7 +927,7 @@ F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/split-sqlite3c.tcl d9be87f1c340285a3e081eb19b4a247981ed290c F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f -P 51039b3578f948c23a810d176e81fa51a278fb28 -R 18530986ff3caac2d2c1acc5867b1dce -U drh -Z 767e18c513ceaeb424f39c58cb8c31a7 +P 3eeb0ff78d04891b5fd1a3d99a9fb8cfbed77a81 +R 6a88c360447f99a69a5292d43478158d +U dan +Z 01815f1e39a9f88f53e178793e399240 diff --git a/manifest.uuid b/manifest.uuid index f64fd90592..ca45766f05 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -3eeb0ff78d04891b5fd1a3d99a9fb8cfbed77a81 \ No newline at end of file +989588abf3e88e198b7224604d54f7dc24d2576f \ No newline at end of file diff --git a/test/attach4.test b/test/attach4.test new file mode 100644 index 0000000000..fe7392610f --- /dev/null +++ b/test/attach4.test @@ -0,0 +1,112 @@ +# 200 July 1 +# +# 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 attaching many database files to a single +# connection. +# + +set testdir [file dirname $argv0] +source $testdir/tester.tcl + +set testprefix attach4 + +ifcapable !attach { + finish_test + return +} + +puts "Testing with SQLITE_MAX_ATTACHED=$SQLITE_MAX_ATTACHED" + +set files {main test.db} +for {set ii 0} {$ii < $SQLITE_MAX_ATTACHED} {incr ii} { + lappend files aux$ii "test.db$ii" +} + +do_test 1.1 { + sqlite3_limit db SQLITE_LIMIT_ATTACHED -1 +} $SQLITE_MAX_ATTACHED + +do_test 1.2.1 { + db close + foreach {name f} $files { forcedelete $f } + sqlite3 db test.db + + foreach {name f} $files { + if {$name == "main"} continue + execsql "ATTACH '$f' AS $name" + } + + db eval {PRAGMA database_list} { + lappend L $name [file tail $file] + } + set L +} $files + +do_catchsql_test 1.2.2 { + ATTACH 'x.db' AS next; +} [list 1 "too many attached databases - max $SQLITE_MAX_ATTACHED"] + +do_test 1.3 { + execsql BEGIN; + foreach {name f} $files { + execsql "CREATE TABLE $name.tbl(x)" + execsql "INSERT INTO $name.tbl VALUES('$f')" + } + execsql COMMIT; +} {} + +do_test 1.4 { + set L [list] + foreach {name f} $files { + lappend L $name [execsql "SELECT x FROM $name.tbl"] + } + set L +} $files + +set L [list] +set S "" +foreach {name f} $files { + lappend L wal + append S " + PRAGMA $name.journal_mode = WAL; + UPDATE $name.tbl SET x = '$name'; + " +} +do_execsql_test 1.5 $S $L + +do_test 1.6 { + set L [list] + foreach {name f} $files { + lappend L [execsql "SELECT x FROM $name.tbl"] $f + } + set L +} $files + +do_test 1.7 { + execsql BEGIN; + foreach {name f} $files { + execsql "UPDATE $name.tbl SET x = '$f'" + } + execsql COMMIT; +} {} + +do_test 1.8 { + set L [list] + foreach {name f} $files { + lappend L $name [execsql "SELECT x FROM $name.tbl"] + } + set L +} $files + +db close +foreach {name f} $files { forcedelete $f } + +finish_test diff --git a/test/releasetest.tcl b/test/releasetest.tcl index 788816b169..84542bb8a5 100644 --- a/test/releasetest.tcl +++ b/test/releasetest.tcl @@ -60,6 +60,11 @@ array set ::Configs { "Default" { -O2 } + "Ftrapv" { + -O2 -ftrapv + -DSQLITE_MAX_ATTACHED=55 + -DSQLITE_TCL_DEFAULT_FULLMUTEX=1 + } "Unlock-Notify" { -O2 -DSQLITE_ENABLE_UNLOCK_NOTIFY @@ -144,6 +149,7 @@ array set ::Configs { } "Extra-Robustness" { -DSQLITE_ENABLE_OVERSIZE_CELL_CHECK=1 + -DSQLITE_MAX_ATTACHED=62 } } @@ -155,6 +161,7 @@ array set ::Platforms { "Debug-One" test "Extra-Robustness" test "Device-Two" test + "Ftrapv" test "Default" "threadtest test" "Device-One" fulltest } From 6d59c2c1c2290466e666246830e4cdd8abff2cbe Mon Sep 17 00:00:00 2001 From: dan Date: Wed, 6 Apr 2011 12:38:10 +0000 Subject: [PATCH 2/5] Update a comment in sqliteLimit.h. No changes to code or tests. FossilOrigin-Name: b7296fd380319bcae26b1ac13f23e57a4852881b --- manifest | 12 ++++++------ manifest.uuid | 2 +- src/sqliteLimit.h | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/manifest b/manifest index 6512a7cc40..037fe7503c 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Add\sconfigurations\sfeaturing\sthe\s-ftrapv\sswitch\sand\slarge\svalues\sfor\sSQLITE_MAX_ATTACHED\sto\sreleasetest.tcl. -D 2011-04-06T12:37:09.027 +C Update\sa\scomment\sin\ssqliteLimit.h.\sNo\schanges\sto\scode\sor\stests. +D 2011-04-06T12:38:10.774 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 7a4d9524721d40ef9ee26f93f9bd6a51dba106f2 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -181,7 +181,7 @@ F src/shell.c a73b30067ec15f116d5d0c28880179898fbe3d0b F src/sqlite.h.in 923630d8249b66cf8a266dd53d4d094cace80164 F src/sqlite3ext.h c90bd5507099f62043832d73f6425d8d5c5da754 F src/sqliteInt.h 7b0150bfdab049b11bb2d055d065051ff734d113 -F src/sqliteLimit.h a17dcd3fb775d63b64a43a55c54cb282f9726f44 +F src/sqliteLimit.h 164b0e6749d31e0daa1a4589a169d31c0dec7b3d F src/status.c 7ac64842c86cec2fc1a1d0e5c16d3beb8ad332bf F src/table.c 2cd62736f845d82200acfa1287e33feb3c15d62e F src/tclsqlite.c 501c9a200fd998a268be475be5858febc90b725b @@ -927,7 +927,7 @@ F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/split-sqlite3c.tcl d9be87f1c340285a3e081eb19b4a247981ed290c F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f -P 3eeb0ff78d04891b5fd1a3d99a9fb8cfbed77a81 -R 6a88c360447f99a69a5292d43478158d +P 989588abf3e88e198b7224604d54f7dc24d2576f +R df8c6a2d98809ce798e9e89087f711fe U dan -Z 01815f1e39a9f88f53e178793e399240 +Z ed8624ce5f9af09e9f7b1c695a0cb10f diff --git a/manifest.uuid b/manifest.uuid index ca45766f05..c75e8ee2bd 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -989588abf3e88e198b7224604d54f7dc24d2576f \ No newline at end of file +b7296fd380319bcae26b1ac13f23e57a4852881b \ No newline at end of file diff --git a/src/sqliteLimit.h b/src/sqliteLimit.h index 62772cf0e6..c7aee53ceb 100644 --- a/src/sqliteLimit.h +++ b/src/sqliteLimit.h @@ -118,7 +118,7 @@ /* ** The maximum number of attached databases. This must be between 0 -** and 30. The upper bound on 30 is because a 32-bit integer bitmap +** and 62. The upper bound on 62 is because a 64-bit integer bitmap ** is used internally to track attached databases. */ #ifndef SQLITE_MAX_ATTACHED From bb2b4418673da6412cbd18622115aac092d6feee Mon Sep 17 00:00:00 2001 From: dan Date: Wed, 6 Apr 2011 17:54:31 +0000 Subject: [PATCH 3/5] Changes to support building with various SQLITE_OMIT_XXX options defined. FossilOrigin-Name: 2039ed952a02bdcd4fc6d2e20572c4632084dcdb --- manifest | 20 +++++++------- manifest.uuid | 2 +- src/btree.c | 2 +- src/loadext.c | 5 ++++ src/select.c | 28 +++++++++++-------- src/test_server.c | 1 - tool/omittest.tcl | 70 ++++++++++++++++++++++++++++------------------- 7 files changed, 75 insertions(+), 53 deletions(-) diff --git a/manifest b/manifest index 037fe7503c..82540dec38 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Update\sa\scomment\sin\ssqliteLimit.h.\sNo\schanges\sto\scode\sor\stests. -D 2011-04-06T12:38:10.774 +C Changes\sto\ssupport\sbuilding\swith\svarious\sSQLITE_OMIT_XXX\soptions\sdefined. +D 2011-04-06T17:54:31.814 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 7a4d9524721d40ef9ee26f93f9bd6a51dba106f2 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -121,7 +121,7 @@ F src/auth.c 523da7fb4979469955d822ff9298352d6b31de34 F src/backup.c b7529a6691f0fd534ae8ff622203c46a7f1b626b F src/bitvec.c af50f1c8c0ff54d6bdb7a80e2fceca5a93670bef F src/btmutex.c 7907af20b954a8605766fbd2d87b47647422960e -F src/btree.c 6002f05e15aca2f22ab072a0be13b7394a8c0858 +F src/btree.c 4fcad108b612a4d33dac568b11d26e4d38ccbe35 F src/btree.h 221e186cd64127088890a878aaab154344380fe8 F src/btreeInt.h 67978c014fa4f7cc874032dd3aacadd8db656bc3 F src/build.c b7c993274ee2a029937b0bc4815bdef80b330017 @@ -142,7 +142,7 @@ F src/insert.c 6873a0b359e538d0568a8b459ca630edef8dde2c F src/journal.c 552839e54d1bf76fb8f7abe51868b66acacf6a0e F src/legacy.c a199d7683d60cef73089e892409113e69c23a99f F src/lempar.c 7f026423f4d71d989e719a743f98a1cbd4e6d99e -F src/loadext.c 8af9fcc75708d60b88636ccba38b4a7b3c155c3e +F src/loadext.c 3ae0d52da013a6326310655be6473fd472347b85 F src/main.c 5dad851457fdd249a4d4f41e94fe9cb11aedf1f2 F src/malloc.c 788f2ed928786dfe305b6783d551d6b1a9080976 F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645 @@ -176,7 +176,7 @@ F src/printf.c 585a36b6a963df832cfb69505afa3a34ed5ef8a1 F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50 F src/resolve.c 1c0f32b64f8e3f555fe1f732f9d6f501a7f05706 F src/rowset.c 69afa95a97c524ba6faf3805e717b5b7ae85a697 -F src/select.c d24406c45dd2442eb2eeaac413439066b149c944 +F src/select.c 649a6f10f7eb7b52a5a28847773cb9968a828ae8 F src/shell.c a73b30067ec15f116d5d0c28880179898fbe3d0b F src/sqlite.h.in 923630d8249b66cf8a266dd53d4d094cace80164 F src/sqlite3ext.h c90bd5507099f62043832d73f6425d8d5c5da754 @@ -219,7 +219,7 @@ F src/test_pcache.c 7bf828972ac0d2403f5cfa4cd14da41f8ebe73d8 F src/test_quota.c b5576f17d701af461effd7ca1e71f0d100071192 F src/test_rtree.c 30c981837445a4e187ee850a49c4760d9642f7c3 F src/test_schema.c 8c06ef9ddb240c7a0fcd31bc221a6a2aade58bf0 -F src/test_server.c 88caa13d33cb85a4f924229bd9693acd8e1429ba +F src/test_server.c 2f99eb2837dfa06a4aacf24af24c6affdf66a84f F src/test_stat.c f682704b5d1ba8e1d4e7e882a6d7922e2dcf066c F src/test_superlock.c 2b97936ca127d13962c3605dbc9a4ef269c424cd F src/test_syscall.c 162c4ec0137a549c009bb9ecab550527743cfc5d @@ -906,7 +906,7 @@ F tool/mkspeedsql.tcl a1a334d288f7adfe6e996f2e712becf076745c97 F tool/mksqlite3c.tcl 623e26cc8c83322e4151d3ad85ac69d41221bae8 F tool/mksqlite3h.tcl d76c226a5e8e1f3b5f6593bcabe5e98b3b1ec9ff F tool/mksqlite3internalh.tcl 7b43894e21bcb1bb39e11547ce7e38a063357e87 -F tool/omittest.tcl 4f4cc66bb7ca6a5b8f61ee37b6333f60fb8a746a +F tool/omittest.tcl b1dd290c1596e0f31fd335160a74ec5dfea3df4a F tool/opcodeDoc.awk b3a2a3d5d3075b8bd90b7afe24283efdd586659c F tool/restore_jrnl.tcl 6957a34f8f1f0f8285e07536225ec3b292a9024a F tool/shell1.test f608a009b04c490fd360c5ded458a6f98b4e7ec4 @@ -927,7 +927,7 @@ F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/split-sqlite3c.tcl d9be87f1c340285a3e081eb19b4a247981ed290c F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f -P 989588abf3e88e198b7224604d54f7dc24d2576f -R df8c6a2d98809ce798e9e89087f711fe +P b7296fd380319bcae26b1ac13f23e57a4852881b +R 4db291802b7406c40281c186d712b803 U dan -Z ed8624ce5f9af09e9f7b1c695a0cb10f +Z 5987d8475f9d11110fdabc0084f5d8fd diff --git a/manifest.uuid b/manifest.uuid index c75e8ee2bd..5a4abd67a9 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -b7296fd380319bcae26b1ac13f23e57a4852881b \ No newline at end of file +2039ed952a02bdcd4fc6d2e20572c4632084dcdb \ No newline at end of file diff --git a/src/btree.c b/src/btree.c index 449ba6edea..bfdc3d98a8 100644 --- a/src/btree.c +++ b/src/btree.c @@ -2127,7 +2127,6 @@ int sqlite3BtreeSyncDisabled(Btree *p){ return rc; } -#if !defined(SQLITE_OMIT_PAGER_PRAGMAS) || !defined(SQLITE_OMIT_VACUUM) /* ** Change the default pages size and the number of reserved bytes per page. ** Or, if the page size has already been fixed, return SQLITE_READONLY @@ -2182,6 +2181,7 @@ int sqlite3BtreeGetPageSize(Btree *p){ return p->pBt->pageSize; } +#if !defined(SQLITE_OMIT_PAGER_PRAGMAS) || !defined(SQLITE_OMIT_VACUUM) /* ** Return the number of bytes of space at the end of every page that ** are intentually left unused. This is the "reserved" space that is diff --git a/src/loadext.c b/src/loadext.c index da2eec8c67..c832e684ef 100644 --- a/src/loadext.c +++ b/src/loadext.c @@ -71,6 +71,11 @@ # define sqlite3_complete16 0 #endif +#ifdef SQLITE_OMIT_DECLTYPE +# define sqlite3_column_decltype16 0 +# define sqlite3_column_decltype 0 +#endif + #ifdef SQLITE_OMIT_PROGRESS_CALLBACK # define sqlite3_progress_handler 0 #endif diff --git a/src/select.c b/src/select.c index ae32cce9c5..3a4a881684 100644 --- a/src/select.c +++ b/src/select.c @@ -806,6 +806,22 @@ static void explainTempTable(Parse *pParse, const char *zUsage){ } } +/* +** Assign expression b to lvalue a. A second, no-op, version of this macro +** is provided when SQLITE_OMIT_EXPLAIN is defined. This allows the code +** in sqlite3Select() to assign values to structure member variables that +** only exist if SQLITE_OMIT_EXPLAIN is not defined without polluting the +** code with #ifndef directives. +*/ +# define explainSetInteger(a, b) a = b + +#else +/* No-op versions of the explainXXX() functions and macros. */ +# define explainTempTable(y,z) +# define explainSetInteger(y,z) +#endif + +#if !defined(SQLITE_OMIT_EXPLAIN) && !defined(SQLITE_OMIT_COMPOUND_SELECT) /* ** Unless an "EXPLAIN QUERY PLAN" command is being processed, this function ** is a no-op. Otherwise, it adds a single row of output to the EQP result, @@ -837,21 +853,9 @@ static void explainComposite( sqlite3VdbeAddOp4(v, OP_Explain, pParse->iSelectId, 0, 0, zMsg, P4_DYNAMIC); } } - -/* -** Assign expression b to lvalue a. A second, no-op, version of this macro -** is provided when SQLITE_OMIT_EXPLAIN is defined. This allows the code -** in sqlite3Select() to assign values to structure member variables that -** only exist if SQLITE_OMIT_EXPLAIN is not defined without polluting the -** code with #ifndef directives. -*/ -# define explainSetInteger(a, b) a = b - #else /* No-op versions of the explainXXX() functions and macros. */ -# define explainTempTable(y,z) # define explainComposite(v,w,x,y,z) -# define explainSetInteger(y,z) #endif /* diff --git a/src/test_server.c b/src/test_server.c index f7b596c78a..ed0818e6f6 100644 --- a/src/test_server.c +++ b/src/test_server.c @@ -453,7 +453,6 @@ void *sqlite3_server(void *NotUsed){ pthread_mutex_unlock(&pMsg->clientMutex); pthread_cond_signal(&pMsg->clientWakeup); } - sqlite3_thread_cleanup(); pthread_mutex_unlock(&g.serverMutex); return 0; } diff --git a/tool/omittest.tcl b/tool/omittest.tcl index e23dbaf4cb..f1963ff13d 100644 --- a/tool/omittest.tcl +++ b/tool/omittest.tcl @@ -8,7 +8,7 @@ This Tcl script is used to test the various compile time options available for omitting code (the SQLITE_OMIT_xxx options). It should be invoked as follows: -