diff options
author | drh <> | 2024-04-05 20:01:28 +0000 |
---|---|---|
committer | drh <> | 2024-04-05 20:01:28 +0000 |
commit | 743ae4c68b51fe56e6a269a79532224d2e45ce12 (patch) | |
tree | ace9b5342b3fbc46b7aebf97f9d61ce25ffe2bbd /src/parse.y | |
parent | b411c4d69e1d7df018e9c313e104e973fc79d583 (diff) | |
download | sqlite-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.y | 4 |
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. { |