mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-10 01:02:56 +03:00
Enhancements to the way errors are reported up when an automatic
statement reprepare fails. FossilOrigin-Name: 1a6d4bb130382564093b6370818ae4a7633f4074
This commit is contained in:
20
manifest
20
manifest
@@ -1,8 +1,8 @@
|
|||||||
-----BEGIN PGP SIGNED MESSAGE-----
|
-----BEGIN PGP SIGNED MESSAGE-----
|
||||||
Hash: SHA1
|
Hash: SHA1
|
||||||
|
|
||||||
C Fix\san\sassertion\sfault\sthat\soccurs\swhen\stwo\sdifferent\svirtual\stables\sare\nused\sin\sa\ssingle\sUPDATE\sstatement.\nTicket\s[d2f02d37f52b].
|
C Enhancements\sto\sthe\sway\serrors\sare\sreported\sup\swhen\san\sautomatic\nstatement\sreprepare\sfails.
|
||||||
D 2010-02-24T15:10:14
|
D 2010-02-24T17:15:19
|
||||||
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
|
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
|
||||||
F Makefile.in 4f2f967b7e58a35bb74fb7ec8ae90e0f4ca7868b
|
F Makefile.in 4f2f967b7e58a35bb74fb7ec8ae90e0f4ca7868b
|
||||||
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
|
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
|
||||||
@@ -162,7 +162,7 @@ F src/pcache.c 815bcb3cf0e14b23212efd3f4981f667a5fd633e
|
|||||||
F src/pcache.h c683390d50f856d4cd8e24342ae62027d1bb6050
|
F src/pcache.h c683390d50f856d4cd8e24342ae62027d1bb6050
|
||||||
F src/pcache1.c 2bb2261190b42a348038f5b1c285c8cef415fcc8
|
F src/pcache1.c 2bb2261190b42a348038f5b1c285c8cef415fcc8
|
||||||
F src/pragma.c 1ee3a5bea3e79bd4ad2519eb9745e1781bf443ea
|
F src/pragma.c 1ee3a5bea3e79bd4ad2519eb9745e1781bf443ea
|
||||||
F src/prepare.c 341413e4703df1f0430e595a78c33e722e6cb8d0
|
F src/prepare.c c80630169d82945070a50ebf298611fd9f1485f1
|
||||||
F src/printf.c f5c160b471e4a4dd22b756cb4ffe0c6979fd6d24
|
F src/printf.c f5c160b471e4a4dd22b756cb4ffe0c6979fd6d24
|
||||||
F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50
|
F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50
|
||||||
F src/resolve.c a1648d98e869937b29f4f697461fe4d60f220a7b
|
F src/resolve.c a1648d98e869937b29f4f697461fe4d60f220a7b
|
||||||
@@ -217,7 +217,7 @@ F src/vacuum.c 28ee5a4963d16cf2477075d85966c0f461cd79de
|
|||||||
F src/vdbe.c eb8b083191412e89292b864687f86afa28f4dc3f
|
F src/vdbe.c eb8b083191412e89292b864687f86afa28f4dc3f
|
||||||
F src/vdbe.h bea1f0cd530775bdb58a340265f3cf3ee920e9b2
|
F src/vdbe.h bea1f0cd530775bdb58a340265f3cf3ee920e9b2
|
||||||
F src/vdbeInt.h e276691b6835da5c0008cc5beaaecedcd7bdba8e
|
F src/vdbeInt.h e276691b6835da5c0008cc5beaaecedcd7bdba8e
|
||||||
F src/vdbeapi.c e9a5abc45877b228925cc69d765df2dc134efb9f
|
F src/vdbeapi.c a8e8b6292864e71998df527f69cc5dde778a96c0
|
||||||
F src/vdbeaux.c 417ee0c5677188b3b72a0ccdda5668183e28bb51
|
F src/vdbeaux.c 417ee0c5677188b3b72a0ccdda5668183e28bb51
|
||||||
F src/vdbeblob.c 5327132a42a91e8b7acfb60b9d2c3b1c5c863e0e
|
F src/vdbeblob.c 5327132a42a91e8b7acfb60b9d2c3b1c5c863e0e
|
||||||
F src/vdbemem.c aeba77b59f3553d3cc5b72c18a8267c6fba546b9
|
F src/vdbemem.c aeba77b59f3553d3cc5b72c18a8267c6fba546b9
|
||||||
@@ -794,14 +794,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
|
|||||||
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
|
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
|
||||||
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
|
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
|
||||||
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
|
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
|
||||||
P 8bf710ce6dfab0e6fd4de7d6d3157008cc70d192
|
P ff61e0fd802c46c2d84c4b0c0bc8a0f34959bb25
|
||||||
R bebac69f9e91e2bdba37c73f6ba495f8
|
R 658916f84409712fa7dd2548647c2d32
|
||||||
U drh
|
U drh
|
||||||
Z 0be4993a1f8e20282f72f2cbfcc52d54
|
Z ccb108eaf5c8840f33d32e69034f28ee
|
||||||
-----BEGIN PGP SIGNATURE-----
|
-----BEGIN PGP SIGNATURE-----
|
||||||
Version: GnuPG v1.4.6 (GNU/Linux)
|
Version: GnuPG v1.4.6 (GNU/Linux)
|
||||||
|
|
||||||
iD8DBQFLhUFaoxKgR168RlERAp+bAJ9aIMVDQ8Dp1bj/Ib3bZe0DoRm3AACgiGAa
|
iD8DBQFLhV6poxKgR168RlERAkKMAKCK4ulcjdItzZ4IyBdUjP6qgi/oLwCcDgEl
|
||||||
9wkaSzZ50yED/siF1Ki8y5I=
|
48bCZk0NWHJfXdvLWtlvzcQ=
|
||||||
=FpV3
|
=+4UP
|
||||||
-----END PGP SIGNATURE-----
|
-----END PGP SIGNATURE-----
|
||||||
|
@@ -1 +1 @@
|
|||||||
ff61e0fd802c46c2d84c4b0c0bc8a0f34959bb25
|
1a6d4bb130382564093b6370818ae4a7633f4074
|
@@ -728,7 +728,7 @@ int sqlite3Reprepare(Vdbe *p){
|
|||||||
db->mallocFailed = 1;
|
db->mallocFailed = 1;
|
||||||
}
|
}
|
||||||
assert( pNew==0 );
|
assert( pNew==0 );
|
||||||
return (rc==SQLITE_LOCKED) ? SQLITE_LOCKED : SQLITE_SCHEMA;
|
return rc;
|
||||||
}else{
|
}else{
|
||||||
assert( pNew!=0 );
|
assert( pNew!=0 );
|
||||||
}
|
}
|
||||||
|
@@ -418,10 +418,12 @@ end_of_step:
|
|||||||
** call sqlite3Reprepare() and try again.
|
** call sqlite3Reprepare() and try again.
|
||||||
*/
|
*/
|
||||||
int sqlite3_step(sqlite3_stmt *pStmt){
|
int sqlite3_step(sqlite3_stmt *pStmt){
|
||||||
int rc = SQLITE_OK;
|
int rc = SQLITE_OK; /* Result from sqlite3Step() */
|
||||||
Vdbe *v = (Vdbe*)pStmt;
|
int rc2 = SQLITE_OK; /* Result from sqlite3Reprepare() */
|
||||||
int cnt = 0;
|
Vdbe *v = (Vdbe*)pStmt; /* the prepared statement */
|
||||||
sqlite3 *db;
|
int cnt = 0; /* Counter to prevent infinite loop of reprepares */
|
||||||
|
sqlite3 *db; /* The database connection */
|
||||||
|
|
||||||
if( vdbeSafetyNotNull(v) ){
|
if( vdbeSafetyNotNull(v) ){
|
||||||
return SQLITE_MISUSE_BKPT;
|
return SQLITE_MISUSE_BKPT;
|
||||||
}
|
}
|
||||||
@@ -429,11 +431,11 @@ int sqlite3_step(sqlite3_stmt *pStmt){
|
|||||||
sqlite3_mutex_enter(db->mutex);
|
sqlite3_mutex_enter(db->mutex);
|
||||||
while( (rc = sqlite3Step(v))==SQLITE_SCHEMA
|
while( (rc = sqlite3Step(v))==SQLITE_SCHEMA
|
||||||
&& cnt++ < 5
|
&& cnt++ < 5
|
||||||
&& (rc = sqlite3Reprepare(v))==SQLITE_OK ){
|
&& (rc2 = rc = sqlite3Reprepare(v))==SQLITE_OK ){
|
||||||
sqlite3_reset(pStmt);
|
sqlite3_reset(pStmt);
|
||||||
v->expired = 0;
|
v->expired = 0;
|
||||||
}
|
}
|
||||||
if( rc==SQLITE_SCHEMA && ALWAYS(v->isPrepareV2) && ALWAYS(db->pErr) ){
|
if( rc2!=SQLITE_OK && v->isPrepareV2 && db->pErr ){
|
||||||
/* This case occurs after failing to recompile an sql statement.
|
/* This case occurs after failing to recompile an sql statement.
|
||||||
** The error message from the SQL compiler has already been loaded
|
** The error message from the SQL compiler has already been loaded
|
||||||
** into the database handle. This block copies the error message
|
** into the database handle. This block copies the error message
|
||||||
@@ -446,9 +448,10 @@ int sqlite3_step(sqlite3_stmt *pStmt){
|
|||||||
sqlite3DbFree(db, v->zErrMsg);
|
sqlite3DbFree(db, v->zErrMsg);
|
||||||
if( !db->mallocFailed ){
|
if( !db->mallocFailed ){
|
||||||
v->zErrMsg = sqlite3DbStrDup(db, zErr);
|
v->zErrMsg = sqlite3DbStrDup(db, zErr);
|
||||||
|
v->rc = rc2;
|
||||||
} else {
|
} else {
|
||||||
v->zErrMsg = 0;
|
v->zErrMsg = 0;
|
||||||
v->rc = SQLITE_NOMEM;
|
v->rc = rc = SQLITE_NOMEM;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
rc = sqlite3ApiExit(db, rc);
|
rc = sqlite3ApiExit(db, rc);
|
||||||
|
Reference in New Issue
Block a user