aboutsummaryrefslogtreecommitdiff
path: root/src/select.c
diff options
context:
space:
mode:
authordrh <>2024-06-06 15:03:16 +0000
committerdrh <>2024-06-06 15:03:16 +0000
commit4703b7d0921291f96bb53a45f4ab49b99bfbd33c (patch)
tree356b665b030beb3dcfa7d4fd48b8170463cbbf3d /src/select.c
parent404ddadbd421fd3754cab1a3e90bb2dd74467fbd (diff)
downloadsqlite-4703b7d0921291f96bb53a45f4ab49b99bfbd33c.tar.gz
sqlite-4703b7d0921291f96bb53a45f4ab49b99bfbd33c.zip
Better optimize queries that use parameters in the LIMIT clause.
FossilOrigin-Name: e58cb304d1e0ec6e30260a165aaccc2cf096ce6c999efb06683c4ef600ee12ef
Diffstat (limited to 'src/select.c')
-rw-r--r--src/select.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/select.c b/src/select.c
index 4671dfa6d..9a0f2e40f 100644
--- a/src/select.c
+++ b/src/select.c
@@ -2492,7 +2492,7 @@ static void computeLimitRegisters(Parse *pParse, Select *p, int iBreak){
p->iLimit = iLimit = ++pParse->nMem;
v = sqlite3GetVdbe(pParse);
assert( v!=0 );
- if( sqlite3ExprIsInteger(pLimit->pLeft, &n) ){
+ if( sqlite3ExprIsInteger(pLimit->pLeft, &n, pParse) ){
sqlite3VdbeAddOp2(v, OP_Integer, n, iLimit);
VdbeComment((v, "LIMIT counter"));
if( n==0 ){
@@ -2972,7 +2972,7 @@ static int multiSelect(
p->pPrior = pPrior;
p->nSelectRow = sqlite3LogEstAdd(p->nSelectRow, pPrior->nSelectRow);
if( p->pLimit
- && sqlite3ExprIsInteger(p->pLimit->pLeft, &nLimit)
+ && sqlite3ExprIsInteger(p->pLimit->pLeft, &nLimit, pParse)
&& nLimit>0 && p->nSelectRow > sqlite3LogEst((u64)nLimit)
){
p->nSelectRow = sqlite3LogEst((u64)nLimit);