Some pragmas can be reused without an automatic reprepare.

FossilOrigin-Name: db1ce7e13e656fcd2766f1b1f225cbfefe8f73ad
This commit is contained in:
drh 2016-03-16 20:44:45 +00:00
parent e459bd4986
commit f71a366407
5 changed files with 22 additions and 9 deletions

View File

@ -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

View File

@ -1 +1 @@
10a3e2a01db9f80452a2a3369fd25b6fd9798274
db1ce7e13e656fcd2766f1b1f225cbfefe8f73ad

View 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 */

View 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*);

View 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 */
/*