From 7f10579a82a158b71ca3fd05c241c5ebb9cb3fee Mon Sep 17 00:00:00 2001 From: drh Date: Mon, 4 Jan 2016 01:08:50 +0000 Subject: [PATCH 01/13] Add releasetest.tcl cases for SQLITE_LIKE_DOESNT_MATCH_BLOB and for SQLITE_ENABLE_CURSOR_HINTS. FossilOrigin-Name: f300c35efa5f7383b2a74b1c9466c243c17815e4 --- manifest | 14 +++++++------- manifest.uuid | 2 +- test/cursorhint.test | 12 ++++++------ test/releasetest.tcl | 2 ++ 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/manifest b/manifest index 584914720e..00ec784d9b 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Bug\sfix:\sthe\sconflict\sresolution\sbehavior\sfor\sthe\simplied\sNOT\sNULL\sconstraint\non\sthe\sPRIMARY\sKEY\sof\sa\sWITHOUT\sROWID\stable\sshould\sbe\sABORT. -D 2016-01-03T18:07:57.631 +C Add\sreleasetest.tcl\scases\sfor\sSQLITE_LIKE_DOESNT_MATCH_BLOB\sand\nfor\sSQLITE_ENABLE_CURSOR_HINTS. +D 2016-01-04T01:08:50.342 F Makefile.in 28bcd6149e050dff35d4dcfd97e890cd387a499d F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 5fff077fcc46de7714ed6eebb6159a4c00eab751 @@ -562,7 +562,7 @@ F test/crashtest1.c 09c1c7d728ccf4feb9e481671e29dda5669bbcc2 F test/createtab.test b5de160630b209c4b8925bdcbbaf48cc90b67fe8 F test/cse.test 277350a26264495e86b1785f34d2d0c8600e021c F test/ctime.test 7bd009071e242aac4f18521581536b652b789a47 -F test/cursorhint.test 432811b62bd5ffb812729f49bba3b9ad687550bb +F test/cursorhint.test 7bc346788390475e77a345da2b92270d04d35856 F test/date.test 984ac1e3e5e031386866f034006148d3972b4a65 F test/dbstatus.test 8de104bb5606f19537d23cd553b41349b5ab1204 F test/dbstatus2.test 10418e62b3db5dca070f0c3eef3ea13946f339c2 @@ -947,7 +947,7 @@ F test/rbu.test 168573d353cd0fd10196b87b0caa322c144ef736 F test/rdonly.test 64e2696c322e3538df0b1ed624e21f9a23ed9ff8 F test/regexp1.test 497ea812f264d12b6198d6e50a76be4a1973a9d8 F test/reindex.test 44edd3966b474468b823d481eafef0c305022254 -F test/releasetest.tcl f84ff16fef79ee5d328eee7c48da084a775d101c +F test/releasetest.tcl 975449bf742b8bb9025208292208af816a1fcb58 F test/resolver01.test f4022acafda7f4d40eca94dbf16bc5fc4ac30ceb F test/rollback.test 458fe73eb3ffdfdf9f6ba3e9b7350a6220414dea F test/rollback2.test fc14cf6d1a2b250d2735ef16124b971bce152f14 @@ -1406,7 +1406,7 @@ F tool/vdbe_profile.tcl 246d0da094856d72d2c12efec03250d71639d19f F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 76f5efa68728d899a63a74f2528dfd0c497aa5f0 -R 478df71a9631f4b73fcefbae5de2f355 +P e30062e9f6cae980150dda7df440b36dfdcb7bbe +R 60c0d617eaaaa3eb60de4d61ace77f3f U drh -Z 2ce3cb02ff6782c368c437352328d0d1 +Z bf759b86247c24cfa4d33f391ba06db6 diff --git a/manifest.uuid b/manifest.uuid index c0ad5b411d..6624b9ab92 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -e30062e9f6cae980150dda7df440b36dfdcb7bbe \ No newline at end of file +f300c35efa5f7383b2a74b1c9466c243c17815e4 \ No newline at end of file diff --git a/test/cursorhint.test b/test/cursorhint.test index 69bc248cd7..ae86120fa8 100644 --- a/test/cursorhint.test +++ b/test/cursorhint.test @@ -46,10 +46,10 @@ proc p4_of_opcode {db opcode sql} { # Run EXPLAIN on $sql. Return a list of P5 values for all $opcode # opcodes that contain regexp $comment in their comment # -proc p5_of_opcode {db opcode comment sql} { +proc p5_of_opcode {db opcode sql} { set res {} $db eval "EXPLAIN $sql" x { - if {$x(opcode)==$opcode && [regexp $comment $x(comment)]} { + if {$x(opcode)==$opcode} { lappend res $x(p5) } } @@ -66,7 +66,7 @@ do_test 1.1 { } } {{EQ(r[1],c0)}} do_test 1.2 { - p5_of_opcode db OpenRead . { + p5_of_opcode db OpenRead { SELECT * FROM t1 CROSS JOIN t2 WHERE a=x } } {00 00} @@ -79,7 +79,7 @@ do_test 2.1 { } } {{EQ(c0,r[1])}} do_test 2.2 { - p5_of_opcode db OpenRead . { + p5_of_opcode db OpenRead { SELECT * FROM t2 CROSS JOIN t1 WHERE a=x } } {00 00} @@ -114,7 +114,7 @@ do_test 4.1desc { } } {GT(c0,11)} do_test 4.2 { - p5_of_opcode db OpenRead . { + p5_of_opcode db OpenRead { SELECT * FROM t1 WHERE b>11; } } {02 00} @@ -129,7 +129,7 @@ do_test 4.3desc { } } {} do_test 4.4 { - p5_of_opcode db OpenRead . { + p5_of_opcode db OpenRead { SELECT c FROM t1 WHERE b<11; } } {00} diff --git a/test/releasetest.tcl b/test/releasetest.tcl index 8cf7a76fb8..bb902eec3e 100644 --- a/test/releasetest.tcl +++ b/test/releasetest.tcl @@ -86,6 +86,8 @@ array set ::Configs [strip_comments { -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1 -DSQLITE_ENABLE_STMT_SCANSTATUS + -DSQLITE_LIKE_DOESNT_MATCH_BLOBS + -DSQLITE_ENABLE_CURSOR_HINTS --enable-json1 } "Check-Symbols" { From 9fbc885afcbf09b90322bab8f0daf613df2fa26b Mon Sep 17 00:00:00 2001 From: drh Date: Mon, 4 Jan 2016 03:48:46 +0000 Subject: [PATCH 02/13] Fix a harmless compiler warning. FossilOrigin-Name: 4b404a99aa9bfa6cfe8998f5dc1f84f8be20b840 --- manifest | 12 ++++++------ manifest.uuid | 2 +- src/vdbe.c | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/manifest b/manifest index 00ec784d9b..39fe0a1326 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Add\sreleasetest.tcl\scases\sfor\sSQLITE_LIKE_DOESNT_MATCH_BLOB\sand\nfor\sSQLITE_ENABLE_CURSOR_HINTS. -D 2016-01-04T01:08:50.342 +C Fix\sa\sharmless\scompiler\swarning. +D 2016-01-04T03:48:46.399 F Makefile.in 28bcd6149e050dff35d4dcfd97e890cd387a499d F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 5fff077fcc46de7714ed6eebb6159a4c00eab751 @@ -398,7 +398,7 @@ F src/update.c 17332f9fe818cbc0444c36a811800af8498af4c3 F src/utf.c 32d7f82aa921322f3e1c956f4b58f019ebd2c6b3 F src/util.c e802e8e311a0d6c48cd1b3e89db164f6f0248d70 F src/vacuum.c 2ddd5cad2a7b9cef7f9e431b8c7771634c6b1701 -F src/vdbe.c 638c20bae996d8037a114294016768b6bc8ebc14 +F src/vdbe.c 6ac8e5d808d48afc369316e147c191102f0584c1 F src/vdbe.h efb7a8c1459e31f3ea4377824c6a7e4cb5068637 F src/vdbeInt.h 75c2e82ee3357e9210c06474f8d9bdf12c81105d F src/vdbeapi.c 020681b943e77766b32ae1cddf86d7831b7374ca @@ -1406,7 +1406,7 @@ F tool/vdbe_profile.tcl 246d0da094856d72d2c12efec03250d71639d19f F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P e30062e9f6cae980150dda7df440b36dfdcb7bbe -R 60c0d617eaaaa3eb60de4d61ace77f3f +P f300c35efa5f7383b2a74b1c9466c243c17815e4 +R a3643a709add89c526ff9d85846c177f U drh -Z bf759b86247c24cfa4d33f391ba06db6 +Z 723a886ae851aa4686263a1002cc64d8 diff --git a/manifest.uuid b/manifest.uuid index 6624b9ab92..44b7d4d4a2 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -f300c35efa5f7383b2a74b1c9466c243c17815e4 \ No newline at end of file +4b404a99aa9bfa6cfe8998f5dc1f84f8be20b840 \ No newline at end of file diff --git a/src/vdbe.c b/src/vdbe.c index c8fc6ff45b..5acb3b3137 100644 --- a/src/vdbe.c +++ b/src/vdbe.c @@ -2524,7 +2524,7 @@ case OP_Column: { goto op_column_error; } }else{ - VVA_ONLY( t = 0; ) /* Only needed by assert() statements */ + t = 0; } /* If after trying to extract new entries from the header, nHdrParsed is From 6044bf8bf3c5cada8e985a6fefa3aededbc19dea Mon Sep 17 00:00:00 2001 From: drh Date: Mon, 4 Jan 2016 04:28:11 +0000 Subject: [PATCH 03/13] Limit the length of sqlite3_mprintf() output to 2^30 bytes, even if SQLITE_MAX_LENGTH is set larger at compile-time. FossilOrigin-Name: d655a665acfae676d30e90e3731f483bee6acc63 --- manifest | 12 ++++++------ manifest.uuid | 2 +- src/printf.c | 5 +++++ 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/manifest b/manifest index 39fe0a1326..6b8109daa6 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\sharmless\scompiler\swarning. -D 2016-01-04T03:48:46.399 +C Limit\sthe\slength\sof\ssqlite3_mprintf()\soutput\sto\s2^30\sbytes,\seven\sif\nSQLITE_MAX_LENGTH\sis\sset\slarger\sat\scompile-time. +D 2016-01-04T04:28:11.861 F Makefile.in 28bcd6149e050dff35d4dcfd97e890cd387a499d F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 5fff077fcc46de7714ed6eebb6159a4c00eab751 @@ -329,7 +329,7 @@ F src/pcache1.c 72f644dc9e1468c72922eff5904048427b817051 F src/pragma.c f3e7147299ca05ef4304a36f1fd6e002729c72c6 F src/pragma.h 64c78a648751b9f4f297276c4eb7507b14b4628c F src/prepare.c 82e5db1013846a819f198336fed72c44c974e7b1 -F src/printf.c af589a27b7d40f6f4f704e9eea99f02f18ad6d32 +F src/printf.c 79265c0b36bca9b8582592a4f3fa73a1cc1cfa2f F src/random.c ba2679f80ec82c4190062d756f22d0c358180696 F src/resolve.c a83b41104e6ff69855d03cd0aaa09e93927ec39f F src/rowset.c eccf6af6d620aaa4579bd3b72c1b6395d9e9fa1e @@ -1406,7 +1406,7 @@ F tool/vdbe_profile.tcl 246d0da094856d72d2c12efec03250d71639d19f F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P f300c35efa5f7383b2a74b1c9466c243c17815e4 -R a3643a709add89c526ff9d85846c177f +P 4b404a99aa9bfa6cfe8998f5dc1f84f8be20b840 +R 3d16cb95a338f71bf305a9aee47b6af1 U drh -Z 723a886ae851aa4686263a1002cc64d8 +Z b5d1ace2d67c86c8eec357e62ba7f839 diff --git a/manifest.uuid b/manifest.uuid index 44b7d4d4a2..7a3a9597af 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -4b404a99aa9bfa6cfe8998f5dc1f84f8be20b840 \ No newline at end of file +d655a665acfae676d30e90e3731f483bee6acc63 \ No newline at end of file diff --git a/src/printf.c b/src/printf.c index 969950c154..fed9acd736 100644 --- a/src/printf.c +++ b/src/printf.c @@ -965,7 +965,12 @@ char *sqlite3_vmprintf(const char *zFormat, va_list ap){ #ifndef SQLITE_OMIT_AUTOINIT if( sqlite3_initialize() ) return 0; #endif +#if SQLITE_MAX_LENGTH<0x40000000 sqlite3StrAccumInit(&acc, 0, zBase, sizeof(zBase), SQLITE_MAX_LENGTH); +#else + sqlite3StrAccumInit(&acc, 0, zBase, sizeof(zBase), 0x3fffffff); +#endif + sqlite3VXPrintf(&acc, 0, zFormat, ap); z = sqlite3StrAccumFinish(&acc); return z; From 5a60c7d1428ab0540b888228dc86f566519cbe67 Mon Sep 17 00:00:00 2001 From: drh Date: Mon, 4 Jan 2016 04:41:13 +0000 Subject: [PATCH 04/13] Adjust the vtabH.test module to ignore files in the root directory of Windows machines that contain the "$" character. FossilOrigin-Name: 73e3355004b8b7ce2e1bb937725f429795528a4f --- manifest | 12 ++++++------ manifest.uuid | 2 +- test/vtabH.test | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/manifest b/manifest index 6b8109daa6..d08d409a94 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Limit\sthe\slength\sof\ssqlite3_mprintf()\soutput\sto\s2^30\sbytes,\seven\sif\nSQLITE_MAX_LENGTH\sis\sset\slarger\sat\scompile-time. -D 2016-01-04T04:28:11.861 +C Adjust\sthe\svtabH.test\smodule\sto\signore\sfiles\sin\sthe\sroot\sdirectory\sof\sWindows\nmachines\sthat\scontain\sthe\s"$"\scharacter. +D 2016-01-04T04:41:13.895 F Makefile.in 28bcd6149e050dff35d4dcfd97e890cd387a499d F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 5fff077fcc46de7714ed6eebb6159a4c00eab751 @@ -1274,7 +1274,7 @@ F test/vtabC.test 4528f459a13136f982e75614d120aef165f17292 F test/vtabD.test 05b3f1d77117271671089e48719524b676842e96 F test/vtabE.test d5024aa42754962f6bb0afd261681686488e7afe F test/vtabF.test fd5ad376f5a34fe0891df1f3cddb4fe7c3eb077e -F test/vtabH.test f77296bbf55675b72817cc10fbbcb236ac986abf +F test/vtabH.test 0def52cbcf8d68793d982329a72d70cef8308e35 F test/vtabI.test 751b07636700dbdea328e4265b6077ccd6811a3f F test/vtab_alter.test 9e374885248f69e251bdaacf480b04a197f125e5 F test/vtab_err.test 0d4d8eb4def1d053ac7c5050df3024fd47a3fbd8 @@ -1406,7 +1406,7 @@ F tool/vdbe_profile.tcl 246d0da094856d72d2c12efec03250d71639d19f F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 4b404a99aa9bfa6cfe8998f5dc1f84f8be20b840 -R 3d16cb95a338f71bf305a9aee47b6af1 +P d655a665acfae676d30e90e3731f483bee6acc63 +R 0d20e16c42f612598f302d493261df54 U drh -Z b5d1ace2d67c86c8eec357e62ba7f839 +Z 4891b25ab1f0ba8193051c36d1d029ea diff --git a/manifest.uuid b/manifest.uuid index 7a3a9597af..7e2cd0ba52 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -d655a665acfae676d30e90e3731f483bee6acc63 \ No newline at end of file +73e3355004b8b7ce2e1bb937725f429795528a4f \ No newline at end of file diff --git a/test/vtabH.test b/test/vtabH.test index 7973819bd1..606c8f1da1 100644 --- a/test/vtabH.test +++ b/test/vtabH.test @@ -147,13 +147,13 @@ if {1} { set res [list] foreach p [lrange [list_root_files] 0 4] { if {$::tcl_platform(platform) eq "windows"} { - lappend res $p + if {![regexp {\$} $p]} {lappend res $p} } else { lappend res "/$p" } } do_execsql_test 3.1 { - SELECT path FROM fstree LIMIT 5; + SELECT path FROM fstree WHERE path NOT GLOB '*$*' LIMIT 5; } $res # Read all entries in the current directory. From cc54f43442076f01ccda13db4fc576cd468817f6 Mon Sep 17 00:00:00 2001 From: drh Date: Mon, 4 Jan 2016 04:44:31 +0000 Subject: [PATCH 05/13] Improved comment on the vtabH-3.1 test. FossilOrigin-Name: 22abe08038cc7b66cbc25e733246d210197c9215 --- manifest | 12 ++++++------ manifest.uuid | 2 +- test/vtabH.test | 4 +++- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/manifest b/manifest index d08d409a94..7763520f01 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Adjust\sthe\svtabH.test\smodule\sto\signore\sfiles\sin\sthe\sroot\sdirectory\sof\sWindows\nmachines\sthat\scontain\sthe\s"$"\scharacter. -D 2016-01-04T04:41:13.895 +C Improved\scomment\son\sthe\svtabH-3.1\stest. +D 2016-01-04T04:44:31.090 F Makefile.in 28bcd6149e050dff35d4dcfd97e890cd387a499d F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 5fff077fcc46de7714ed6eebb6159a4c00eab751 @@ -1274,7 +1274,7 @@ F test/vtabC.test 4528f459a13136f982e75614d120aef165f17292 F test/vtabD.test 05b3f1d77117271671089e48719524b676842e96 F test/vtabE.test d5024aa42754962f6bb0afd261681686488e7afe F test/vtabF.test fd5ad376f5a34fe0891df1f3cddb4fe7c3eb077e -F test/vtabH.test 0def52cbcf8d68793d982329a72d70cef8308e35 +F test/vtabH.test 7a21f18546cb9ab38df009e718300c40b552bb2b F test/vtabI.test 751b07636700dbdea328e4265b6077ccd6811a3f F test/vtab_alter.test 9e374885248f69e251bdaacf480b04a197f125e5 F test/vtab_err.test 0d4d8eb4def1d053ac7c5050df3024fd47a3fbd8 @@ -1406,7 +1406,7 @@ F tool/vdbe_profile.tcl 246d0da094856d72d2c12efec03250d71639d19f F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P d655a665acfae676d30e90e3731f483bee6acc63 -R 0d20e16c42f612598f302d493261df54 +P 73e3355004b8b7ce2e1bb937725f429795528a4f +R add896a0a928f0a416eb15bec81a6801 U drh -Z 4891b25ab1f0ba8193051c36d1d029ea +Z 9b39ca76b9261d7edc0d476f6827134f diff --git a/manifest.uuid b/manifest.uuid index 7e2cd0ba52..3bbab58916 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -73e3355004b8b7ce2e1bb937725f429795528a4f \ No newline at end of file +22abe08038cc7b66cbc25e733246d210197c9215 \ No newline at end of file diff --git a/test/vtabH.test b/test/vtabH.test index 606c8f1da1..c15ab87de8 100644 --- a/test/vtabH.test +++ b/test/vtabH.test @@ -142,7 +142,9 @@ if {1} { } } - # Read the first 5 entries from the root directory. + # Read the first 5 entries from the root directory. Except, ignore + # files that contain the "$" character in their names as these are + # special files on some Windows platforms. # set res [list] foreach p [lrange [list_root_files] 0 4] { From fa385edff34587e544690236dc9bf47114c3d333 Mon Sep 17 00:00:00 2001 From: drh Date: Mon, 4 Jan 2016 12:07:27 +0000 Subject: [PATCH 06/13] A new approach to very large sqlite3_mprintf() strings: Back out the [d655a665] check-in and instead make the size fields in StrAccum unsigned. Strings generated by sqlite3_mprintf() can now be as large as 2^31-1 bytes. FossilOrigin-Name: 7adb789f45698e5569b840d23f3f9488db3ed109 --- manifest | 16 ++++++++-------- manifest.uuid | 2 +- src/printf.c | 5 ----- src/sqliteInt.h | 6 +++--- test/analyzeF.test | 5 +---- 5 files changed, 13 insertions(+), 21 deletions(-) diff --git a/manifest b/manifest index 7763520f01..5d4a5d2f79 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Improved\scomment\son\sthe\svtabH-3.1\stest. -D 2016-01-04T04:44:31.090 +C A\snew\sapproach\sto\svery\slarge\ssqlite3_mprintf()\sstrings:\s\sBack\sout\sthe\n[d655a665]\scheck-in\sand\sinstead\smake\sthe\ssize\sfields\sin\sStrAccum\sunsigned.\nStrings\sgenerated\sby\ssqlite3_mprintf()\scan\snow\sbe\sas\slarge\sas\s2^31-1\sbytes. +D 2016-01-04T12:07:27.503 F Makefile.in 28bcd6149e050dff35d4dcfd97e890cd387a499d F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 5fff077fcc46de7714ed6eebb6159a4c00eab751 @@ -329,7 +329,7 @@ F src/pcache1.c 72f644dc9e1468c72922eff5904048427b817051 F src/pragma.c f3e7147299ca05ef4304a36f1fd6e002729c72c6 F src/pragma.h 64c78a648751b9f4f297276c4eb7507b14b4628c F src/prepare.c 82e5db1013846a819f198336fed72c44c974e7b1 -F src/printf.c 79265c0b36bca9b8582592a4f3fa73a1cc1cfa2f +F src/printf.c af589a27b7d40f6f4f704e9eea99f02f18ad6d32 F src/random.c ba2679f80ec82c4190062d756f22d0c358180696 F src/resolve.c a83b41104e6ff69855d03cd0aaa09e93927ec39f F src/rowset.c eccf6af6d620aaa4579bd3b72c1b6395d9e9fa1e @@ -338,7 +338,7 @@ F src/shell.c ed71dc7679e6f087a3f1ea3f9dae4b0fae7209c3 F src/sqlite.h.in 7d87d71b9a4689c51fa092f48f16590ff71558e3 F src/sqlite3.rc 992c9f5fb8285ae285d6be28240a7e8d3a7f2bad F src/sqlite3ext.h dfbe62ffd95b99afe2140d8c35b180d11924072d -F src/sqliteInt.h 30f7e8957ed7d244be027be72ded385154c635df +F src/sqliteInt.h f97614d43833bae0ed6c51ac8e550f0099a1d0ba F src/sqliteLimit.h 216557999cb45f2e3578ed53ebefe228d779cb46 F src/status.c 70912d7be68e9e2dbc4010c93d344af61d4c59ba F src/table.c 51b46b2a62d1b3a959633d593b89bab5e2c9155e @@ -441,7 +441,7 @@ F test/analyzeB.test 8bf35ee0a548aea831bf56762cb8e7fdb1db083d F test/analyzeC.test 555a6cc388b9818b6eda6df816f01ce0a75d3a93 F test/analyzeD.test 08f9d0bee4e118a66fff3a32d02dbe0ee0a2b594 F test/analyzeE.test 8684e8ac5722fb97c251887ad97e5d496a98af1d -F test/analyzeF.test 7ccd7a04f7d3061bde1a8a4dacc4792edccf6bf2 +F test/analyzeF.test 5d1fe1024ba2dfea3c18bede8c1ccef8aba1ab34 F test/analyzer1.test 498e2ff4b62740c2751c3a2f8b744fe26689fae9 F test/async.test 1d0e056ba1bb9729283a0f22718d3a25e82c277b F test/async2.test c0a9bd20816d7d6a2ceca7b8c03d3d69c28ffb8b @@ -1406,7 +1406,7 @@ F tool/vdbe_profile.tcl 246d0da094856d72d2c12efec03250d71639d19f F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 73e3355004b8b7ce2e1bb937725f429795528a4f -R add896a0a928f0a416eb15bec81a6801 +P 22abe08038cc7b66cbc25e733246d210197c9215 +R 50b92b9e9c9cae33b4950afbfcff914c U drh -Z 9b39ca76b9261d7edc0d476f6827134f +Z 208fc2f95f59628c3ac39711f08181ab diff --git a/manifest.uuid b/manifest.uuid index 3bbab58916..982d15ab22 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -22abe08038cc7b66cbc25e733246d210197c9215 \ No newline at end of file +7adb789f45698e5569b840d23f3f9488db3ed109 \ No newline at end of file diff --git a/src/printf.c b/src/printf.c index fed9acd736..969950c154 100644 --- a/src/printf.c +++ b/src/printf.c @@ -965,12 +965,7 @@ char *sqlite3_vmprintf(const char *zFormat, va_list ap){ #ifndef SQLITE_OMIT_AUTOINIT if( sqlite3_initialize() ) return 0; #endif -#if SQLITE_MAX_LENGTH<0x40000000 sqlite3StrAccumInit(&acc, 0, zBase, sizeof(zBase), SQLITE_MAX_LENGTH); -#else - sqlite3StrAccumInit(&acc, 0, zBase, sizeof(zBase), 0x3fffffff); -#endif - sqlite3VXPrintf(&acc, 0, zFormat, ap); z = sqlite3StrAccumFinish(&acc); return z; diff --git a/src/sqliteInt.h b/src/sqliteInt.h index 53f0709645..c01bbc7869 100644 --- a/src/sqliteInt.h +++ b/src/sqliteInt.h @@ -2964,9 +2964,9 @@ struct StrAccum { sqlite3 *db; /* Optional database for lookaside. Can be NULL */ char *zBase; /* A base allocation. Not from malloc. */ char *zText; /* The string collected so far */ - int nChar; /* Length of the string so far */ - int nAlloc; /* Amount of space allocated in zText */ - int mxAlloc; /* Maximum allowed allocation. 0 for no malloc usage */ + u32 nChar; /* Length of the string so far */ + u32 nAlloc; /* Amount of space allocated in zText */ + u32 mxAlloc; /* Maximum allowed allocation. 0 for no malloc usage */ u8 accError; /* STRACCUM_NOMEM or STRACCUM_TOOBIG */ u8 bMalloced; /* zText points to allocated space */ }; diff --git a/test/analyzeF.test b/test/analyzeF.test index 670d178a81..3cbc5f47be 100644 --- a/test/analyzeF.test +++ b/test/analyzeF.test @@ -106,7 +106,7 @@ do_catchsql_test 4.1 { } {1 {error one}} do_catchsql_test 4.2 { - SELECT * FROM t1 WHERE x = zeroblob(2000000000) AND y = 4; + SELECT * FROM t1 WHERE x = zeroblob(2200000000) AND y = 4; } {1 {string or blob too big}} sqlite3_limit db SQLITE_LIMIT_LENGTH 1000000 @@ -122,6 +122,3 @@ do_catchsql_test 4.4 { finish_test - - - From 4b4da16344ccb0235df07a5e686d5baf4a888eff Mon Sep 17 00:00:00 2001 From: drh Date: Mon, 4 Jan 2016 13:06:53 +0000 Subject: [PATCH 07/13] Fix the conflict2.test module which was broken by check-in [e30062e9f6c]. FossilOrigin-Name: b779ca8a7580e2a0bb1176316c4540867b635229 --- manifest | 12 ++++++------ manifest.uuid | 2 +- test/conflict2.test | 8 ++++---- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/manifest b/manifest index 5d4a5d2f79..1628852800 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C A\snew\sapproach\sto\svery\slarge\ssqlite3_mprintf()\sstrings:\s\sBack\sout\sthe\n[d655a665]\scheck-in\sand\sinstead\smake\sthe\ssize\sfields\sin\sStrAccum\sunsigned.\nStrings\sgenerated\sby\ssqlite3_mprintf()\scan\snow\sbe\sas\slarge\sas\s2^31-1\sbytes. -D 2016-01-04T12:07:27.503 +C Fix\sthe\sconflict2.test\smodule\swhich\swas\sbroken\sby\scheck-in\s[e30062e9f6c]. +D 2016-01-04T13:06:53.893 F Makefile.in 28bcd6149e050dff35d4dcfd97e890cd387a499d F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 5fff077fcc46de7714ed6eebb6159a4c00eab751 @@ -524,7 +524,7 @@ F test/collateA.test b8218ab90d1fa5c59dcf156efabb1b2599c580d6 F test/colmeta.test 2c765ea61ee37bc43bbe6d6047f89004e6508eb1 F test/colname.test 08948a4809d22817e0e5de89c7c0a8bd90cb551b F test/conflict.test 841bcf7cabbfca39c577eb8411ea8601843b46a8 -F test/conflict2.test 0f0e810aef6739650d7f442164975e932cf18afc +F test/conflict2.test a82dd3b9b41fceb5dd6ff0707c5c7ffba208d538 F test/conflict3.test dec0634c0f31dec9a4b01c63063e939f0cd21b6b F test/contrib01.test 2a1cbc0f2f48955d7d073f725765da6fbceda6b4 F test/corrupt.test 141c39ea650c1365e85a49e402fa05cb9617fb97 @@ -1406,7 +1406,7 @@ F tool/vdbe_profile.tcl 246d0da094856d72d2c12efec03250d71639d19f F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 22abe08038cc7b66cbc25e733246d210197c9215 -R 50b92b9e9c9cae33b4950afbfcff914c +P 7adb789f45698e5569b840d23f3f9488db3ed109 +R 16019d64036d1aa36ba8b50ba392c4e8 U drh -Z 208fc2f95f59628c3ac39711f08181ab +Z 8bde812e449e210a56672af13ac69445 diff --git a/manifest.uuid b/manifest.uuid index 982d15ab22..fa6d00eef8 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -7adb789f45698e5569b840d23f3f9488db3ed109 \ No newline at end of file +b779ca8a7580e2a0bb1176316c4540867b635229 \ No newline at end of file diff --git a/test/conflict2.test b/test/conflict2.test index e8880635f1..6496913849 100644 --- a/test/conflict2.test +++ b/test/conflict2.test @@ -289,11 +289,11 @@ do_test conflict2-6.0 { # foreach {i conf1 cmd t0 t1 t2 t3 t4} { 1 {} UPDATE 1 {6 7 8 9} 1 0 1 - 2 REPLACE UPDATE 0 {7 6 9} 1 1 0 - 3 IGNORE UPDATE 0 {6 7 3 9} 1 1 0 - 4 FAIL UPDATE 1 {6 7 3 4} 1 1 0 + 2 REPLACE UPDATE 0 {7 6 9} 1 0 1 + 3 IGNORE UPDATE 0 {6 7 3 9} 1 0 1 + 4 FAIL UPDATE 1 {6 7 3 4} 1 0 1 5 ABORT UPDATE 1 {1 2 3 4} 1 0 1 - 6 ROLLBACK UPDATE 1 {1 2 3 4} 0 1 0 + 6 ROLLBACK UPDATE 1 {1 2 3 4} 0 0 1 7 REPLACE {UPDATE OR IGNORE} 0 {6 7 3 9} 1 0 0 8 IGNORE {UPDATE OR REPLACE} 0 {7 6 9} 1 0 1 9 FAIL {UPDATE OR IGNORE} 0 {6 7 3 9} 1 0 0 From 11e3e538d672188c95430b7277b1e238533c5ee1 Mon Sep 17 00:00:00 2001 From: drh Date: Mon, 4 Jan 2016 23:43:47 +0000 Subject: [PATCH 08/13] Fix a corner case in the opcode-array reuse logic where the number of bytes of reusable space might be computed to be a negative number, due to unusual system alignment restrictions and rounding error. FossilOrigin-Name: 1aa530144643582658c8c1dd66548662f950efe3 --- manifest | 12 ++++++------ manifest.uuid | 2 +- src/vdbeaux.c | 9 ++++++--- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/manifest b/manifest index 1628852800..ac0852705f 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sthe\sconflict2.test\smodule\swhich\swas\sbroken\sby\scheck-in\s[e30062e9f6c]. -D 2016-01-04T13:06:53.893 +C Fix\sa\scorner\scase\sin\sthe\sopcode-array\sreuse\slogic\swhere\sthe\snumber\sof\sbytes\sof\nreusable\sspace\smight\sbe\scomputed\sto\sbe\sa\snegative\snumber,\sdue\sto\sunusual\nsystem\salignment\srestrictions\sand\srounding\serror. +D 2016-01-04T23:43:47.141 F Makefile.in 28bcd6149e050dff35d4dcfd97e890cd387a499d F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 5fff077fcc46de7714ed6eebb6159a4c00eab751 @@ -402,7 +402,7 @@ F src/vdbe.c 6ac8e5d808d48afc369316e147c191102f0584c1 F src/vdbe.h efb7a8c1459e31f3ea4377824c6a7e4cb5068637 F src/vdbeInt.h 75c2e82ee3357e9210c06474f8d9bdf12c81105d F src/vdbeapi.c 020681b943e77766b32ae1cddf86d7831b7374ca -F src/vdbeaux.c 66b546a1da82dfa6e67985ae0442ba5fd9efe0ff +F src/vdbeaux.c 141ee231ad190240d0d1ee133c9ea28eecd55824 F src/vdbeblob.c fdc4a81605ae7a35ae94a55bd768b66d6be16f15 F src/vdbemem.c fdd1578e47bea61390d472de53c565781d81e045 F src/vdbesort.c a7ec02da4494c59dfd071126dd3726be5a11459d @@ -1406,7 +1406,7 @@ F tool/vdbe_profile.tcl 246d0da094856d72d2c12efec03250d71639d19f F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 7adb789f45698e5569b840d23f3f9488db3ed109 -R 16019d64036d1aa36ba8b50ba392c4e8 +P b779ca8a7580e2a0bb1176316c4540867b635229 +R 3b3e1e83b8e4867e299c87ba108024a8 U drh -Z 8bde812e449e210a56672af13ac69445 +Z b5772777614dc8e4c77919f902a0659c diff --git a/manifest.uuid b/manifest.uuid index fa6d00eef8..bc138403e1 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -b779ca8a7580e2a0bb1176316c4540867b635229 \ No newline at end of file +1aa530144643582658c8c1dd66548662f950efe3 \ No newline at end of file diff --git a/src/vdbeaux.c b/src/vdbeaux.c index 7d547e5830..de7f482126 100644 --- a/src/vdbeaux.c +++ b/src/vdbeaux.c @@ -1848,18 +1848,21 @@ void sqlite3VdbeMakeReady( */ nMem += nCursor; - /* Allocate space for memory registers, SQL variables, VDBE cursors and - ** an array to marshal SQL function arguments in. + /* zCsr will initially point to nFree bytes of unused space at the + ** end of the opcode array, p->aOp. The computation of nFree is + ** conservative - it might be smaller than the true number of free + ** bytes, but never larger. nFree might be negative. But the allocation + ** loop will still function correctly. */ zCsr = ((u8*)p->aOp) + ROUND8(sizeof(Op)*p->nOp); /* Available space */ nFree = pParse->szOpAlloc - ROUND8(sizeof(Op)*p->nOp); /* Size of zCsr */ + if( nFree>0 ) memset(zCsr, 0, nFree); resolveP2Values(p, &nArg); p->usesStmtJournal = (u8)(pParse->isMultiWrite && pParse->mayAbort); if( pParse->explain && nMem<10 ){ nMem = 10; } - memset(zCsr, 0, nFree); assert( EIGHT_BYTE_ALIGNMENT(&zCsr[nFree]) ); p->expired = 0; From 98486c046f1d245b5ffa1df8a850e349e4e25154 Mon Sep 17 00:00:00 2001 From: mistachkin Date: Tue, 5 Jan 2016 01:48:29 +0000 Subject: [PATCH 09/13] Permit the 'test_fs' test module to be compiled and used on MinGW. FossilOrigin-Name: ac27f38eef7a241d56124c263d9f8c91f372a77f --- manifest | 16 ++++++++-------- manifest.uuid | 2 +- src/test_fs.c | 13 +++++++++++-- test/vtabH.test | 28 ++++++---------------------- 4 files changed, 26 insertions(+), 33 deletions(-) diff --git a/manifest b/manifest index ac0852705f..40d0611359 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\scorner\scase\sin\sthe\sopcode-array\sreuse\slogic\swhere\sthe\snumber\sof\sbytes\sof\nreusable\sspace\smight\sbe\scomputed\sto\sbe\sa\snegative\snumber,\sdue\sto\sunusual\nsystem\salignment\srestrictions\sand\srounding\serror. -D 2016-01-04T23:43:47.141 +C Permit\sthe\s'test_fs'\stest\smodule\sto\sbe\scompiled\sand\sused\son\sMinGW. +D 2016-01-05T01:48:29.005 F Makefile.in 28bcd6149e050dff35d4dcfd97e890cd387a499d F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 5fff077fcc46de7714ed6eebb6159a4c00eab751 @@ -360,7 +360,7 @@ F src/test_btree.c 2e9978eca99a9a4bfa8cae949efb00886860a64f F src/test_config.c 0dee90328e3dedf8ba002ee94b6a7e7ea7726fe4 F src/test_demovfs.c 0de72c2c89551629f58486fde5734b7d90758852 F src/test_devsym.c e7498904e72ba7491d142d5c83b476c4e76993bc -F src/test_fs.c 993c7eab65bed6add4bb48cca29775e963f710cf +F src/test_fs.c a61f54247fdb843761d709879c3bcd1989b2050c F src/test_func.c 0d9c25956152adefee8881c6fadc8354793764d0 F src/test_hexio.c abfdecb6fa58c354623978efceb088ca18e379cd F src/test_init.c 66b33120ffe9cd853b5a905ec850d51151337b32 @@ -1274,7 +1274,7 @@ F test/vtabC.test 4528f459a13136f982e75614d120aef165f17292 F test/vtabD.test 05b3f1d77117271671089e48719524b676842e96 F test/vtabE.test d5024aa42754962f6bb0afd261681686488e7afe F test/vtabF.test fd5ad376f5a34fe0891df1f3cddb4fe7c3eb077e -F test/vtabH.test 7a21f18546cb9ab38df009e718300c40b552bb2b +F test/vtabH.test 492ba03dcb7bb8fedcc53f258c410d04013adbc9 F test/vtabI.test 751b07636700dbdea328e4265b6077ccd6811a3f F test/vtab_alter.test 9e374885248f69e251bdaacf480b04a197f125e5 F test/vtab_err.test 0d4d8eb4def1d053ac7c5050df3024fd47a3fbd8 @@ -1406,7 +1406,7 @@ F tool/vdbe_profile.tcl 246d0da094856d72d2c12efec03250d71639d19f F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P b779ca8a7580e2a0bb1176316c4540867b635229 -R 3b3e1e83b8e4867e299c87ba108024a8 -U drh -Z b5772777614dc8e4c77919f902a0659c +P 1aa530144643582658c8c1dd66548662f950efe3 +R 6490ec858048a3d7899751e10a44fa21 +U mistachkin +Z b205e33bbbedd23793ff52ce1287fb1d diff --git a/manifest.uuid b/manifest.uuid index bc138403e1..515a791f4f 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -1aa530144643582658c8c1dd66548662f950efe3 \ No newline at end of file +ac27f38eef7a241d56124c263d9f8c91f372a77f \ No newline at end of file diff --git a/src/test_fs.c b/src/test_fs.c index ab6bed8a95..45db0b53b8 100644 --- a/src/test_fs.c +++ b/src/test_fs.c @@ -70,7 +70,7 @@ #include #include -#if SQLITE_OS_UNIX +#if SQLITE_OS_UNIX || defined(__MINGW_H) # include # include # ifndef DIRENT @@ -79,7 +79,9 @@ #endif #if SQLITE_OS_WIN # include -# include "test_windirent.h" +# if !defined(__MINGW_H) +# include "test_windirent.h" +# endif # ifndef S_ISREG # define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG) # endif @@ -231,7 +233,14 @@ static int fsdirNext(sqlite3_vtab_cursor *cur){ if( pCsr->pDir ){ struct DIRENT *pRes = 0; +#if defined(__MINGW_H) + pRes = readdir(pCsr->pDir); + if( pRes!=0 ){ + memcpy(&pCsr->entry, pRes, sizeof(struct DIRENT)); + } +#else readdir_r(pCsr->pDir, &pCsr->entry, &pRes); +#endif if( pRes==0 ){ closedir(pCsr->pDir); pCsr->pDir = 0; diff --git a/test/vtabH.test b/test/vtabH.test index c15ab87de8..7bd542e05b 100644 --- a/test/vtabH.test +++ b/test/vtabH.test @@ -32,12 +32,12 @@ do_execsql_test 1.0 { foreach {tn sql expect} { 1 "SELECT * FROM e6 WHERE b LIKE 'abc'" { - xBestIndex {SELECT rowid, a, b FROM 't6' WHERE b like ?} + xBestIndex {SELECT rowid, a, b FROM 't6' WHERE b like ?} xFilter {SELECT rowid, a, b FROM 't6' WHERE b like ?} abc } 2 "SELECT * FROM e6 WHERE b GLOB 'abc'" { - xBestIndex {SELECT rowid, a, b FROM 't6' WHERE b glob ?} + xBestIndex {SELECT rowid, a, b FROM 't6' WHERE b glob ?} xFilter {SELECT rowid, a, b FROM 't6' WHERE b glob ?} abc } } { @@ -115,7 +115,7 @@ if {1} { SELECT name FROM fsdir WHERE dir = '.' AND name = 'test.db'; SELECT name FROM fsdir WHERE dir = '.' AND name = '.' } {test.db .} - + proc list_root_files {} { if {$::tcl_platform(platform) eq "windows"} { set res [list] @@ -142,22 +142,6 @@ if {1} { } } - # Read the first 5 entries from the root directory. Except, ignore - # files that contain the "$" character in their names as these are - # special files on some Windows platforms. - # - set res [list] - foreach p [lrange [list_root_files] 0 4] { - if {$::tcl_platform(platform) eq "windows"} { - if {![regexp {\$} $p]} {lappend res $p} - } else { - lappend res "/$p" - } - } - do_execsql_test 3.1 { - SELECT path FROM fstree WHERE path NOT GLOB '*$*' LIMIT 5; - } $res - # Read all entries in the current directory. # proc contents {pattern} { @@ -175,7 +159,7 @@ if {1} { do_execsql_test 3.2 { SELECT path FROM fstree WHERE path GLOB $pwd ORDER BY 1 } [lsort $res] - + # Add some sub-directories and files to the current directory. # do_test 3.3 { @@ -183,7 +167,7 @@ if {1} { foreach {path sz} { subdir/x1.txt 143 subdir/x2.txt 153 - } { + } { set dir [file dirname $path] catch { file mkdir $dir } set fd [open $path w] @@ -191,7 +175,7 @@ if {1} { close $fd } } {} - + set pwd [pwd] do_execsql_test 3.5 { SELECT path, size FROM fstree WHERE path GLOB $pwd || '/subdir/*' ORDER BY 1 From 0816905cddf7f545301f14abf6554e30ead246cc Mon Sep 17 00:00:00 2001 From: drh Date: Tue, 5 Jan 2016 03:39:25 +0000 Subject: [PATCH 10/13] Another attempt to get reuse of excess opcode array space working correctly on all architectures and platforms. FossilOrigin-Name: 2f8583748abab1e15029d3a8693ba9a66c978c2b --- manifest | 14 +++++++------- manifest.uuid | 2 +- src/vdbeaux.c | 17 +++++++++++------ 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/manifest b/manifest index 40d0611359..c2c3d233a0 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Permit\sthe\s'test_fs'\stest\smodule\sto\sbe\scompiled\sand\sused\son\sMinGW. -D 2016-01-05T01:48:29.005 +C Another\sattempt\sto\sget\sreuse\sof\sexcess\sopcode\sarray\sspace\sworking\scorrectly\non\sall\sarchitectures\sand\splatforms. +D 2016-01-05T03:39:25.682 F Makefile.in 28bcd6149e050dff35d4dcfd97e890cd387a499d F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 5fff077fcc46de7714ed6eebb6159a4c00eab751 @@ -402,7 +402,7 @@ F src/vdbe.c 6ac8e5d808d48afc369316e147c191102f0584c1 F src/vdbe.h efb7a8c1459e31f3ea4377824c6a7e4cb5068637 F src/vdbeInt.h 75c2e82ee3357e9210c06474f8d9bdf12c81105d F src/vdbeapi.c 020681b943e77766b32ae1cddf86d7831b7374ca -F src/vdbeaux.c 141ee231ad190240d0d1ee133c9ea28eecd55824 +F src/vdbeaux.c 3308a07a6b0b64e22e83cbcc76773eaf330b056a F src/vdbeblob.c fdc4a81605ae7a35ae94a55bd768b66d6be16f15 F src/vdbemem.c fdd1578e47bea61390d472de53c565781d81e045 F src/vdbesort.c a7ec02da4494c59dfd071126dd3726be5a11459d @@ -1406,7 +1406,7 @@ F tool/vdbe_profile.tcl 246d0da094856d72d2c12efec03250d71639d19f F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 1aa530144643582658c8c1dd66548662f950efe3 -R 6490ec858048a3d7899751e10a44fa21 -U mistachkin -Z b205e33bbbedd23793ff52ce1287fb1d +P ac27f38eef7a241d56124c263d9f8c91f372a77f +R 60123ea1ef3684554ab03afc4196be5d +U drh +Z f77bc5a04736277ef260f43c3525df33 diff --git a/manifest.uuid b/manifest.uuid index 515a791f4f..ea174478b6 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -ac27f38eef7a241d56124c263d9f8c91f372a77f \ No newline at end of file +2f8583748abab1e15029d3a8693ba9a66c978c2b \ No newline at end of file diff --git a/src/vdbeaux.c b/src/vdbeaux.c index de7f482126..dbbb2a6ccb 100644 --- a/src/vdbeaux.c +++ b/src/vdbeaux.c @@ -1851,19 +1851,24 @@ void sqlite3VdbeMakeReady( /* zCsr will initially point to nFree bytes of unused space at the ** end of the opcode array, p->aOp. The computation of nFree is ** conservative - it might be smaller than the true number of free - ** bytes, but never larger. nFree might be negative. But the allocation - ** loop will still function correctly. + ** bytes, but never larger. nFree must be a multiple of 8 - it is + ** rounded down if is not. */ - zCsr = ((u8*)p->aOp) + ROUND8(sizeof(Op)*p->nOp); /* Available space */ - nFree = pParse->szOpAlloc - ROUND8(sizeof(Op)*p->nOp); /* Size of zCsr */ - if( nFree>0 ) memset(zCsr, 0, nFree); + n = ROUND8(sizeof(Op)*p->nOp); /* Bytes of opcode space used */ + zCsr = &((u8*)p->aOp)[n]; /* Unused opcode space */ + assert( EIGHT_BYTE_ALIGNMENT(zCsr) ); + nFree = ROUNDDOWN8(pParse->szOpAlloc - n); /* Bytes of unused space */ + assert( nFree>=0 ); + if( nFree>0 ){ + memset(zCsr, 0, nFree); + assert( EIGHT_BYTE_ALIGNMENT(&zCsr[nFree]) ); + } resolveP2Values(p, &nArg); p->usesStmtJournal = (u8)(pParse->isMultiWrite && pParse->mayAbort); if( pParse->explain && nMem<10 ){ nMem = 10; } - assert( EIGHT_BYTE_ALIGNMENT(&zCsr[nFree]) ); p->expired = 0; /* Memory for registers, parameters, cursor, etc, is allocated in two From 9d4c9824da4d23e1b40678f84a542ce5d93d0b97 Mon Sep 17 00:00:00 2001 From: drh Date: Tue, 5 Jan 2016 03:39:52 +0000 Subject: [PATCH 11/13] Always use -DSQLITE_ENABLE_MEMSYS5 for fuzzcheck so that the --limit-mem option will work. FossilOrigin-Name: a855697719e288c908ddb7950d32fd17ef546509 --- Makefile.in | 2 +- Makefile.msc | 2 +- main.mk | 2 +- manifest | 16 ++++++++-------- manifest.uuid | 2 +- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Makefile.in b/Makefile.in index d06b3ca49d..1fe49d6789 100644 --- a/Makefile.in +++ b/Makefile.in @@ -550,7 +550,7 @@ TESTOPTS = --verbose=file --output=test-out.txt # SHELL_OPT = -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS5 FUZZERSHELL_OPT = -DSQLITE_ENABLE_JSON1 -FUZZCHECK_OPT = -DSQLITE_ENABLE_JSON1 +FUZZCHECK_OPT = -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_MEMSYS5 # This is the default Makefile target. The objects listed here # are what get build when you type just "make" with no arguments. diff --git a/Makefile.msc b/Makefile.msc index aa2bd9a2f1..92561a8a32 100644 --- a/Makefile.msc +++ b/Makefile.msc @@ -1218,7 +1218,7 @@ FUZZDATA = \ # SHELL_COMPILE_OPTS = -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS5 FUZZERSHELL_COMPILE_OPTS = -DSQLITE_ENABLE_JSON1 -FUZZCHECK_COMPILE_OPTS = -DSQLITE_ENABLE_JSON1 +FUZZCHECK_COMPILE_OPTS = -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_MEMSYS5 # Standard options to testfixture # diff --git a/main.mk b/main.mk index 398bb9d149..e6ca1acbd6 100644 --- a/main.mk +++ b/main.mk @@ -460,7 +460,7 @@ TESTOPTS = --verbose=file --output=test-out.txt # SHELL_OPT = -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS5 FUZZERSHELL_OPT = -DSQLITE_ENABLE_JSON1 -FUZZCHECK_OPT = -DSQLITE_ENABLE_JSON1 +FUZZCHECK_OPT = -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_MEMSYS5 # This is the default Makefile target. The objects listed here # are what get build when you type just "make" with no arguments. diff --git a/manifest b/manifest index c2c3d233a0..2cff2948a6 100644 --- a/manifest +++ b/manifest @@ -1,8 +1,8 @@ -C Another\sattempt\sto\sget\sreuse\sof\sexcess\sopcode\sarray\sspace\sworking\scorrectly\non\sall\sarchitectures\sand\splatforms. -D 2016-01-05T03:39:25.682 -F Makefile.in 28bcd6149e050dff35d4dcfd97e890cd387a499d +C Always\suse\s-DSQLITE_ENABLE_MEMSYS5\sfor\sfuzzcheck\sso\sthat\sthe\s--limit-mem\noption\swill\swork. +D 2016-01-05T03:39:52.336 +F Makefile.in 7c8cc4c2f0179efc6fa9492141d1fb65f4807054 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 -F Makefile.msc 5fff077fcc46de7714ed6eebb6159a4c00eab751 +F Makefile.msc e45d8b9b56dfa3f2cd860b2c28bd9d304513b042 F README.md 8ecc12493ff9f820cdea6520a9016001cb2e59b7 F VERSION 8b9d3ac6f1962f94e06ba05462422a544f9c4e36 F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50 @@ -257,7 +257,7 @@ F ext/userauth/userauth.c 5fa3bdb492f481bbc1709fc83c91ebd13460c69e F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895 x F ltmain.sh 3ff0879076df340d2e23ae905484d8c15d5fdea8 F magic.txt 8273bf49ba3b0c8559cb2774495390c31fd61c60 -F main.mk ed77cbb97848c8dae1ab928245432f74b0580162 +F main.mk 20e46c09ac8732a74a9e2d55e8d90257d97eb844 F mkso.sh fd21c06b063bb16a5d25deea1752c2da6ac3ed83 F mptest/config01.test 3c6adcbc50b991866855f1977ff172eb6d901271 F mptest/config02.test 4415dfe36c48785f751e16e32c20b077c28ae504 @@ -1406,7 +1406,7 @@ F tool/vdbe_profile.tcl 246d0da094856d72d2c12efec03250d71639d19f F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P ac27f38eef7a241d56124c263d9f8c91f372a77f -R 60123ea1ef3684554ab03afc4196be5d +P 2f8583748abab1e15029d3a8693ba9a66c978c2b +R 658872c8eaad4f517adfb9642371bf29 U drh -Z f77bc5a04736277ef260f43c3525df33 +Z 68ad1defdc3264df127031e5fb4da721 diff --git a/manifest.uuid b/manifest.uuid index ea174478b6..a1640cccc8 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -2f8583748abab1e15029d3a8693ba9a66c978c2b \ No newline at end of file +a855697719e288c908ddb7950d32fd17ef546509 \ No newline at end of file From 02a59fab74794a70fe3e41744c646467067bcdb0 Mon Sep 17 00:00:00 2001 From: drh Date: Wed, 6 Jan 2016 11:01:07 +0000 Subject: [PATCH 12/13] Version 3.10.0 FossilOrigin-Name: fd0a50f0797d154fefff724624f00548b5320566 --- manifest | 11 +++++++---- manifest.uuid | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/manifest b/manifest index 2cff2948a6..84ab4c9e57 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Always\suse\s-DSQLITE_ENABLE_MEMSYS5\sfor\sfuzzcheck\sso\sthat\sthe\s--limit-mem\noption\swill\swork. -D 2016-01-05T03:39:52.336 +C Version\s3.10.0 +D 2016-01-06T11:01:07.739 F Makefile.in 7c8cc4c2f0179efc6fa9492141d1fb65f4807054 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc e45d8b9b56dfa3f2cd860b2c28bd9d304513b042 @@ -1406,7 +1406,10 @@ F tool/vdbe_profile.tcl 246d0da094856d72d2c12efec03250d71639d19f F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 2f8583748abab1e15029d3a8693ba9a66c978c2b +P a855697719e288c908ddb7950d32fd17ef546509 R 658872c8eaad4f517adfb9642371bf29 +T +bgcolor * #d0c0ff +T +sym-release * +T +sym-version-3.10.0 * U drh -Z 68ad1defdc3264df127031e5fb4da721 +Z 024a1b2bbd235a427c0ebcd39a99300a diff --git a/manifest.uuid b/manifest.uuid index a1640cccc8..01d9768cad 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -a855697719e288c908ddb7950d32fd17ef546509 \ No newline at end of file +fd0a50f0797d154fefff724624f00548b5320566 \ No newline at end of file From 8d52c3b7671b478c744b05dd3d8f0ccde8fb135f Mon Sep 17 00:00:00 2001 From: drh Date: Wed, 6 Jan 2016 15:54:53 +0000 Subject: [PATCH 13/13] Disable the --limit-mem option on fuzzcheck unless the SQLITE_ENABLE_MEMSYS5 or SQLITE_ENABLE_MEMSYS3 compile-time options are used. FossilOrigin-Name: 55a11fd627eaf046b3783622b2925399a50a65b4 --- manifest | 15 ++++++--------- manifest.uuid | 2 +- test/fuzzcheck.c | 5 +++++ 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/manifest b/manifest index 84ab4c9e57..d238fa51c2 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Version\s3.10.0 -D 2016-01-06T11:01:07.739 +C Disable\sthe\s--limit-mem\soption\son\sfuzzcheck\sunless\sthe\sSQLITE_ENABLE_MEMSYS5\sor\nSQLITE_ENABLE_MEMSYS3\scompile-time\soptions\sare\sused. +D 2016-01-06T15:54:53.139 F Makefile.in 7c8cc4c2f0179efc6fa9492141d1fb65f4807054 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc e45d8b9b56dfa3f2cd860b2c28bd9d304513b042 @@ -749,7 +749,7 @@ F test/fuzz2.test 76dc35b32b6d6f965259508508abce75a6c4d7e1 F test/fuzz3.test 53fabcd5f0f430f8b221282f6c12c4d0903c21eb F test/fuzz_common.tcl a87dfbb88c2a6b08a38e9a070dabd129e617b45b F test/fuzz_malloc.test 328f70aaca63adf29b4c6f06505ed0cf57ca7c26 -F test/fuzzcheck.c ccdcdc28579b2c9744696bca8726bdbd729eea11 +F test/fuzzcheck.c 3309d793165ca61a9996271cb799694839348f9a F test/fuzzdata1.db 7ee3227bad0e7ccdeb08a9e6822916777073c664 F test/fuzzdata2.db f03a420d3b822cc82e4f894ca957618fbe9c4973 F test/fuzzdata3.db c6586d3e3cef0fbc18108f9bb649aa77bfc38aba @@ -1406,10 +1406,7 @@ F tool/vdbe_profile.tcl 246d0da094856d72d2c12efec03250d71639d19f F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P a855697719e288c908ddb7950d32fd17ef546509 -R 658872c8eaad4f517adfb9642371bf29 -T +bgcolor * #d0c0ff -T +sym-release * -T +sym-version-3.10.0 * +P fd0a50f0797d154fefff724624f00548b5320566 +R 87a59d21671d8eb854da54e44c1cb06d U drh -Z 024a1b2bbd235a427c0ebcd39a99300a +Z 6b66decd394482c2ac340e90e8473c2f diff --git a/manifest.uuid b/manifest.uuid index 01d9768cad..6cc9954870 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -fd0a50f0797d154fefff724624f00548b5320566 \ No newline at end of file +55a11fd627eaf046b3783622b2925399a50a65b4 \ No newline at end of file diff --git a/test/fuzzcheck.c b/test/fuzzcheck.c index 6d9c745528..03776f1e70 100644 --- a/test/fuzzcheck.c +++ b/test/fuzzcheck.c @@ -865,8 +865,13 @@ int main(int argc, char **argv){ return 0; }else if( strcmp(z,"limit-mem")==0 ){ +#if !defined(SQLITE_ENABLE_MEMSYS3) && !defined(SQLITE_ENABLE_MEMSYS5) + fatalError("the %s option requires -DSQLITE_ENABLE_MEMSYS5 or _MEMSYS3", + argv[i]); +#else if( i>=argc-1 ) fatalError("missing arguments on %s", argv[i]); nMem = integerValue(argv[++i]); +#endif }else if( strcmp(z,"limit-vdbe")==0 ){ vdbeLimitFlag = 1;