From: drh Date: Wed, 6 Jun 2018 17:45:51 +0000 (+0000) Subject: Another minor optimization to OP_Transaction. X-Git-Tag: version-3.25.0~214 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=397776a8235cc443bc8158f2f7c27932612c31d9;p=thirdparty%2Fsqlite.git Another minor optimization to OP_Transaction. FossilOrigin-Name: d80077aee3904e5d93164b342cae14d813de8e84e567462412751e06c7487d41 --- diff --git a/manifest b/manifest index 9698adcb8a..f37a81d248 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Change\ssqlite3BtreeBeginTrans()\sto\sreturn\sthe\sBTREE_SCHEMA_COOKIE,\sfor\sa\nsmall\sspeed\simprovement\swhen\sstarting\snew\stransactions. -D 2018-06-06T16:28:40.777 +C Another\sminor\soptimization\sto\sOP_Transaction. +D 2018-06-06T17:45:51.934 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F Makefile.in bfc40f350586923e0419d2ea4b559c37ec10ee4b6e210e08c14401f8e340f0da @@ -565,7 +565,7 @@ F src/upsert.c 47edd408cc73f8d3c00a140550d1ad180b407c146285947969dd09874802bf88 F src/utf.c 810fbfebe12359f10bc2a011520a6e10879ab2a163bcb26c74768eab82ea62a5 F src/util.c d9eb0a6c4aae1b00a7369eadd7ca0bbe946cb4c953b6751aa20d357c2f482157 F src/vacuum.c 36e7d21a20c0bf6ef4ef7c399d192b5239410b7c4d3c1070fba4e30810d0b855 -F src/vdbe.c 6d399cc8e10a7c1b2103e5bc21874cbbb645bab39ae5839a124547de9c67281d +F src/vdbe.c ffa02701cda500e0770abf139d860447e546949c5d55acab58ad8239ad92daf0 F src/vdbe.h e3f43bcc27ff30b0f25a6104d0cb5657e1c4b5e1b5cd2dd2216d5bcc2156a746 F src/vdbeInt.h 42d3e65ea0c664f6d9bc9a53de645c0baf8566ff0188409ff3b8d2abc327bc17 F src/vdbeapi.c 765a0bbe01311626417de6cb743f7f25f9f98435c98a9df4bb0714d11014633d @@ -1730,7 +1730,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 27291f2d7fd4dadf2ee9b9a7d1373158cadfbaf83c3654b00d7030dc921770c6 -R 16b62aa5de77d5bb1612bf4110bec5fd +P a10662aa915ae2b5a78b3e10920350d32255b2d6b1a8aac0aba1ad173b07ed2b +R 0414460bef03f5574242d45104db8a7b U drh -Z 863a8fc1288d57d76620b26ae04bd21c +Z 426a1576c4740e63608a04eef5bea89e diff --git a/manifest.uuid b/manifest.uuid index 041e5a4660..60bbc07de5 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -a10662aa915ae2b5a78b3e10920350d32255b2d6b1a8aac0aba1ad173b07ed2b \ No newline at end of file +d80077aee3904e5d93164b342cae14d813de8e84e567462412751e06c7487d41 \ No newline at end of file diff --git a/src/vdbe.c b/src/vdbe.c index 3627e5aa37..ba917e1c85 100644 --- a/src/vdbe.c +++ b/src/vdbe.c @@ -3203,7 +3203,6 @@ case OP_AutoCommit: { case OP_Transaction: { Btree *pBt; int iMeta = 0; - int iGen = 0; assert( p->bIsReader ); assert( p->readOnly==0 || pOp->p2==0 ); @@ -3249,16 +3248,17 @@ case OP_Transaction: { p->nStmtDefCons = db->nDeferredCons; p->nStmtDefImmCons = db->nDeferredImmCons; } - - /* Gather the schema version number for checking: + } + assert( pOp->p5==0 || pOp->p4type==P4_INT32 ); + if( pOp->p5 + && (iMeta!=pOp->p3 + || db->aDb[pOp->p1].pSchema->iGeneration!=pOp->p4.i) + ){ + /* ** IMPLEMENTATION-OF: R-03189-51135 As each SQL statement runs, the schema ** version is checked to ensure that the schema has not changed since the ** SQL statement was prepared. */ - iGen = db->aDb[pOp->p1].pSchema->iGeneration; - } - assert( pOp->p5==0 || pOp->p4type==P4_INT32 ); - if( pOp->p5 && (iMeta!=pOp->p3 || iGen!=pOp->p4.i) ){ sqlite3DbFree(db, p->zErrMsg); p->zErrMsg = sqlite3DbStrDup(db, "database schema has changed"); /* If the schema-cookie from the database file matches the cookie