aboutsummaryrefslogtreecommitdiff
path: root/src/parse.y
diff options
context:
space:
mode:
authordrh <>2024-04-05 20:01:28 +0000
committerdrh <>2024-04-05 20:01:28 +0000
commit743ae4c68b51fe56e6a269a79532224d2e45ce12 (patch)
treeace9b5342b3fbc46b7aebf97f9d61ce25ffe2bbd /src/parse.y
parentb411c4d69e1d7df018e9c313e104e973fc79d583 (diff)
downloadsqlite-743ae4c68b51fe56e6a269a79532224d2e45ce12.tar.gz
sqlite-743ae4c68b51fe56e6a269a79532224d2e45ce12.zip
Experimental enhancement in which expressions of the form "expr IN table"
can be pushed down into subexpressions. FossilOrigin-Name: 2cbd7838fd6ffdf210f34671cd2e3e749a076a3a6f155bbe5f910a67db31c5b1
Diffstat (limited to 'src/parse.y')
-rw-r--r--src/parse.y4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/parse.y b/src/parse.y
index d22c8e6fc..7a3d63766 100644
--- a/src/parse.y
+++ b/src/parse.y
@@ -1369,6 +1369,10 @@ expr(A) ::= expr(A) between_op(N) expr(X) AND expr(Y). [BETWEEN] {
if( E ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, E);
A = sqlite3PExpr(pParse, TK_IN, A, 0);
sqlite3PExprAddSelect(pParse, A, pSelect);
+ if( pParse->nErr==0 ){
+ assert( pSelect!=0 );
+ pSelect->selFlags |= SF_RhsOfIN;
+ }
if( N ) A = sqlite3PExpr(pParse, TK_NOT, A, 0);
}
expr(A) ::= EXISTS LP select(Y) RP. {