Avoid an unnecessary btree seek while deleting an index entry due to a conflict

on a REPLACE operation.

FossilOrigin-Name: f0495c5133d0dc04d63521136d6b9ca440792cdf
This commit is contained in:
drh 2017-01-07 03:26:50 +00:00
parent a67b5cb6b3
commit ad1d9a8707
4 changed files with 10 additions and 10 deletions

View File

@ -1,5 +1,5 @@
C Avoid\sduplicate\sb-tree\ssearches\sin\sthe\sduplicate\srow\sdetector\sused\sto\nimplement\sDISTINCT.
D 2017-01-07T00:56:01.383
C Avoid\san\sunnecessary\sbtree\sseek\swhile\sdeleting\san\sindex\sentry\sdue\sto\sa\sconflict\non\sa\sREPLACE\soperation.
D 2017-01-07T03:26:50.193
F Makefile.in 41bd4cad981487345c4a84081074bcdb876e4b2e
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
F Makefile.msc b8ca53350ae545e3562403d5da2a69cec79308da
@ -340,7 +340,7 @@ F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
F src/ctime.c 9f2296a4e5d26ebf0e0d95a0af4628f1ea694e7a
F src/date.c dc3f1391d9297f8c748132813aaffcb117090d6e
F src/dbstat.c 19ee7a4e89979d4df8e44cfac7a8f905ec89b77d
F src/delete.c c8bc10d145c9666a34ae906250326fdaa8d58fa5
F src/delete.c 1a443cedfff0420959416a09f55119973f803593
F src/expr.c f06f41e5e5daca10fb090e70a2502dcc0dbc992b
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
F src/fkey.c 2e9aabe1aee76273aff8a84ee92c464e095400ae
@ -350,7 +350,7 @@ F src/hash.c 63d0ee752a3b92d4695b2b1f5259c4621b2cfebd
F src/hash.h ab34c5c54a9e9de2e790b24349ba5aab3dbb4fd4
F src/hwtime.h 747c1bbe9df21a92e9c50f3bbec1de841dc5e5da
F src/in-operator.md 10cd8f4bcd225a32518407c2fb2484089112fd71
F src/insert.c 7af46a3be2656f5e13791464625d93d6b07b8612
F src/insert.c ad2a0b2757a23b6f9297ee414eeab22b52fbde75
F src/legacy.c 75d3023be8f0d2b99d60f905090341a03358c58e
F src/loadext.c 5d6642d141c07d366e43d359e94ec9de47add41d
F src/main.c e207b81542d13b9f13d61e78ca441f9781f055b0
@ -1543,7 +1543,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 6696cd1878be4bd44a24841b04163e52d847711e
R fe79848e4bc76903961662bd26c28411
P d577dda0a7fbfacda57e8cad2bc4651d2a05d813
R 9a736b4439c4e25faa8492f344a490a5
U drh
Z 1f3f3bb84e2a0b8cdaa2372e378cb7b9
Z c755348d5a4bd2ab8fd825f60cd77850

View File

@ -1 +1 @@
d577dda0a7fbfacda57e8cad2bc4651d2a05d813
f0495c5133d0dc04d63521136d6b9ca440792cdf

View File

@ -716,7 +716,7 @@ void sqlite3GenerateRowDelete(
if( eMode!=ONEPASS_OFF ){
sqlite3VdbeChangeP5(v, OPFLAG_AUXDELETE);
}
if( iIdxNoSeek>=0 ){
if( iIdxNoSeek>=0 && iIdxNoSeek!=iDataCur ){
sqlite3VdbeAddOp1(v, OP_Delete, iIdxNoSeek);
}
if( eMode==ONEPASS_MULTI ) p5 |= OPFLAG_SAVEPOSITION;

View File

@ -1651,7 +1651,7 @@ void sqlite3GenerateConstraintChecks(
}
sqlite3GenerateRowDelete(pParse, pTab, pTrigger, iDataCur, iIdxCur,
regR, nPkField, 0, OE_Replace,
(pIdx==pPk ? ONEPASS_SINGLE : ONEPASS_OFF), -1);
(pIdx==pPk ? ONEPASS_SINGLE : ONEPASS_OFF), iThisCur);
seenReplace = 1;
break;
}