]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Avoid unnecessary calls to sqlite3_step() with null prepared statements
authordrh <drh@noemail.net>
Fri, 9 Apr 2010 09:14:05 +0000 (09:14 +0000)
committerdrh <drh@noemail.net>
Fri, 9 Apr 2010 09:14:05 +0000 (09:14 +0000)
while parsing the schema.

FossilOrigin-Name: ae04d2d15d3d96f607adb394a631d96cd4cf2c1d

manifest
manifest.uuid
src/prepare.c

index 6ae98462c70ec457c429a722a0871a74ae94a06c..15177adb2c334e4f47dc92bf23f64690df0ec63b 100644 (file)
--- a/manifest
+++ b/manifest
@@ -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-----
index dba986af2e9bdd1111988f5e3c9e73a0c33d0db6..2b8dcea36da171671509db08a20b82d8099a9e1b 100644 (file)
@@ -1 +1 @@
-332cb55113a621456c6522830585434146c388e7
\ No newline at end of file
+ae04d2d15d3d96f607adb394a631d96cd4cf2c1d
\ No newline at end of file
index 44b7775138f5aa2e31454eb7a3d2af0f4f904e21..e729f420dde494285ca0622096c60118db1ade71 100644 (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{