mirror of https://github.com/sqlite/sqlite
Make sure the sqlite3_trace() callback is invoked, even if the prepared
statement was marked "expired" before it ever entered sqlite3_step(). Ticket [11d5aa455e0d98f3c1e6a08]. FossilOrigin-Name: 0d4d3df4bc5e75ce1543b5539a1e9e279d2a062f
This commit is contained in:
parent
4b2590e44b
commit
2c7946a485
14
manifest
14
manifest
|
@ -1,5 +1,5 @@
|
|||
C Improvements\sto\soutput\sformatting\swith\sthe\s".trace"\scommand\sin\sthe\ncommand-line\sshell.
|
||||
D 2014-08-19T19:28:00.623
|
||||
C Make\ssure\sthe\ssqlite3_trace()\scallback\sis\sinvoked,\seven\sif\sthe\sprepared\nstatement\swas\smarked\s"expired"\sbefore\sit\sever\sentered\ssqlite3_step().\nTicket\s[11d5aa455e0d98f3c1e6a08].
|
||||
D 2014-08-19T20:27:40.455
|
||||
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
|
||||
F Makefile.in 5eb79e334a5de69c87740edd56af6527dd219308
|
||||
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
|
||||
|
@ -286,7 +286,7 @@ F src/vacuum.c 3728d74919d4fb1356f9e9a13e27773db60b7179
|
|||
F src/vdbe.c f7f4066e4d6e3858878d76ce9288ea603e12ddf6
|
||||
F src/vdbe.h c63fad052c9e7388d551e556e119c0bcf6bebdf8
|
||||
F src/vdbeInt.h f5513f2b5ac1e2c5128996c7ea23add256a301df
|
||||
F src/vdbeapi.c 24e40422382beb774daab11fe9fe9d37e8a04949
|
||||
F src/vdbeapi.c ce75e452dfd9c6ba4f8c6c76be6399c88bce3142
|
||||
F src/vdbeaux.c 25d62ef82cf1be2a1255eacac636fa0d943d8b3d
|
||||
F src/vdbeblob.c 9205ce9d3b064d9600f8418a897fc88b5687d9ac
|
||||
F src/vdbemem.c d90a1e8acf8b63dc9d14cbbea12bfec6cec31394
|
||||
|
@ -1017,7 +1017,7 @@ F test/tkt3997.test a335fa41ca3985660a139df7b734a26ef53284bd
|
|||
F test/tkt4018.test 7c2c9ba4df489c676a0a7a0e809a1fb9b2185bd1
|
||||
F test/tokenize.test ce430a7aed48fc98301611429595883fdfcab5d7
|
||||
F test/tpch01.test 04adbf8d8300fa60a222f28d901abd76e7be6dd4
|
||||
F test/trace.test 4b36a41a3e9c7842151af6da5998f5080cdad9e5
|
||||
F test/trace.test 73a5508100f7fccfbc3f8018d5f6963ed478eea0
|
||||
F test/trace2.test 93b47ca6996c66b47f57224cfb146f34e07df382
|
||||
F test/trans.test 6e1b4c6a42dba31bd65f8fa5e61a2708e08ddde6
|
||||
F test/trans2.test 62bd045bfc7a1c14c5ba83ba64d21ade31583f76
|
||||
|
@ -1186,7 +1186,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
|
|||
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
|
||||
F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
|
||||
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
||||
P f10a6111262ce6ee6984c64fa0e0023642eca27d
|
||||
R 257d241ab9ebe5fc3f4654d7f2e169ae
|
||||
P d09d63c07748839e9b778a769b183bdd614c6c13
|
||||
R dc4a84c1e3dbc4c500aead2f870904cc
|
||||
U drh
|
||||
Z 211a00cac8127ca939f7e6f32071c25c
|
||||
Z 8ee9013dcfb943fe42c807d90f81accd
|
||||
|
|
|
@ -1 +1 @@
|
|||
d09d63c07748839e9b778a769b183bdd614c6c13
|
||||
0d4d3df4bc5e75ce1543b5539a1e9e279d2a062f
|
|
@ -513,10 +513,12 @@ int sqlite3_step(sqlite3_stmt *pStmt){
|
|||
sqlite3_mutex_enter(db->mutex);
|
||||
v->doingRerun = 0;
|
||||
while( (rc = sqlite3Step(v))==SQLITE_SCHEMA
|
||||
&& cnt++ < SQLITE_MAX_SCHEMA_RETRY
|
||||
&& (rc2 = rc = sqlite3Reprepare(v))==SQLITE_OK ){
|
||||
&& cnt++ < SQLITE_MAX_SCHEMA_RETRY ){
|
||||
int savedPc = v->pc;
|
||||
rc2 = rc = sqlite3Reprepare(v);
|
||||
if( rc!=SQLITE_OK) break;
|
||||
sqlite3_reset(pStmt);
|
||||
v->doingRerun = 1;
|
||||
v->doingRerun = savedPc>=0;
|
||||
assert( v->expired==0 );
|
||||
}
|
||||
if( rc2!=SQLITE_OK ){
|
||||
|
|
|
@ -48,6 +48,22 @@ do_test trace-1.5 {
|
|||
db trace {}
|
||||
db trace
|
||||
} {}
|
||||
do_test trace-1.6 {
|
||||
db eval {
|
||||
CREATE TABLE t1b(x TEXT PRIMARY KEY, y);
|
||||
INSERT INTO t1b VALUES('abc','def'),('ghi','jkl'),('mno','pqr');
|
||||
}
|
||||
set ::stmtlist {}
|
||||
set xyzzy a*
|
||||
db trace trace_proc
|
||||
db eval {
|
||||
SELECT y FROM t1b WHERE x GLOB $xyzzy
|
||||
}
|
||||
} {def}
|
||||
do_test trace-1.7 {
|
||||
set ::stmtlist
|
||||
} {{SELECT y FROM t1b WHERE x GLOB 'a*'}}
|
||||
db trace {}
|
||||
|
||||
# If we prepare a statement and execute it multiple times, the trace
|
||||
# happens on each execution.
|
||||
|
|
Loading…
Reference in New Issue