aboutsummaryrefslogtreecommitdiff
path: root/src/select.c
diff options
context:
space:
mode:
authordan <dan@noemail.net>2020-02-27 15:07:16 +0000
committerdan <dan@noemail.net>2020-02-27 15:07:16 +0000
commit67e2bb92df88c2497a5bbbe82b3e3be4fce8b6fc (patch)
tree8148430bd53da920ebbf8881a7decb489d0b9de5 /src/select.c
parent47a60d45187fcc3cf220c9083be5769fba9bf90a (diff)
downloadsqlite-67e2bb92df88c2497a5bbbe82b3e3be4fce8b6fc.tar.gz
sqlite-67e2bb92df88c2497a5bbbe82b3e3be4fce8b6fc.zip
Optimization for "SELECT min(x) FROM tbl" where "x" is indexed and NOT NULL. This also allows similar queries on NOT NULL virtual table columns to be optimized.
FossilOrigin-Name: 59726777934e201d94e99ca693f0fda4ebfb1c7883d0258ce542f63f9924c28c
Diffstat (limited to 'src/select.c')
-rw-r--r--src/select.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/select.c b/src/select.c
index 231027b61..a00abcc3d 100644
--- a/src/select.c
+++ b/src/select.c
@@ -4477,7 +4477,9 @@ static u8 minMaxQuery(sqlite3 *db, Expr *pFunc, ExprList **ppMinMax){
zFunc = pFunc->u.zToken;
if( sqlite3StrICmp(zFunc, "min")==0 ){
eRet = WHERE_ORDERBY_MIN;
- sortFlags = KEYINFO_ORDER_BIGNULL;
+ if( sqlite3ExprCanBeNull(pEList->a[0].pExpr) ){
+ sortFlags = KEYINFO_ORDER_BIGNULL;
+ }
}else if( sqlite3StrICmp(zFunc, "max")==0 ){
eRet = WHERE_ORDERBY_MAX;
sortFlags = KEYINFO_ORDER_DESC;