]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Some pragmas can be reused without an automatic reprepare. reusable-pragma
authordrh <drh@noemail.net>
Wed, 16 Mar 2016 20:44:45 +0000 (20:44 +0000)
committerdrh <drh@noemail.net>
Wed, 16 Mar 2016 20:44:45 +0000 (20:44 +0000)
FossilOrigin-Name: db1ce7e13e656fcd2766f1b1f225cbfefe8f73ad

manifest
manifest.uuid
src/pragma.c
src/vdbe.h
src/vdbeaux.c

index 71037fc13369fbb1fe89e2ee72b0d8ba894bdc24..2fb10eeedef7d483bb363c52f1e374b38938b057 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sa\scomment\son\sthe\sfreelist_count\sand\sdata_version\spragmas.
-D 2016-03-16T20:05:57.514
+C Some\spragmas\scan\sbe\sreused\swithout\san\sautomatic\sreprepare.
+D 2016-03-16T20:44:45.683
 F Makefile.in f53429fb2f313c099283659d0df6f20f932c861f
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc df0bf9ff7f8b3f4dd9fb4cc43f92fe58f6ec5c66
@@ -343,7 +343,7 @@ F src/parse.y 5ea8c81c5c41b27887f41b4a7e1c58470d7d3821
 F src/pcache.c 647bb53a86b7bbcf55ad88089b3ea5a9170b90df
 F src/pcache.h 4d0ccaad264d360981ec5e6a2b596d6e85242545
 F src/pcache1.c 72f644dc9e1468c72922eff5904048427b817051
-F src/pragma.c fb8e3e73431a39dc47727ef74aad94a86cfb1d36
+F src/pragma.c f0670909e915179fec47e17f72f14660995b8022
 F src/pragma.h 64c78a648751b9f4f297276c4eb7507b14b4628c
 F src/prepare.c 22df6171aec1d86904ed2ad30c2348a5748aa04e
 F src/printf.c 63e6fb12bbe702dd664dc3703776c090383a5a26
@@ -417,10 +417,10 @@ F src/utf.c 699001c79f28e48e9bcdf8a463da029ea660540c
 F src/util.c 34ef7be420f82415ec48131404995ddb6ee7502f
 F src/vacuum.c feb1eabb20987983d9350cad98299b21fa811f52
 F src/vdbe.c 8cf45bb8da77d39f55d108e759d15a57acd0255c
-F src/vdbe.h c743791f723049db94f009e3e30958952bc2d512
+F src/vdbe.h 6f44193e7be52fd5f7c308175a936555b1e6b101
 F src/vdbeInt.h f88d3115e9bde33b01d81f0dd26d8dd51f995991
 F src/vdbeapi.c 95b1f8e527240a18a9aea41a655b013bf07a7009
-F src/vdbeaux.c 2c15cf88de4df97428318c8cfac0dea873dae451
+F src/vdbeaux.c a930f913d40e4ca6f6caaef6a7b5906a369fa2b1
 F src/vdbeblob.c 3b570b730109e8f653d9d2081649f6e7015113db
 F src/vdbemem.c 9b0cb32cc267ef026515f15a3594d5ff91fe4dfc
 F src/vdbesort.c 307460bfa4de4d1c3901fcd42089159131e34062
@@ -1456,7 +1456,10 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P d9b5ff7aba3a8f6ca4505eac308fa9d510254c3e
-R fafe07c0411ab81f336ee3834565f5dd
+P 10a3e2a01db9f80452a2a3369fd25b6fd9798274
+R 2716c51dfa2bfe8ed5e18127e51ae3c8
+T *branch * reusable-pragma
+T *sym-reusable-pragma *
+T -sym-trunk *
 U drh
-Z 9641eb94b1becd7c7420d553fe575786
+Z 7789d1f13489cbc314e26c9b80a11a2d
index a6b92c6b67b6f40a197976072cc3798157430bb2..7ffbbd6257cba60a250cfa3edcdfb7e35cdd9354 100644 (file)
@@ -1 +1 @@
-10a3e2a01db9f80452a2a3369fd25b6fd9798274
\ No newline at end of file
+db1ce7e13e656fcd2766f1b1f225cbfefe8f73ad
\ No newline at end of file
index 4c4bc71ad17a2a18b3fbd5e3b2ac4a4aa0c3edfc..54858afbf152016a1a1b677fa4bc0c51ce69ccc3 100644 (file)
@@ -1764,6 +1764,7 @@ void sqlite3Pragma(
       aOp[1].p3 = iCookie;
       sqlite3VdbeSetNumCols(v, 1);
       sqlite3VdbeSetColName(v, 0, COLNAME_NAME, zLeft, SQLITE_TRANSIENT);
+      sqlite3VdbeReusable(v);
     }
   }
   break;
@@ -1785,6 +1786,7 @@ void sqlite3Pragma(
       sqlite3VdbeLoadString(v, 1, zOpt);
       sqlite3VdbeAddOp2(v, OP_ResultRow, 1, 1);
     }
+    sqlite3VdbeReusable(v);
   }
   break;
 #endif /* SQLITE_OMIT_COMPILEOPTION_DIAGS */
index 4c02f5844db2502ebe6021dda950963e41f65b3e..ace28ffdb32f0187e338351e6ff5be767ff3bdc1 100644 (file)
@@ -202,6 +202,7 @@ void sqlite3VdbeUsesBtree(Vdbe*, int);
 VdbeOp *sqlite3VdbeGetOp(Vdbe*, int);
 int sqlite3VdbeMakeLabel(Vdbe*);
 void sqlite3VdbeRunOnlyOnce(Vdbe*);
+void sqlite3VdbeReusable(Vdbe*);
 void sqlite3VdbeDelete(Vdbe*);
 void sqlite3VdbeClearObject(sqlite3*,Vdbe*);
 void sqlite3VdbeMakeReady(Vdbe*,Parse*);
index 9c75d1e078e10f4244eed71318a5899b41bb4e3d..c71605cdd23515d48b064d433fdaee713aed6ed6 100644 (file)
@@ -391,6 +391,13 @@ void sqlite3VdbeRunOnlyOnce(Vdbe *p){
   p->runOnlyOnce = 1;
 }
 
+/*
+** Mark the VDBE as one that can only be run multiple times.
+*/
+void sqlite3VdbeReusable(Vdbe *p){
+  p->runOnlyOnce = 0;
+}
+
 #ifdef SQLITE_DEBUG /* sqlite3AssertMayAbort() logic */
 
 /*