diff options
author | drh <> | 2021-12-01 16:31:02 +0000 |
---|---|---|
committer | drh <> | 2021-12-01 16:31:02 +0000 |
commit | 2db144c33b39985b159ec9210cc13bdb53c00e1c (patch) | |
tree | 317c41dcf05b1f3c7ebf99fcb76380b4d1ede8f9 /src/wherecode.c | |
parent | c1085ea412b5c78d58cad59273d71f44d39843c5 (diff) | |
download | sqlite-2db144c33b39985b159ec9210cc13bdb53c00e1c.tar.gz sqlite-2db144c33b39985b159ec9210cc13bdb53c00e1c.zip |
Add a Bloom filter to the automatic-index mechanism.
FossilOrigin-Name: 50ac4de1d7cbb586ea7969e1ae80ea8b021e194edc2fa7db19374b4ee9369bee
Diffstat (limited to 'src/wherecode.c')
-rw-r--r-- | src/wherecode.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/wherecode.c b/src/wherecode.c index 460ac4fe3..637db432e 100644 --- a/src/wherecode.c +++ b/src/wherecode.c @@ -1511,6 +1511,10 @@ Bitmask sqlite3WhereCodeOneLoopStart( iRowidReg = codeEqualityTerm(pParse, pTerm, pLevel, 0, bRev, iReleaseReg); if( iRowidReg!=iReleaseReg ) sqlite3ReleaseTempReg(pParse, iReleaseReg); addrNxt = pLevel->addrNxt; + if( pLevel->regFilter ){ + sqlite3VdbeAddOp4Int(v, OP_Filter, pLevel->regFilter, addrNxt, + iRowidReg, 1); + } sqlite3VdbeAddOp3(v, OP_SeekRowid, iCur, addrNxt, iRowidReg); VdbeCoverage(v); pLevel->op = OP_Noop; @@ -1836,6 +1840,10 @@ Bitmask sqlite3WhereCodeOneLoopStart( sqlite3VdbeAddOp2(v, OP_Integer, 1, regBignull); VdbeComment((v, "NULL-scan pass ctr")); } + if( pLevel->regFilter ){ + sqlite3VdbeAddOp4Int(v, OP_Filter, pLevel->regFilter, addrNxt, + regBase, nConstraint); + } op = aStartOp[(start_constraints<<2) + (startEq<<1) + bRev]; assert( op!=0 ); |