1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-14 00:22:38 +03:00

Fix LIMIT and OFFSET so that they work and do not leak memory even on

complex queries involving deeply nested views of UNION ALL compounds.
Ticket [db4d96798da8].  Secondary to ticket [d58ccbb3f1b7].

FossilOrigin-Name: 497ee36cb8d07c936e6896135163c5cd7e94bdde
This commit is contained in:
drh
2013-01-29 23:55:50 +00:00
parent e096205a7f
commit 547180baf0
4 changed files with 165 additions and 8 deletions

View File

@@ -1707,6 +1707,8 @@ static int multiSelect(
int addr = 0;
int nLimit;
assert( !pPrior->pLimit );
pPrior->iLimit = p->iLimit;
pPrior->iOffset = p->iOffset;
pPrior->pLimit = p->pLimit;
pPrior->pOffset = p->pOffset;
explainSetInteger(iSub1, pParse->iNextSelectId);
@@ -2963,12 +2965,15 @@ static int flattenSubquery(
Select *pNew;
ExprList *pOrderBy = p->pOrderBy;
Expr *pLimit = p->pLimit;
Expr *pOffset = p->pOffset;
Select *pPrior = p->pPrior;
p->pOrderBy = 0;
p->pSrc = 0;
p->pPrior = 0;
p->pLimit = 0;
p->pOffset = 0;
pNew = sqlite3SelectDup(db, p, 0);
p->pOffset = pOffset;
p->pLimit = pLimit;
p->pOrderBy = pOrderBy;
p->pSrc = pSrc;