diff options
author | drh <> | 2023-08-02 13:29:01 +0000 |
---|---|---|
committer | drh <> | 2023-08-02 13:29:01 +0000 |
commit | 26cf4af5d79775af5ebfb19c46ea9a71655916ef (patch) | |
tree | 6b607dc1daf6b9cda1590f5cc59c7c9b3906783f /src/select.c | |
parent | aa250db66aed4ed8f969d61f05bc374aa8c2c2e6 (diff) | |
download | sqlite-26cf4af5d79775af5ebfb19c46ea9a71655916ef.tar.gz sqlite-26cf4af5d79775af5ebfb19c46ea9a71655916ef.zip |
Remove a condition from query flattening that is now taken care of by
the caller. Factor out the reverse_unordered_selects processing from the
main loop of sqlite3WhereBegin() for performance.
FossilOrigin-Name: f068f105fb158634321bf6401f0774c81059932d213a18b627ae98bcffc10912
Diffstat (limited to 'src/select.c')
-rw-r--r-- | src/select.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/select.c b/src/select.c index 482d7283c..41e42b680 100644 --- a/src/select.c +++ b/src/select.c @@ -4292,7 +4292,8 @@ static int compoundHasDifferentAffinities(Select *p){ ** (27b) the subquery is a compound query and the RIGHT JOIN occurs ** in any arm of the compound query. (See also (17g).) ** -** (28) The subquery is not a MATERIALIZED CTE. +** (28) The subquery is not a MATERIALIZED CTE. (This is handled +** in the caller before ever reaching this routine.) ** ** ** In this routine, the "p" parameter is a pointer to the outer query. @@ -4402,9 +4403,9 @@ static int flattenSubquery( if( iFrom>0 && (pSubSrc->a[0].fg.jointype & JT_LTORJ)!=0 ){ return 0; /* Restriction (27a) */ } - if( pSubitem->fg.isCte && pSubitem->u2.pCteUse->eM10d==M10d_Yes ){ - return 0; /* (28) */ - } + + /* Condition (28) is blocked by the caller */ + assert( !pSubitem->fg.isCte || pSubitem->u2.pCteUse->eM10d!=M10d_Yes ); /* Restriction (17): If the sub-query is a compound SELECT, then it must ** use only the UNION ALL operator. And none of the simple select queries |