aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordrh <>2022-10-22 23:09:29 +0000
committerdrh <>2022-10-22 23:09:29 +0000
commitfb643592fed37076f42bc5466ee18e8106b92d5b (patch)
treefd7d05ec98fbff1416227ed3369696a00d602eb8 /src
parent54cc766b418a0cab68cf21cbbf37872d55a654c6 (diff)
downloadsqlite-fb643592fed37076f42bc5466ee18e8106b92d5b.tar.gz
sqlite-fb643592fed37076f42bc5466ee18e8106b92d5b.zip
More frequently send the complete SELECT statement into sqlite3WhereBegin()
so that it can more accurately determine index coverage. FossilOrigin-Name: f6d09c5a0df940dbaa716df70df28218985b83540b34c468989729a3421ef38c
Diffstat (limited to 'src')
-rw-r--r--src/select.c4
-rw-r--r--src/whereexpr.c4
2 files changed, 4 insertions, 4 deletions
diff --git a/src/select.c b/src/select.c
index 03d9c42cf..42a476c00 100644
--- a/src/select.c
+++ b/src/select.c
@@ -7486,7 +7486,7 @@ int sqlite3Select(
sqlite3VdbeAddOp2(v, OP_Gosub, regReset, addrReset);
SELECTTRACE(1,pParse,p,("WhereBegin\n"));
pWInfo = sqlite3WhereBegin(pParse, pTabList, pWhere, pGroupBy, pDistinct,
- 0, (sDistinct.isTnct==2 ? WHERE_DISTINCTBY : WHERE_GROUPBY)
+ p, (sDistinct.isTnct==2 ? WHERE_DISTINCTBY : WHERE_GROUPBY)
| (orderByGrp ? WHERE_SORTBYGROUP : 0) | distFlag, 0
);
if( pWInfo==0 ){
@@ -7785,7 +7785,7 @@ int sqlite3Select(
SELECTTRACE(1,pParse,p,("WhereBegin\n"));
pWInfo = sqlite3WhereBegin(pParse, pTabList, pWhere, pMinMaxOrderBy,
- pDistinct, 0, minMaxFlag|distFlag, 0);
+ pDistinct, p, minMaxFlag|distFlag, 0);
if( pWInfo==0 ){
goto select_end;
}
diff --git a/src/whereexpr.c b/src/whereexpr.c
index 1816a01f4..24246c1aa 100644
--- a/src/whereexpr.c
+++ b/src/whereexpr.c
@@ -1603,8 +1603,8 @@ static void whereAddLimitExpr(
*/
void SQLITE_NOINLINE sqlite3WhereAddLimit(WhereClause *pWC, Select *p){
assert( p!=0 && p->pLimit!=0 ); /* 1 -- checked by caller */
- assert( p->pGroupBy==0 && (p->selFlags & SF_Aggregate)==0 );
- if( (p->selFlags & (SF_Distinct|SF_Aggregate))==0 /* 2 */
+ if( p->pGroupBy==0
+ && (p->selFlags & (SF_Distinct|SF_Aggregate))==0 /* 2 */
&& (p->pSrc->nSrc==1 && IsVirtual(p->pSrc->a[0].pTab)) /* 3 */
){
ExprList *pOrderBy = p->pOrderBy;