diff options
author | dan <dan@noemail.net> | 2020-02-27 15:07:16 +0000 |
---|---|---|
committer | dan <dan@noemail.net> | 2020-02-27 15:07:16 +0000 |
commit | 67e2bb92df88c2497a5bbbe82b3e3be4fce8b6fc (patch) | |
tree | 8148430bd53da920ebbf8881a7decb489d0b9de5 /src/select.c | |
parent | 47a60d45187fcc3cf220c9083be5769fba9bf90a (diff) | |
download | sqlite-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.c | 4 |
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; |