From: drh Date: Tue, 26 May 2020 20:31:17 +0000 (+0000) Subject: Performance optimization in the transfer of error messages from statements X-Git-Tag: version-3.33.0~171 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ed505ce3e47b971ced26b585506d0efa5efffc85;p=thirdparty%2Fsqlite.git Performance optimization in the transfer of error messages from statements to connections. FossilOrigin-Name: 0e898f4fed1c851cb90f940175110e632a20668a285d39f5f94f7358c3064882 --- diff --git a/manifest b/manifest index 2733dd6d6c..ea5d83cd5e 100644 --- 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 diff --git a/manifest.uuid b/manifest.uuid index 34217c129b..ed41f32414 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -790badb390d59062cd2d8d1dec76cc6104c9425610a67503f6be38076b6a458e \ No newline at end of file +0e898f4fed1c851cb90f940175110e632a20668a285d39f5f94f7358c3064882 \ No newline at end of file diff --git a/src/vdbeaux.c b/src/vdbeaux.c index 38dc7cd869..af4fa37894 100644 --- a/src/vdbeaux.c +++ b/src/vdbeaux.c @@ -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; inMem; 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;