]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Avoid using a prepared statement for ".stats on" after it has been closed
authordrh <drh@noemail.net>
Thu, 7 Jun 2018 15:23:43 +0000 (15:23 +0000)
committerdrh <drh@noemail.net>
Thu, 7 Jun 2018 15:23:43 +0000 (15:23 +0000)
by the ".eqp full" logic.  Fix for ticket [7be932dfa60a8a6b3b26bcf76].

FossilOrigin-Name: bb87c054b1b76959e46258ac66b24027f468b390a4148ac67f208a1fbeda4060

manifest
manifest.uuid
src/shell.c.in
test/shell1.test

index 28afcd291a19af31d9a86f2c03d42306abfd8e13..ae7fdac9376cfb54fab9b77a7828fdfd45e00b3f 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Change\sa\scomma\sinto\sa\slogically\sequivalent\sbut\ssemantically\sclearer\ssemicolon.
-D 2018-06-06T23:31:26.651
+C Avoid\susing\sa\sprepared\sstatement\sfor\s".stats\son"\safter\sit\shas\sbeen\sclosed\nby\sthe\s".eqp\sfull"\slogic.\s\sFix\sfor\sticket\s[7be932dfa60a8a6b3b26bcf76].
+D 2018-06-07T15:23:43.571
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F Makefile.in bfc40f350586923e0419d2ea4b559c37ec10ee4b6e210e08c14401f8e340f0da
@@ -496,7 +496,7 @@ F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384
 F src/resolve.c 14602f46800ba182ea6a490e0f304127d29ac1f724bdadcc639e25d3223fcf6e
 F src/rowset.c 7b7e7e479212e65b723bf40128c7b36dc5afdfac
 F src/select.c 8d3176c5258cc83942815ebe75b4c1f8dcf62b5e0f4d37373a14ebf23c046f9f
-F src/shell.c.in 099edadacd82abbe38472e2995b140560bb9826cd4af611e6bab662cfba8fbda
+F src/shell.c.in 3151c40b2f23857d6af032d535bcc8c432926c11ceb14803213cbb45552b957a
 F src/sqlite.h.in 63b07f76731f2b1e55c48fdb9f0508dcc6fbe3971010b8612ffd847c3c56d9a1
 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
 F src/sqlite3ext.h 9887b27e69c01e79c2cbe74ef73bf01af5b5703d6a7f0a4371e386d7249cb1c7
@@ -1241,7 +1241,7 @@ F test/sharedA.test 49d87ec54ab640fbbc3786ee3c01de94aaa482a3a9f834ad3fe92770eb69
 F test/sharedB.test 16cc7178e20965d75278f410943109b77b2e645e
 F test/shared_err.test 32634e404a3317eeb94abc7a099c556a346fdb8fb3858dbe222a4cbb8926a939
 F test/sharedlock.test 5ede3c37439067c43b0198f580fd374ebf15d304
-F test/shell1.test 50154b0c4779df435b9e60ca60104b05f1cc217eab1aa383131359329e73d939
+F test/shell1.test 707c03fbd07ac506cfb6fa09da4ee22e2b50453c3db2f404694116eb990168f3
 F test/shell2.test e242a9912f44f4c23c3d1d802a83e934e84c853b
 F test/shell3.test ac8c2b744014c3e9a0e26bfd829ab65f00923dc1a91ffd044863e9423cc91494
 F test/shell4.test 89ad573879a745974ff2df20ff97c5d6ffffbd5d
@@ -1730,7 +1730,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 83a60ff056a63f18479030e9dfb10926fbb0d906d51f2cf88233098e15c75534
-R 5d16f56d3b58167452434c091fea89d0
+P 71f97f0f82b3abfb07feb78d64a182fc50ff396e85d6f5aac479dbf58ba4d00a
+R 88b349f4995942bbb83ef8407ed20dc3
 U drh
-Z 444c916353093e35122e938c5f56cdda
+Z 107f8808affc9ffe8154c296896c4113
index d349aaf719fa6271b07b27842761052a7a359e8a..c4bf873456af5c8361430382ef46c57cf997d546 100644 (file)
@@ -1 +1 @@
-71f97f0f82b3abfb07feb78d64a182fc50ff396e85d6f5aac479dbf58ba4d00a
\ No newline at end of file
+bb87c054b1b76959e46258ac66b24027f468b390a4148ac67f208a1fbeda4060
\ No newline at end of file
index adc7ce700283057f088d19cc134d2b0117258bcd..9032e44d691d8133a823e688a3abb12dbd62ccab 100644 (file)
@@ -2972,6 +2972,7 @@ static int shell_exec(
           /* Reprepare pStmt before reactiving trace modes */
           sqlite3_finalize(pStmt);
           sqlite3_prepare_v2(db, zSql, -1, &pStmt, 0);
+          if( pArg ) pArg->pStmt = pStmt;
         }
         restore_debug_trace_modes();
       }
index 922446f528e48e38bfaf0ced20c5543fc8a19213..1bd7fbea76140e66bb4011b33ec66da7bbfc9fea 100644 (file)
@@ -637,6 +637,19 @@ do_test shell1-3.23b.4 {
   catchcmd "test.db" ".stats OFF BAD"
 } {1 {Usage: .stats ?on|off?}}
 
+# Ticket 7be932dfa60a8a6b3b26bcf7623ec46e0a403ddb 2018-06-07
+# Adverse interaction between .stats and .eqp
+#
+do_test shell1-3.23b.5 {
+  catchcmd "test.db" [string map {"\n    " "\n"} {
+    CREATE TEMP TABLE t1(x);
+    INSERT INTO t1 VALUES(1),(2);
+    .stats on
+    .eqp full
+    SELECT * FROM t1;
+  }]
+} {/1\n2\n/}
+
 # .tables ?TABLE?        List names of tables
 #                          If TABLE specified, only list tables matching
 #                          LIKE pattern TABLE.