aboutsummaryrefslogtreecommitdiff
path: root/src/wherecode.c
diff options
context:
space:
mode:
authordan <Dan Kennedy>2022-10-06 14:10:11 +0000
committerdan <Dan Kennedy>2022-10-06 14:10:11 +0000
commit73ac958c749a383208f78af79e637ecc2f593f5a (patch)
treec8011a440baffb4dd86f4f16fe969df4b8c760d9 /src/wherecode.c
parent2eca06141feae3d241776e59b798b4aa1ce128b6 (diff)
downloadsqlite-73ac958c749a383208f78af79e637ecc2f593f5a.tar.gz
sqlite-73ac958c749a383208f78af79e637ecc2f593f5a.zip
Fix a problem that occurred when using a bloom filter to optimize an (ipk = ?) lookup in the case where the RHS of the expression is a TEXT value. First reported by [forum:/forumpost/f61a8b7053|forum post f61a8b7053].
FossilOrigin-Name: 8e14c351b29bb434ac4e2510681e95716424a73e340d39feff4919f0431c2e00
Diffstat (limited to 'src/wherecode.c')
-rw-r--r--src/wherecode.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/wherecode.c b/src/wherecode.c
index 4c34ea0dc..67df73c66 100644
--- a/src/wherecode.c
+++ b/src/wherecode.c
@@ -1422,6 +1422,8 @@ static SQLITE_NOINLINE void filterPullDown(
testcase( pTerm->wtFlags & TERM_VIRTUAL );
regRowid = sqlite3GetTempReg(pParse);
regRowid = codeEqualityTerm(pParse, pTerm, pLevel, 0, 0, regRowid);
+ sqlite3VdbeAddOp2(pParse->pVdbe, OP_MustBeInt, regRowid, addrNxt);
+ VdbeCoverage(pParse->pVdbe);
sqlite3VdbeAddOp4Int(pParse->pVdbe, OP_Filter, pLevel->regFilter,
addrNxt, regRowid, 1);
VdbeCoverage(pParse->pVdbe);
@@ -1683,6 +1685,8 @@ Bitmask sqlite3WhereCodeOneLoopStart(
if( iRowidReg!=iReleaseReg ) sqlite3ReleaseTempReg(pParse, iReleaseReg);
addrNxt = pLevel->addrNxt;
if( pLevel->regFilter ){
+ sqlite3VdbeAddOp2(v, OP_MustBeInt, iRowidReg, addrNxt);
+ VdbeCoverage(v);
sqlite3VdbeAddOp4Int(v, OP_Filter, pLevel->regFilter, addrNxt,
iRowidReg, 1);
VdbeCoverage(v);