-C Fix\sP3/P5\sconfusion\sin\sthe\scomment\sabove\sOP_IdxDelete.
-D 2026-04-22T17:31:19.738
+C Enable\sthe\soptimization\son\sthis\sbranch\sfor\sindexes\son\sexpressions\sonly.
+D 2026-04-22T17:50:50.730
F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F src/date.c 61e92f1f7e2e88e1cd91e91dc69eb2b2854e7877254470f9fabd776bfac922b8
F src/dbpage.c c9ea81c11727f27e02874611e92773e68e2a90a875ef2404b084564c235fd91f
F src/dbstat.c 73362c0df0f40ad5523a6f5501224959d0976757b511299bf892313e79d14f5c
-F src/delete.c dbde329841d214a85b1fa9f4c7ce9f53e4fc3066d2f5d491b3364cd43ec3bc14
+F src/delete.c 59eeca3fb88c29329afc41bb803ee568b120d9dd7470b5f38ab55cc38390b451
F src/expr.c 68400681c5f6e41231d2c85abf6bb432aeeb2e36c4abdf90eb7b78551a5ce0f3
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
F src/fkey.c 931f74cec1dc8038a0217ef340c91ce147dd1bbed08dc40c47ee0ec6edfffb08
F test/exprfault.test da33606d799718e2f8e34efd0e5858884a1ad87f608774c552a7f5517cc27181
F test/exprfault2.test c49e84273898969af5dbc4fe6a3f4335f14639799f343590336c9ddf84425965
F test/expridx1.test b464520126e1d781a7800f8540621c82e8bbc526f089ff8b0b57ffc51feea6b7
-F test/expridx2.test 374fc3a1864e25f724c04a8c2eeec8c7fb14b7306c8de32b63cd6ebf7f7ce64f
+F test/expridx2.test 8890d483da880ce86bc5f2f6cd93c27af8a3b99871ed039fe385ee99dbeb9455
F test/extension01.test 5de412c66276105901c370770175003381fdcb0c4da7054fa43cf4a31e0bfa3a
F test/external_reader.test 6fdec43eeca23eb32faad1e95a4d1abc402bc8b3db70df12d6fc08a637f4a2b5
F test/extraquick.test cb254400bd42bfb777ff675356aabf3287978f79
F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c
-P 7a01caf0d0864a462eb81b7643dcf89048f4ae56a29d762f0cfc38066218504f
-R f6ba1f248dd30549b7f4f352031f00e3
+P 0fb6ca8e22f355838a02223dd24b34c0669a6cc0b7ac80931c721db72cf5c1c8
+R 7af78ac5b7fa26cb04f29a37faac6c06
U dan
-Z 3bf4f946ff4dbebc9016cd341c7b13d2
+Z d4134b8fef7b68b28ed810606a3d8b86
# Remove this line to create a well-formed Fossil manifest.
-0fb6ca8e22f355838a02223dd24b34c0669a6cc0b7ac80931c721db72cf5c1c8
+3576b6930436b3149c5033476f70518e9b4adeaeec2538a68b7dc599eb854c47
v = pParse->pVdbe;
pPk = HasRowid(pTab) ? 0 : sqlite3PrimaryKeyIndex(pTab);
for(i=0, pIdx=pTab->pIndex; pIdx; i++, pIdx=pIdx->pNext){
+ int p3 = 0;
assert( iIdxCur+i!=iDataCur || pPk==pIdx );
if( aRegIdx!=0 && aRegIdx[i]==0 ) continue;
if( pIdx==pPk ) continue;
VdbeModuleComment((v, "GenRowIdxDel for %s", pIdx->zName));
r1 = sqlite3GenerateIndexKey(pParse, pIdx, iDataCur, 0, 1,
&iPartIdxLabel, pPrior, r1);
- sqlite3VdbeAddOp3(v, OP_IdxDelete, iIdxCur+i, r1, aRegIdx ? aRegIdx[i] : 0);
+ if( pIdx->bHasExpr && aRegIdx ){
+ p3 = aRegIdx[i];
+ }
+ sqlite3VdbeAddOp3(v, OP_IdxDelete, iIdxCur+i, r1, p3);
sqlite3VdbeChangeP4(v, -1, (const char*)pIdx, P4_INDEX);
sqlite3VdbeChangeP5(v, pIdx->uniqNotNull ? pIdx->nKeyCol : pIdx->nColumn);
sqlite3ResolvePartIdxLabel(pParse, iPartIdxLabel);
CREATE INDEX t1a ON t1( (b->>'a') );
CREATE INDEX t1b ON t1( (b->>'b') );
CREATE INDEX t1c ON t1( (b->>'c') );
+
+ CREATE TABLE t2(a INTEGER PRIMARY KEY, b, c);
+ CREATE INDEX t2b ON t2( b );
+ INSERT INTO t2 VALUES(1, 1, 1);
+ INSERT INTO t2 VALUES(2, 2, 2);
+ INSERT INTO t2 VALUES(3, 3, 3);
+ INSERT INTO t2 VALUES(4, 4, 4);
} {wal}
proc nWrite {sql} {
integrity_check 1.4
+do_test 1.5 {
+ nWrite { UPDATE t2 SET b = b+1, c=c+1 }
+} {2}
+
+do_test 1.6 {
+ nWrite { UPDATE t2 SET b = b, c=c+1 }
+} {2}
+
+do_test 1.7 {
+ nWrite { UPDATE t2 SET c=c+1 }
+} {1}
+
finish_test