mirror of
https://github.com/sqlite/sqlite.git
synced 2025-11-11 01:42:22 +03:00
Revamp the SrcList allocator routines to be methods of Parse instead of
being methods of the "sqlite3" object, so that they can leave better error messages when the SrcList object grows too large. FossilOrigin-Name: df08d472b090b212fb77ce2aae0e1ffe79ae5db4b1accf55e6fdb18e8b0a7098
This commit is contained in:
15
src/select.c
15
src/select.c
@@ -3960,11 +3960,9 @@ static int flattenSubquery(
|
||||
jointype = pSubitem->fg.jointype;
|
||||
}else{
|
||||
assert( pParent!=p ); /* 2nd and subsequent times through the loop */
|
||||
pSrc = pParent->pSrc = sqlite3SrcListAppend(db, 0, 0, 0);
|
||||
if( pSrc==0 ){
|
||||
assert( db->mallocFailed );
|
||||
break;
|
||||
}
|
||||
pSrc = sqlite3SrcListAppend(pParse, 0, 0, 0);
|
||||
if( pSrc==0 ) break;
|
||||
pParent->pSrc = pSrc;
|
||||
}
|
||||
|
||||
/* The subquery uses a single slot of the FROM clause of the outer
|
||||
@@ -3983,10 +3981,9 @@ static int flattenSubquery(
|
||||
** for the two elements in the FROM clause of the subquery.
|
||||
*/
|
||||
if( nSubSrc>1 ){
|
||||
pParent->pSrc = pSrc = sqlite3SrcListEnlarge(db, pSrc, nSubSrc-1,iFrom+1);
|
||||
if( db->mallocFailed ){
|
||||
break;
|
||||
}
|
||||
pSrc = sqlite3SrcListEnlarge(pParse, pSrc, nSubSrc-1,iFrom+1);
|
||||
if( pSrc==0 ) break;
|
||||
pParent->pSrc = pSrc;
|
||||
}
|
||||
|
||||
/* Transfer the FROM clause terms from the subquery into the
|
||||
|
||||
Reference in New Issue
Block a user