]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Performance optimization in the transfer of error messages from statements
authordrh <drh@noemail.net>
Tue, 26 May 2020 20:31:17 +0000 (20:31 +0000)
committerdrh <drh@noemail.net>
Tue, 26 May 2020 20:31:17 +0000 (20:31 +0000)
to connections.

FossilOrigin-Name: 0e898f4fed1c851cb90f940175110e632a20668a285d39f5f94f7358c3064882

manifest
manifest.uuid
src/vdbeaux.c

index 2733dd6d6cddfc86b28dde864636fce9b6a72c8f..ea5d83cd5e4ff39ce3e4b4e257279d593e259988 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Increase\sthe\sversion\snumber\sto\s3.33.0\sto\sbegin\sthe\snext\srelease\scycle.
-D 2020-05-26T11:23:48.742
+C Performance\soptimization\sin\sthe\stransfer\sof\serror\smessages\sfrom\sstatements\nto\sconnections.
+D 2020-05-26T20:31:17.309
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -609,7 +609,7 @@ F src/vdbe.c e3dba0dee25bc92e871c13cac655260912b3be4abcc85b439259c9934b208da3
 F src/vdbe.h 07b8c636a87df8b6e58f29d6badd7f10d5844353deff1d7c88ed1c2bfe3bbd35
 F src/vdbeInt.h 571413068b5ac07e2ed8ca7a02fa529622fd5455ae6981498376e5e492d2e5ef
 F src/vdbeapi.c e467b75a710ea099f8d2d022abf601d2ccd05e28f63b44b12d93000b6a75f4a8
-F src/vdbeaux.c 80626786d21296d9e7936186850343afe5fc6368ad9724a172e151788425a063
+F src/vdbeaux.c 00746a04b3a1e917bab5e3846f0931820a5ded53cbe1648ba1ad57c0869c1ba3
 F src/vdbeblob.c 253ed82894924c362a7fa3079551d3554cd1cdace39aa833da77d3bc67e7c1b1
 F src/vdbemem.c 39b942ecca179f4f30a32b54579a85d74ccaefa5af2a0ad2700abe5ef0768b22
 F src/vdbesort.c 2be76d26998ce2b3324cdcc9f6443728e54b6c7677c553ad909c7d7cfab587df
@@ -1866,7 +1866,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 04e1edd8e5821a377407263829ed0d87968c708c9aeb1282107ea6f39a11c1cc
-R d32bbb281af1aa287830644a32a7b4c0
+P 790badb390d59062cd2d8d1dec76cc6104c9425610a67503f6be38076b6a458e
+R abd22ed4e954a363c14f11187a7348c8
 U drh
-Z 05e8a4ff8d6715588483ef98172b1d7e
+Z e7622c5a97ba4fe1a01d807db0ece61d
index 34217c129bc886a4cca5573fc6d5c9d94ae4f6de..ed41f3241490bc98a9fd437010f958e4ee60b8fa 100644 (file)
@@ -1 +1 @@
-790badb390d59062cd2d8d1dec76cc6104c9425610a67503f6be38076b6a458e
\ No newline at end of file
+0e898f4fed1c851cb90f940175110e632a20668a285d39f5f94f7358c3064882
\ No newline at end of file
index 38dc7cd86950725983be1ab7934f22c3b521d81e..af4fa37894b6ebe3c2a8fc6deeff7884411b9d80 100644 (file)
@@ -3302,7 +3302,11 @@ int sqlite3VdbeReset(Vdbe *p){
   */
   if( p->pc>=0 ){
     vdbeInvokeSqllog(p);
-    sqlite3VdbeTransferError(p);
+    if( db->pErr || p->zErrMsg ){
+      sqlite3VdbeTransferError(p);
+    }else{
+      db->errCode = p->rc;
+    }
     if( p->runOnlyOnce ) p->expired = 1;
   }else if( p->rc && p->expired ){
     /* The expired flag was set on the VDBE before the first call
@@ -3322,8 +3326,10 @@ int sqlite3VdbeReset(Vdbe *p){
     for(i=0; i<p->nMem; i++) assert( p->aMem[i].flags==MEM_Undefined );
   }
 #endif
-  sqlite3DbFree(db, p->zErrMsg);
-  p->zErrMsg = 0;
+  if( p->zErrMsg ){
+    sqlite3DbFree(db, p->zErrMsg);
+    p->zErrMsg = 0;
+  }
   p->pResultSet = 0;
 #ifdef SQLITE_DEBUG
   p->nWrite = 0;