1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-18 10:21:03 +03:00

Avoid unnecessary calls to sqlite3_step() with null prepared statements

while parsing the schema.

FossilOrigin-Name: ae04d2d15d3d96f607adb394a631d96cd4cf2c1d
This commit is contained in:
drh
2010-04-09 09:14:05 +00:00
parent 9e48165b07
commit 6498f0bb2e
3 changed files with 15 additions and 15 deletions

View File

@@ -1,8 +1,8 @@
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
C Fix\sa\stypo\sin\sa\scomment.\s\sNo\schanges\sto\scode.
D 2010-04-08T17:35:35
C Avoid\sunnecessary\scalls\sto\ssqlite3_step()\swith\snull\sprepared\sstatements\nwhile\sparsing\sthe\sschema.
D 2010-04-09T09:14:05
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
F Makefile.in 4f2f967b7e58a35bb74fb7ec8ae90e0f4ca7868b
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -162,7 +162,7 @@ F src/pcache.c ace8f6a5ecd4711cc66a1b23053be7109bd437cf
F src/pcache.h c683390d50f856d4cd8e24342ae62027d1bb6050
F src/pcache1.c 6dc1871ce8ead9187161c370a58cd06c84221f76
F src/pragma.c e166ea41544f8e57a08db86dbe87212b7d378fe8
F src/prepare.c e8164a925274cb7803b5f8ab3cf42f2a508ad33f
F src/prepare.c fd1398cb1da54385ba5bd68d93928f10d10a1d9c
F src/printf.c 5f5b65a83e63f2096a541a340722a509fa0240a7
F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50
F src/resolve.c ac5f1a713cd1ae77f08b83cc69581e11bf5ae6f9
@@ -799,14 +799,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
P b04a52824971e8880e4bf0d9862db4eef8b607ab
R 60b628e0c03e907f5546dfec24b3ca0a
P 332cb55113a621456c6522830585434146c388e7
R 71bb1fb313a1856d73098e2432b5cefc
U drh
Z 5a9a61b0d0ccc819f6a41bee3e7c307f
Z b3b7d19f1a4ba32f7346eb0a7b487db1
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFLvhPqoxKgR168RlERAovxAJ48SDXRaNpRjEwguJxwT0++FhJEVACfS7Kz
78+z4WCKNWa5+uIbS9ISEuc=
=iH29
iD8DBQFLvu/goxKgR168RlERAioUAJ9TyQvJfnEhAsJp/SbbkAlrQn1rEQCgibSL
PoydLovfOGdwnT0LV9CvIvc=
=FBJT
-----END PGP SIGNATURE-----

View File

@@ -1 +1 @@
332cb55113a621456c6522830585434146c388e7
ae04d2d15d3d96f607adb394a631d96cd4cf2c1d

View File

@@ -73,15 +73,15 @@ int sqlite3InitCallback(void *pInit, int argc, char **argv, char **NotUsed){
** or executed. All the parser does is build the internal data
** structures that describe the table, index, or view.
*/
char *zErr;
int rc;
sqlite3_stmt *pStmt;
assert( db->init.busy );
db->init.iDb = iDb;
db->init.newTnum = atoi(argv[1]);
db->init.orphanTrigger = 0;
rc = sqlite3_exec(db, argv[2], 0, 0, &zErr);
rc = sqlite3_prepare(db, argv[2], -1, &pStmt, 0);
db->init.iDb = 0;
assert( rc!=SQLITE_OK || zErr==0 );
if( SQLITE_OK!=rc ){
if( db->init.orphanTrigger ){
assert( iDb==1 );
@@ -90,11 +90,11 @@ int sqlite3InitCallback(void *pInit, int argc, char **argv, char **NotUsed){
if( rc==SQLITE_NOMEM ){
db->mallocFailed = 1;
}else if( rc!=SQLITE_INTERRUPT && rc!=SQLITE_LOCKED ){
corruptSchema(pData, argv[0], zErr);
corruptSchema(pData, argv[0], sqlite3_errmsg(db));
}
}
sqlite3DbFree(db, zErr);
}
sqlite3_finalize(pStmt);
}else if( argv[0]==0 ){
corruptSchema(pData, 0, 0);
}else{