aboutsummaryrefslogtreecommitdiff
path: root/src/build.c
diff options
context:
space:
mode:
authordrh <>2024-08-17 23:23:23 +0000
committerdrh <>2024-08-17 23:23:23 +0000
commitb204b6aa7bd94252c8043f53701f314ee433bafd (patch)
treef04c3e135374b5327a0efcc17ceca3e0466131a9 /src/build.c
parent8797bd695f97db094bf10e546170d7b1e266867c (diff)
downloadsqlite-b204b6aa7bd94252c8043f53701f314ee433bafd.tar.gz
sqlite-b204b6aa7bd94252c8043f53701f314ee433bafd.zip
Give unique names to fields in the SrcItem object, to facilitate analysis of
how those fields are used using "grep". FossilOrigin-Name: 9f5aeef3cbc2c95267c8f7bf60d5c66971a76789669fb0e8f853273ff6f616f2
Diffstat (limited to 'src/build.c')
-rw-r--r--src/build.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/build.c b/src/build.c
index a0c4b493f..ff798087a 100644
--- a/src/build.c
+++ b/src/build.c
@@ -4914,8 +4914,8 @@ void sqlite3SrcListAssignCursors(Parse *pParse, SrcList *pList){
for(i=0, pItem=pList->a; i<pList->nSrc; i++, pItem++){
if( pItem->iCursor>=0 ) continue;
pItem->iCursor = pParse->nTab++;
- if( pItem->pSelect ){
- sqlite3SrcListAssignCursors(pParse, pItem->pSelect->pSrc);
+ if( pItem->sq.pSelect ){
+ sqlite3SrcListAssignCursors(pParse, pItem->sq.pSelect->pSrc);
}
}
}
@@ -4930,6 +4930,15 @@ void sqlite3SrcListDelete(sqlite3 *db, SrcList *pList){
assert( db!=0 );
if( pList==0 ) return;
for(pItem=pList->a, i=0; i<pList->nSrc; i++, pItem++){
+
+ /* Check invariants on SrcItem */
+ assert( pItem->sq.pSelect==0
+ || (pItem->sq.pSelect->selFlags & SF_MultiValue)==0
+ || (pItem->fg.hadSchema==0
+ && (pItem->fg.fixedSchema || pItem->u4.zDatabase==0)) );
+ assert( pItem->fg.hadSchema==0 || pItem->fg.fixedSchema==1 );
+
+
if( pItem->zName ) sqlite3DbNNFreeNN(db, pItem->zName);
if( pItem->zAlias ) sqlite3DbNNFreeNN(db, pItem->zAlias);
if( pItem->fg.fixedSchema==0 && pItem->u4.zDatabase!=0 ){
@@ -4937,8 +4946,8 @@ void sqlite3SrcListDelete(sqlite3 *db, SrcList *pList){
}
if( pItem->fg.isIndexedBy ) sqlite3DbFree(db, pItem->u1.zIndexedBy);
if( pItem->fg.isTabFunc ) sqlite3ExprListDelete(db, pItem->u1.pFuncArg);
- sqlite3DeleteTable(db, pItem->pTab);
- if( pItem->pSelect ) sqlite3SelectDelete(db, pItem->pSelect);
+ sqlite3DeleteTable(db, pItem->pSTab);
+ if( pItem->sq.pSelect ) sqlite3SelectDelete(db, pItem->sq.pSelect);
if( pItem->fg.isUsing ){
sqlite3IdListDelete(db, pItem->u3.pUsing);
}else if( pItem->u3.pOn ){
@@ -4998,7 +5007,7 @@ SrcList *sqlite3SrcListAppendFromTerm(
pItem->zAlias = sqlite3NameFromToken(db, pAlias);
}
if( pSubquery ){
- pItem->pSelect = pSubquery;
+ pItem->sq.pSelect = pSubquery;
if( pSubquery->selFlags & SF_NestedFrom ){
pItem->fg.isNestedFrom = 1;
}