1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-08-08 14:02:16 +03:00

Use a mini Bloom filter to help reduce the number of pointless searches for

prior SubrtnSig objects when generating code for IN operators with subqueries
as their right operand.

FossilOrigin-Name: d8cedbe055b40a0ea4e5d47845b535162e9fcb0d0f88c03211797ab64d2d56fb
This commit is contained in:
drh
2024-07-05 13:55:59 +00:00
parent 635c6b8086
commit 42123a294d
4 changed files with 11 additions and 12 deletions

View File

@@ -3436,7 +3436,7 @@ static int findCompatibleInRhsSubrtn(
Vdbe *v;
if( pNewSig==0 ) return 0;
if( pParse->bHasSubrtn==0 ) return 0;
if( (pParse->mSubrtnSig & (1<<(pNewSig->selId&7)))==0 ) return 0;
assert( pExpr->op==TK_IN );
assert( !ExprUseYSub(pExpr) );
assert( ExprUseXSelect(pExpr) );
@@ -3564,7 +3564,7 @@ void sqlite3CodeRhsOfIN(
pSig->regReturn = pExpr->y.sub.regReturn;
pSig->iTable = iTab;
sqlite3VdbeChangeP4(v, -1, (const char*)pSig, P4_SUBRTNSIG);
pParse->bHasSubrtn = 1;
pParse->mSubrtnSig = 1 << (pSig->selId&7);
}
addrOnce = sqlite3VdbeAddOp0(v, OP_Once); VdbeCoverage(v);
}