From: drh Date: Fri, 20 Apr 2018 19:46:52 +0000 (+0000) Subject: Avoid the use of statement journals on DELETEs of a single row without X-Git-Tag: version-3.24.0~125 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7c48360d7cec8932c30f56f28789f5e03c15b322;p=thirdparty%2Fsqlite.git Avoid the use of statement journals on DELETEs of a single row without triggers or foreign keys. FossilOrigin-Name: 20bf5800808ea02b2aa4bf01a380926784c0e7514a2c73ca303cac1f5c732ae0 --- diff --git a/manifest b/manifest index c125bf160c..4040315166 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Avoid\sopening\sa\sstatement\sjournal\son\ssingle-row\sUPDATEs\swithout\striggers\sor\nFK\sconstraints. -D 2018-04-20T19:32:35.766 +C Avoid\sthe\suse\sof\sstatement\sjournals\son\sDELETEs\sof\sa\ssingle\srow\swithout\ntriggers\sor\sforeign\skeys. +D 2018-04-20T19:46:52.676 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F Makefile.in 5ce9343cba9c189046f1afe6d2bcc1f68079439febc05267b98aec6ecc752439 @@ -443,7 +443,7 @@ F src/ctime.c 849d4cebe008cfc6e4799b034a172b4eaf8856b100739632a852732ba66eee48 F src/date.c ebe1dc7c8a347117bb02570f1a931c62dd78f4a2b1b516f4837d45b7d6426957 F src/dbpage.c 8db4c97f630e7d83f884ea75caf1ffd0988c160e9d530194d93721c80821e0f6 F src/dbstat.c edabb82611143727511a45ca0859b8cd037851ebe756ae3db289859dd18b6f91 -F src/delete.c 333aca5587c690bbc460c9b2e6842e7080b1f7abac0e6ca4d3f82c2aea328def +F src/delete.c b0f90749e22d5e41a12dbf940f4811138cf97da54b46b737089b93eb64a2896f F src/expr.c 53df437b3a4a404f039645919b2d6a56a2f59b9883e858940cd2a8858a25cd3d F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007 F src/fkey.c d617daf66b5515e2b42c1405b2b4984c30ca50fb705ab164271a9bf66c69e331 @@ -1724,7 +1724,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 279c48f6061f766f5437edd6964c0dd1e10399314eb17b6e5ee34df925a776ed -R f59d9c8d7506cfee5d11867351ba9adc +P 2772404b8c570caf3c31d2b0530cf347a24f6f60e220e726c086537b38ebfa85 +R ee450c0b69f4dcb2215df3be5c0b6054 U drh -Z f6c31c0d19eadcc475691d30218d7dbb +Z 19b2fe2aad3c7a4f7bc67e8d88be66a9 diff --git a/manifest.uuid b/manifest.uuid index 7d201a2559..e14a2a169d 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -2772404b8c570caf3c31d2b0530cf347a24f6f60e220e726c086537b38ebfa85 \ No newline at end of file +20bf5800808ea02b2aa4bf01a380926784c0e7514a2c73ca303cac1f5c732ae0 \ No newline at end of file diff --git a/src/delete.c b/src/delete.c index 7a33fcf6cd..8efe89ded4 100644 --- a/src/delete.c +++ b/src/delete.c @@ -343,7 +343,7 @@ void sqlite3DeleteFrom( goto delete_from_cleanup; } if( pParse->nested==0 ) sqlite3VdbeCountChanges(v); - sqlite3BeginWriteOperation(pParse, 1, iDb); + sqlite3BeginWriteOperation(pParse, bComplex, iDb); /* If we are trying to delete from a view, realize that view into ** an ephemeral table. @@ -447,6 +447,7 @@ void sqlite3DeleteFrom( eOnePass = sqlite3WhereOkOnePass(pWInfo, aiCurOnePass); assert( IsVirtual(pTab)==0 || eOnePass!=ONEPASS_MULTI ); assert( IsVirtual(pTab) || bComplex || eOnePass!=ONEPASS_OFF ); + if( eOnePass!=ONEPASS_SINGLE ) sqlite3MultiWrite(pParse); /* Keep track of the number of rows to be deleted */ if( memCnt ){