Lines Matching refs:pItem
32538 SrcItem *pItem; in sqlite3_str_vappendf() local
32540 pItem = va_arg(ap, SrcItem*); in sqlite3_str_vappendf()
32542 if( pItem->zAlias && !flag_altform2 ){ in sqlite3_str_vappendf()
32543 sqlite3_str_appendall(pAccum, pItem->zAlias); in sqlite3_str_vappendf()
32544 }else if( pItem->zName ){ in sqlite3_str_vappendf()
32545 if( pItem->fg.fixedSchema==0 in sqlite3_str_vappendf()
32546 && pItem->fg.isSubquery==0 in sqlite3_str_vappendf()
32547 && pItem->u4.zDatabase!=0 in sqlite3_str_vappendf()
32549 sqlite3_str_appendall(pAccum, pItem->u4.zDatabase); in sqlite3_str_vappendf()
32552 sqlite3_str_appendall(pAccum, pItem->zName); in sqlite3_str_vappendf()
32553 }else if( pItem->zAlias ){ in sqlite3_str_vappendf()
32554 sqlite3_str_appendall(pAccum, pItem->zAlias); in sqlite3_str_vappendf()
32555 }else if( ALWAYS(pItem->fg.isSubquery) ){/* Because of tag-20240424-1 */ in sqlite3_str_vappendf()
32556 Select *pSel = pItem->u4.pSubq->pSelect; in sqlite3_str_vappendf()
32561 assert( !pItem->fg.isTabFunc && !pItem->fg.isIndexedBy ); in sqlite3_str_vappendf()
32563 pItem->u1.nRow); in sqlite3_str_vappendf()
33342 const SrcItem *pItem = &pSrc->a[i]; in sqlite3TreeViewSrcList() local
33348 sqlite3_str_appendf(&x, "{%d:*} %!S", pItem->iCursor, pItem); in sqlite3TreeViewSrcList()
33349 if( pItem->pSTab ){ in sqlite3TreeViewSrcList()
33351 pItem->pSTab->zName, pItem->pSTab->nCol, pItem->pSTab, in sqlite3TreeViewSrcList()
33352 pItem->colUsed, in sqlite3TreeViewSrcList()
33353 pItem->fg.rowidUsed ? "+rowid" : ""); in sqlite3TreeViewSrcList()
33355 if( (pItem->fg.jointype & (JT_LEFT|JT_RIGHT))==(JT_LEFT|JT_RIGHT) ){ in sqlite3TreeViewSrcList()
33357 }else if( pItem->fg.jointype & JT_LEFT ){ in sqlite3TreeViewSrcList()
33359 }else if( pItem->fg.jointype & JT_RIGHT ){ in sqlite3TreeViewSrcList()
33361 }else if( pItem->fg.jointype & JT_CROSS ){ in sqlite3TreeViewSrcList()
33364 if( pItem->fg.jointype & JT_LTORJ ){ in sqlite3TreeViewSrcList()
33367 if( pItem->fg.fromDDL ){ in sqlite3TreeViewSrcList()
33370 if( pItem->fg.isCte ){ in sqlite3TreeViewSrcList()
33373 pItem->u2.pCteUse->nUse, in sqlite3TreeViewSrcList()
33374 aMat[pItem->u2.pCteUse->eM10d]); in sqlite3TreeViewSrcList()
33376 if( pItem->fg.isOn || (pItem->fg.isUsing==0 && pItem->u3.pOn!=0) ){ in sqlite3TreeViewSrcList()
33379 if( pItem->fg.isTabFunc ) sqlite3_str_appendf(&x, " isTabFunc"); in sqlite3TreeViewSrcList()
33380 if( pItem->fg.isCorrelated ) sqlite3_str_appendf(&x, " isCorrelated"); in sqlite3TreeViewSrcList()
33381 if( pItem->fg.isMaterialized ) sqlite3_str_appendf(&x, " isMaterialized"); in sqlite3TreeViewSrcList()
33382 if( pItem->fg.viaCoroutine ) sqlite3_str_appendf(&x, " viaCoroutine"); in sqlite3TreeViewSrcList()
33383 if( pItem->fg.notCte ) sqlite3_str_appendf(&x, " notCte"); in sqlite3TreeViewSrcList()
33384 if( pItem->fg.isNestedFrom ) sqlite3_str_appendf(&x, " isNestedFrom"); in sqlite3TreeViewSrcList()
33385 if( pItem->fg.fixedSchema ) sqlite3_str_appendf(&x, " fixedSchema"); in sqlite3TreeViewSrcList()
33386 if( pItem->fg.hadSchema ) sqlite3_str_appendf(&x, " hadSchema"); in sqlite3TreeViewSrcList()
33387 if( pItem->fg.isSubquery ) sqlite3_str_appendf(&x, " isSubquery"); in sqlite3TreeViewSrcList()
33392 if( pItem->fg.isSubquery ) n++; in sqlite3TreeViewSrcList()
33393 if( pItem->fg.isTabFunc ) n++; in sqlite3TreeViewSrcList()
33394 if( pItem->fg.isUsing ) n++; in sqlite3TreeViewSrcList()
33395 if( pItem->fg.isUsing ){ in sqlite3TreeViewSrcList()
33396 sqlite3TreeViewIdList(pView, pItem->u3.pUsing, (--n)>0, "USING"); in sqlite3TreeViewSrcList()
33398 if( pItem->fg.isSubquery ){ in sqlite3TreeViewSrcList()
33400 if( pItem->pSTab ){ in sqlite3TreeViewSrcList()
33401 Table *pTab = pItem->pSTab; in sqlite3TreeViewSrcList()
33404 assert( (int)pItem->fg.isNestedFrom == IsNestedFrom(pItem) ); in sqlite3TreeViewSrcList()
33405 sqlite3TreeViewSelect(pView, pItem->u4.pSubq->pSelect, 0); in sqlite3TreeViewSrcList()
33407 if( pItem->fg.isTabFunc ){ in sqlite3TreeViewSrcList()
33408 sqlite3TreeViewExprList(pView, pItem->u1.pFuncArg, 0, "func-args:"); in sqlite3TreeViewSrcList()
107878 struct ExprList_item *pItem;
107880 for(i=p->nExpr, pItem=p->a; i>0; i--, pItem++){
107881 if( sqlite3WalkExpr(pWalker, pItem->pExpr) ) return WRC_Abort;
107939 SrcItem *pItem;
107943 for(i=pSrc->nSrc, pItem=pSrc->a; i>0; i--, pItem++){
107944 if( pItem->fg.isSubquery
107945 && sqlite3WalkSelect(pWalker, pItem->u4.pSubq->pSelect)
107949 if( pItem->fg.isTabFunc
107950 && sqlite3WalkExprList(pWalker, pItem->u1.pFuncArg)
108160 const struct ExprList_item *pItem,
108168 int eEName = pItem->fg.eEName;
108173 zSpan = pItem->zEName;
108325 SrcItem *pItem; /* Use for looping over pSrcList items */
108380 for(i=0, pItem=pSrcList->a; i<pSrcList->nSrc; i++, pItem++){
108381 pTab = pItem->pSTab;
108384 assert( (int)pItem->fg.isNestedFrom == IsNestedFrom(pItem));
108385 if( pItem->fg.isNestedFrom ){
108394 assert( pItem->fg.isSubquery );
108395 assert( pItem->u4.pSubq!=0 );
108396 pSel = pItem->u4.pSubq->pSelect;
108408 if( pItem->fg.isUsing==0
108409 || sqlite3IdListIndex(pItem->u3.pUsing, zCol)<0
108417 if( (pItem->fg.jointype & JT_RIGHT)==0 ){
108421 if( (pItem->fg.jointype & JT_LEFT)==0 ){
108439 pMatch = pItem;
108455 if( pItem->zAlias!=0 ){
108456 if( sqlite3StrICmp(zTab, pItem->zAlias)!=0 ){
108464 if( IN_RENAME_OBJECT && pItem->zAlias ){
108471 if( pItem->fg.isUsing==0
108472 || sqlite3IdListIndex(pItem->u3.pUsing, zCol)<0
108480 if( (pItem->fg.jointype & JT_RIGHT)==0 ){
108484 if( (pItem->fg.jointype & JT_LEFT)==0 ){
108495 pMatch = pItem;
108498 if( pItem->fg.isNestedFrom ){
108499 sqlite3SrcItemColumnUsed(pItem, j);
108522 pMatch = pItem;
108532 pMatch = pItem;
108897 SrcItem *pItem = &pSrc->a[iSrc];
108900 pTab = p->y.pTab = pItem->pSTab;
108901 p->iTable = pItem->iCursor;
108911 pItem->colUsed = pTab->nCol>=64 ? ALLBITS : MASKBIT(pTab->nCol)-1;
108915 pItem->colUsed |= ((Bitmask)1)<<(iCol>=BMS ? BMS-1 : iCol);
109014 SrcItem *pItem;
109016 pItem = pSrcList->a;
109019 pExpr->y.pTab = pItem->pSTab;
109020 pExpr->iTable = pItem->iCursor;
109643 struct ExprList_item *pItem;
109647 for(i=0, pItem=pOrderBy->a; i<pOrderBy->nExpr; i++, pItem++){
109650 if( pItem->fg.done ) continue;
109651 pE = sqlite3ExprSkipCollateAndLikely(pItem->pExpr);
109691 if( pItem->pExpr==pE ){
109692 pItem->pExpr = pNew;
109694 Expr *pParent = pItem->pExpr;
109701 pItem->u.x.iOrderByCol = (u16)iCol;
109703 pItem->fg.done = 1;
109739 struct ExprList_item *pItem;
109748 for(i=0, pItem=pOrderBy->a; i<pOrderBy->nExpr; i++, pItem++){
109749 if( pItem->u.x.iOrderByCol ){
109750 if( pItem->u.x.iOrderByCol>pEList->nExpr ){
109754 resolveAlias(pParse, pEList, pItem->u.x.iOrderByCol-1, pItem->pExpr,0);
109816 struct ExprList_item *pItem; /* A term of the ORDER BY clause */
109823 for(i=0, pItem=pOrderBy->a; i<pOrderBy->nExpr; i++, pItem++){
109824 Expr *pE = pItem->pExpr;
109834 pItem->u.x.iOrderByCol = (u16)iCol;
109846 pItem->u.x.iOrderByCol = (u16)iCol;
109851 pItem->u.x.iOrderByCol = 0;
109861 pItem->u.x.iOrderByCol = j+1;
109944 SrcItem *pItem = &p->pSrc->a[i];
109945 assert( pItem->zName!=0
109946 || pItem->fg.isSubquery ); /* Test of tag-20240424-1*/
109947 if( pItem->fg.isSubquery
109948 && (pItem->u4.pSubq->pSelect->selFlags & SF_Resolved)==0
109953 if( pItem->zName ) pParse->zAuthContext = pItem->zName;
109954 sqlite3ResolveSelectNames(pParse, pItem->u4.pSubq->pSelect, pOuterNC);
109966 assert( pItem->fg.isCorrelated==0 && pOuterNC->nRef>=nRef );
109967 pItem->fg.isCorrelated = (pOuterNC->nRef>nRef);
110023 SrcItem *pItem = &p->pSrc->a[i];
110024 if( pItem->fg.isTabFunc
110025 && sqlite3ResolveExprListNames(&sNC, pItem->u1.pFuncArg)
110089 struct ExprList_item *pItem;
110094 for(i=0, pItem=pGroupBy->a; i<pGroupBy->nExpr; i++, pItem++){
110095 if( ExprHasProperty(pItem->pExpr, EP_Agg) ){
112165 struct ExprList_item *pItem;
112176 pItem = pNew->a;
112178 for(i=0; i<p->nExpr; i++, pItem++, pOldItem++){
112181 pItem->pExpr = sqlite3ExprDup(db, pOldExpr, flags);
112184 && (pNewExpr = pItem->pExpr)!=0
112199 pItem->zEName = sqlite3DbStrDup(db, pOldItem->zEName);
112200 pItem->fg = pOldItem->fg;
112201 pItem->u = pOldItem->u;
112362 struct ExprList_item *pItem;
112372 pItem = &pList->a[0];
112373 *pItem = zeroItem;
112374 pItem->pExpr = pExpr;
112382 struct ExprList_item *pItem;
112393 pItem = &pList->a[pList->nExpr++];
112394 *pItem = zeroItem;
112395 pItem->pExpr = pExpr;
112403 struct ExprList_item *pItem;
112410 pItem = &pList->a[pList->nExpr++];
112411 *pItem = zeroItem;
112412 pItem->pExpr = pExpr;
112490 struct ExprList_item *pItem;
112504 pItem = &p->a[p->nExpr-1];
112505 assert( pItem->fg.bNulls==0 );
112509 pItem->fg.sortFlags = (u8)iSortOrder;
112512 pItem->fg.bNulls = 1;
112514 pItem->fg.sortFlags |= KEYINFO_ORDER_BIGNULL;
112536 struct ExprList_item *pItem;
112538 pItem = &pList->a[pList->nExpr-1];
112539 assert( pItem->zEName==0 );
112540 assert( pItem->fg.eEName==ENAME_NAME );
112541 pItem->zEName = sqlite3DbStrNDup(pParse->db, pName->z, pName->n);
112546 sqlite3Dequote(pItem->zEName);
112548 sqlite3RenameTokenMap(pParse, (const void*)pItem->zEName, pName);
112571 struct ExprList_item *pItem = &pList->a[pList->nExpr-1];
112573 if( pItem->zEName==0 ){
112574 pItem->zEName = sqlite3DbSpanDup(db, zStart, zEnd);
112575 pItem->fg.eEName = ENAME_SPAN;
112602 struct ExprList_item *pItem = pList->a;
112606 sqlite3ExprDelete(db, pItem->pExpr);
112607 if( pItem->zEName ) sqlite3DbNNFreeNN(db, pItem->zEName);
112608 pItem++;
114012 struct ExprList_item *pItem;
114028 for(i=pList->nExpr, pItem=pList->a; i>0; i--, pItem++){
114029 Expr *pE2 = pItem->pExpr;
115899 struct ExprList_item *pItem;
115901 for(pItem=p->a, i=p->nExpr; i>0; pItem++, i--){
115902 if( pItem->fg.reusable
115903 && sqlite3ExprCompare(0,pItem->pExpr,pExpr,-1)==0
115905 return pItem->u.iConstExprReg;
115926 struct ExprList_item *pItem = &p->a[p->nExpr-1];
115927 pItem->fg.reusable = regDest<0;
115929 pItem->u.iConstExprReg = regDest;
116072 struct ExprList_item *pItem;
116081 for(pItem=pList->a, i=0; i<n; i++, pItem++){
116082 Expr *pExpr = pItem->pExpr;
116084 if( pItem->fg.bSorterRef ){
116089 if( (flags & SQLITE_ECEL_REF)!=0 && (j = pItem->u.x.iOrderByCol)>0 ){
117505 SrcItem *pItem = pSrcList->a;
117506 for(i=0; i<pSrcList->nSrc; i++, pItem++){
117508 if( pExpr->iTable==pItem->iCursor ){
117524 struct AggInfo_func *pItem = pAggInfo->aFunc;
117527 for(i=0; i<pAggInfo->nFunc; i++, pItem++){
117528 if( NEVER(pItem->pFExpr==pExpr) ) break;
117529 if( sqlite3ExprCompare(0, pItem->pFExpr, pExpr, -1)==0 ){
117545 pItem = &pAggInfo->aFunc[i];
117546 pItem->pFExpr = pExpr;
117549 pItem->pFunc = sqlite3FindFunction(pParse->db,
117551 assert( pItem->bOBUnique==0 );
117553 && (pItem->pFunc->funcFlags & SQLITE_FUNC_NEEDCOLL)==0
117561 pItem->iOBTab = pParse->nTab++;
117564 assert( pItem->bOBUnique==0 );
117570 pItem->bOBPayload = 0;
117571 pItem->bOBUnique = ExprHasProperty(pExpr, EP_Distinct);
117573 pItem->bOBPayload = 1;
117575 pItem->bUseSubtype =
117576 (pItem->pFunc->funcFlags & SQLITE_SUBTYPE)!=0;
117578 pItem->iOBTab = -1;
117580 if( ExprHasProperty(pExpr, EP_Distinct) && !pItem->bOBUnique ){
117581 pItem->iDistinct = pParse->nTab++;
117583 pItem->iDistinct = -1;
117631 struct ExprList_item *pItem;
117634 for(pItem=pList->a, i=0; i<pList->nExpr; i++, pItem++){
117635 sqlite3ExprAnalyzeAggregates(pNC, pItem->pExpr);
119471 SrcItem *pItem = &pSrc->a[i];
119472 if( pItem->pSTab==p->pTab ){
119473 renameTokenFind(pWalker->pParse, p, pItem->zName);
119616 SrcItem *pItem = &pStep->pFrom->a[i];
119617 if( 0==sqlite3_stricmp(pItem->zName, zOld) ){
119618 renameTokenFind(&sParse, &sCtx, pItem->zName);
122594 SrcItem *pItem;
122600 for(i=0, pItem=pList->a; i<pList->nSrc; i++, pItem++){
122601 if( pFix->bTemp==0 && pItem->fg.isSubquery==0 ){
122602 if( pItem->fg.fixedSchema==0 && pItem->u4.zDatabase!=0 ){
122603 if( iDb!=sqlite3FindDbName(db, pItem->u4.zDatabase) ){
122606 pFix->zType, pFix->pName, pItem->u4.zDatabase);
122609 sqlite3DbFree(db, pItem->u4.zDatabase);
122610 pItem->fg.notCte = 1;
122611 pItem->fg.hadSchema = 1;
122613 pItem->u4.pSchema = pFix->pSchema;
122614 pItem->fg.fromDDL = 1;
122615 pItem->fg.fixedSchema = 1;
127869 SrcItem *pItem;
127891 pItem = &pList->a[pList->nSrc-1];
127895 assert( pItem->fg.fixedSchema==0 );
127896 assert( pItem->fg.isSubquery==0 );
127898 pItem->zName = sqlite3NameFromToken(db, pDatabase);
127899 pItem->u4.zDatabase = sqlite3NameFromToken(db, pTable);
127901 pItem->zName = sqlite3NameFromToken(db, pTable);
127902 pItem->u4.zDatabase = 0;
127912 SrcItem *pItem;
127915 for(i=0, pItem=pList->a; i<pList->nSrc; i++, pItem++){
127916 if( pItem->iCursor>=0 ) continue;
127917 pItem->iCursor = pParse->nTab++;
127918 if( pItem->fg.isSubquery ){
127919 assert( pItem->u4.pSubq!=0 );
127920 assert( pItem->u4.pSubq->pSelect!=0 );
127921 assert( pItem->u4.pSubq->pSelect->pSrc!=0 );
127922 sqlite3SrcListAssignCursors(pParse, pItem->u4.pSubq->pSelect->pSrc);
127941 SQLITE_PRIVATE Select *sqlite3SubqueryDetach(sqlite3 *db, SrcItem *pItem){
127943 assert( pItem!=0 );
127944 assert( pItem->fg.isSubquery );
127945 pSel = pItem->u4.pSubq->pSelect;
127946 sqlite3DbFree(db, pItem->u4.pSubq);
127947 pItem->u4.pSubq = 0;
127948 pItem->fg.isSubquery = 0;
127957 SrcItem *pItem;
127960 for(pItem=pList->a, i=0; i<pList->nSrc; i++, pItem++){
127963 assert( !pItem->fg.isIndexedBy || !pItem->fg.isTabFunc );
127964 assert( !pItem->fg.isCte || !pItem->fg.isIndexedBy );
127965 assert( !pItem->fg.fixedSchema || !pItem->fg.isSubquery );
127966 assert( !pItem->fg.isSubquery || (pItem->u4.pSubq!=0 &&
127967 pItem->u4.pSubq->pSelect!=0) );
127969 if( pItem->zName ) sqlite3DbNNFreeNN(db, pItem->zName);
127970 if( pItem->zAlias ) sqlite3DbNNFreeNN(db, pItem->zAlias);
127971 if( pItem->fg.isSubquery ){
127972 sqlite3SubqueryDelete(db, pItem->u4.pSubq);
127973 }else if( pItem->fg.fixedSchema==0 && pItem->u4.zDatabase!=0 ){
127974 sqlite3DbNNFreeNN(db, pItem->u4.zDatabase);
127976 if( pItem->fg.isIndexedBy ) sqlite3DbFree(db, pItem->u1.zIndexedBy);
127977 if( pItem->fg.isTabFunc ) sqlite3ExprListDelete(db, pItem->u1.pFuncArg);
127978 sqlite3DeleteTable(db, pItem->pSTab);
127979 if( pItem->fg.isUsing ){
127980 sqlite3IdListDelete(db, pItem->u3.pUsing);
127981 }else if( pItem->u3.pOn ){
127982 sqlite3ExprDelete(db, pItem->u3.pOn);
128005 SrcItem *pItem, /* Item to which the subquery is to be attached */
128011 assert( pItem->fg.isSubquery==0 );
128012 if( pItem->fg.fixedSchema ){
128013 pItem->u4.pSchema = 0;
128014 pItem->fg.fixedSchema = 0;
128015 }else if( pItem->u4.zDatabase!=0 ){
128016 sqlite3DbFree(pParse->db, pItem->u4.zDatabase);
128017 pItem->u4.zDatabase = 0;
128023 p = pItem->u4.pSubq = sqlite3DbMallocRawNN(pParse->db, sizeof(Subquery));
128028 pItem->fg.isSubquery = 1;
128061 SrcItem *pItem;
128074 pItem = &p->a[p->nSrc-1];
128076 assert( pItem->zName==0 || pDatabase!=0 );
128077 if( IN_RENAME_OBJECT && pItem->zName ){
128079 sqlite3RenameTokenMap(pParse, pItem->zName, pToken);
128083 pItem->zAlias = sqlite3NameFromToken(db, pAlias);
128087 if( sqlite3SrcItemAttachSubquery(pParse, pItem, pSubquery, 0) ){
128089 pItem->fg.isNestedFrom = 1;
128094 assert( pItem->fg.isUsing==0 );
128096 pItem->u3.pOn = 0;
128098 pItem->fg.isUsing = 1;
128099 pItem->u3.pUsing = pOnUsing->pUsing;
128101 pItem->u3.pOn = pOnUsing->pOn;
128119 SrcItem *pItem;
128121 pItem = &p->a[p->nSrc-1];
128122 assert( pItem->fg.notIndexed==0 );
128123 assert( pItem->fg.isIndexedBy==0 );
128124 assert( pItem->fg.isTabFunc==0 );
128128 pItem->fg.notIndexed = 1;
128130 pItem->u1.zIndexedBy = sqlite3NameFromToken(pParse->db, pIndexedBy);
128131 pItem->fg.isIndexedBy = 1;
128132 assert( pItem->fg.isCte==0 ); /* No collision on union u2 */
128164 SrcItem *pItem = &p->a[p->nSrc-1];
128165 assert( pItem->fg.notIndexed==0 );
128166 assert( pItem->fg.isIndexedBy==0 );
128167 assert( pItem->fg.isTabFunc==0 );
128168 pItem->u1.pFuncArg = pList;
128169 pItem->fg.isTabFunc = 1;
129378 SrcItem *pItem = pSrc->a;
129380 assert( pItem && pSrc->nSrc>=1 );
129381 pTab = sqlite3LocateTableItem(pParse, 0, pItem);
129382 if( pItem->pSTab ) sqlite3DeleteTable(pParse->db, pItem->pSTab);
129383 pItem->pSTab = pTab;
129384 pItem->fg.notCte = 1;
129387 if( pItem->fg.isIndexedBy && sqlite3IndexedByLookup(pParse, pItem) ){
134372 SrcItem *pItem = pSrc->a;
134373 pItem->pSTab = pFKey->pFrom;
134374 pItem->zName = pFKey->pFrom->zName;
134375 pItem->pSTab->nTabRef++;
134376 pItem->iCursor = pParse->nTab++;
134407 pItem->zName = 0;
135401 SrcItem *pItem = &pVal->pSrc->a[0];
135402 assert( (pItem->fg.isSubquery && pItem->u4.pSubq!=0) || pParse->nErr );
135403 if( pItem->fg.isSubquery ){
135404 sqlite3VdbeEndCoroutine(pParse->pVdbe, pItem->u4.pSubq->regReturn);
135405 sqlite3VdbeJumpHere(pParse->pVdbe, pItem->u4.pSubq->addrFillSub - 1);
135935 SrcItem *pItem = &pSelect->pSrc->a[0];
135937 assert( pItem->fg.isSubquery );
135938 pSubq = pItem->u4.pSubq;
135944 ExplainQueryPlan((pParse, 0, "SCAN %S", pItem));
137834 SrcItem *pItem; /* An element of pSelect->pSrc */
137903 pItem = pSelect->pSrc->a;
137904 pSrc = sqlite3LocateTableItem(pParse, 0, pItem);
145195 SQLITE_PRIVATE void sqlite3SrcItemColumnUsed(SrcItem *pItem, int iCol){
145196 assert( pItem!=0 );
145197 assert( (int)pItem->fg.isNestedFrom == IsNestedFrom(pItem) );
145198 if( pItem->fg.isNestedFrom ){
145200 assert( pItem->fg.isSubquery );
145201 assert( pItem->u4.pSubq!=0 );
145202 assert( pItem->u4.pSubq->pSelect!=0 );
145203 pResults = pItem->u4.pSubq->pSelect->pEList;
145916 struct ExprList_item *pItem = &pEList->a[i];
145917 if( pItem->u.x.iOrderByCol==0 ){
145918 Expr *pExpr = pItem->pExpr;
145958 pItem->fg.bSorterRef = 1;
146458 struct ExprList_item *pItem;
146466 for(i=iStart, pItem=pList->a+iStart; i<nExpr; i++, pItem++){
146467 pInfo->aColl[i-iStart] = sqlite3ExprNNCollSeq(pParse, pItem->pExpr);
146468 pInfo->aSortFlags[i-iStart] = pItem->fg.sortFlags;
147447 struct ExprList_item *pItem = &pOrderBy->a[i];
147448 Expr *pTerm = pItem->pExpr;
147454 pColl = multiSelectCollSeq(pParse, p, pItem->u.x.iOrderByCol-1);
148417 struct ExprList_item *pItem;
148418 for(j=0, pItem=pOrderBy->a; j<nOrderBy; j++, pItem++){
148419 assert( pItem!=0 );
148420 assert( pItem->u.x.iOrderByCol>0 );
148421 if( pItem->u.x.iOrderByCol==i ) break;
148443 struct ExprList_item *pItem;
148445 for(i=1, pItem=pOrderBy->a; i<=nOrderBy; i++, pItem++){
148446 assert( pItem!=0 );
148447 assert( pItem->u.x.iOrderByCol>0 );
148448 assert( pItem->u.x.iOrderByCol<=p->pEList->nExpr );
148449 aPermute[i] = pItem->u.x.iOrderByCol - 1;
148851 SrcItem *pItem;
148862 for(i=pSrc->nSrc, pItem=pSrc->a; i>0; i--, pItem++){
148863 if( pItem->fg.isSubquery ){
148864 substSelect(pSubst, pItem->u4.pSubq->pSelect, 1);
148866 if( pItem->fg.isTabFunc ){
148867 substExprList(pSubst, pItem->u1.pFuncArg);
148883 SrcItem *pItem;
148885 pItem = pWalker->u.pSrcItem;
148886 if( pItem->iCursor!=pExpr->iTable ) return WRC_Continue;
148888 pItem->colUsed |= sqlite3ExprColUsed(pExpr);
148927 SrcItem *pItem;
148928 for(i=0, pItem=pSrc->a; i<pSrc->nSrc; i++, pItem++){
148931 assert( pItem->iCursor < aCsrMap[0] );
148932 if( !pItem->fg.isRecursive || aCsrMap[pItem->iCursor+1]==0 ){
148933 aCsrMap[pItem->iCursor+1] = pParse->nTab++;
148935 pItem->iCursor = aCsrMap[pItem->iCursor+1];
148936 if( pItem->fg.isSubquery ){
148937 for(p=pItem->u4.pSubq->pSelect; p; p=p->pPrior){
149549 SrcItem *pItem = &pSrc->a[i+iFrom];
149550 assert( pItem->fg.isTabFunc==0 );
149551 assert( pItem->fg.isSubquery
149552 || pItem->fg.fixedSchema
149553 || pItem->u4.zDatabase==0 );
149554 if( pItem->fg.isUsing ) sqlite3IdListDelete(db, pItem->u3.pUsing);
149555 *pItem = pSubSrc->a[i];
149556 pItem->fg.jointype |= ltorj;
150227 static int disableUnusedSubqueryResultColumns(SrcItem *pItem){
150236 assert( pItem!=0 );
150237 if( pItem->fg.isCorrelated || pItem->fg.isCte ){
150240 assert( pItem->pSTab!=0 );
150241 pTab = pItem->pSTab;
150242 assert( pItem->fg.isSubquery );
150243 pSub = pItem->u4.pSubq->pSelect;
150264 colUsed = pItem->colUsed;
150534 SrcItem *pItem, /* FROM clause element to resolve */
150537 const char *zName = pItem->zName;
150539 assert( pItem->fg.fixedSchema || pItem->u4.zDatabase==0 );
150699 SrcItem *pItem = &pSrc->a[i];
150700 if( pItem->zName!=0
150701 && !pItem->fg.hadSchema
150702 && ALWAYS( !pItem->fg.isSubquery )
150703 && (pItem->fg.fixedSchema || pItem->u4.zDatabase==0)
150704 && 0==sqlite3StrICmp(pItem->zName, pCte->zName)
150706 pItem->pSTab = pTab;
150708 pItem->fg.isRecursive = 1;
150717 pItem->iCursor = iRecTab;
151850 struct ExprList_item *pItem;
151853 for(j=0, pItem=pList->a; !pColl && j<nArg; j++, pItem++){
151854 pColl = sqlite3ExprCollSeq(pParse, pItem->pExpr);
151996 SrcItem *pItem;
152004 pItem = &pTabList->a[iFirst++];
152005 if( !pItem->fg.isSubquery ) continue;
152006 if( pItem->fg.viaCoroutine ) continue;
152007 if( pItem->zName==0 ) continue;
152008 assert( pItem->pSTab!=0 );
152010 if( pItem->pSTab->pSchema!=pThis->pSTab->pSchema ) continue;
152011 if( sqlite3_stricmp(pItem->zName, pThis->zName)!=0 ) continue;
152012 pS1 = pItem->u4.pSubq->pSelect;
152013 if( pItem->pSTab->pSchema==0 && pSel->selId!=pS1->selId ){
152023 return pItem;
152193 SrcItem *pItem = &pTabList->a[i];
152194 if( pItem->fg.isCte ){
152195 const CteUse *pCteUse = pItem->u2.pCteUse;
152201 if( isSelfJoinView(pTabList, pItem, i+1, pTabList->nSrc)!=0 ){
152212 if( pItem->fg.jointype & (JT_OUTER|JT_CROSS) ) return 0; /* (1c-ii) */
152215 pItem--;
152216 if( pItem->fg.isSubquery ) return 0; /* (1c-i) */
152401 SrcItem *pItem = &pTabList->a[i];
152402 Select *pSub = pItem->fg.isSubquery ? pItem->u4.pSubq->pSelect : 0;
152403 Table *pTab = pItem->pSTab;
152422 if( (pItem->fg.jointype & (JT_LEFT|JT_LTORJ))!=0
152423 && sqlite3ExprImpliesNonNullRow(p->pWhere, pItem->iCursor,
152424 pItem->fg.jointype & JT_LTORJ)
152427 if( pItem->fg.jointype & JT_LEFT ){
152428 if( pItem->fg.jointype & JT_RIGHT ){
152431 pItem->fg.jointype &= ~JT_LEFT;
152435 pItem->fg.jointype &= ~(JT_LEFT|JT_OUTER);
152436 unsetJoinExpr(p->pWhere, pItem->iCursor, 0);
152439 if( pItem->fg.jointype & JT_LTORJ ){
152477 if( pItem->fg.isCte && pItem->u2.pCteUse->eM10d==M10d_Yes ){
152625 SrcItem *pItem = &pTabList->a[i];
152652 if( pItem->colUsed==0 && pItem->zName!=0 ){
152654 if( pItem->fg.fixedSchema ){
152655 int iDb = sqlite3SchemaToIndex(pParse->db, pItem->u4.pSchema);
152657 }else if( pItem->fg.isSubquery ){
152660 zDb = pItem->u4.zDatabase;
152662 sqlite3AuthCheck(pParse, SQLITE_READ, pItem->zName, "", zDb);
152668 if( pItem->fg.isSubquery==0 ) continue;
152669 pSubq = pItem->u4.pSubq;
152690 && (pItem->fg.isCte==0
152691 || (pItem->u2.pCteUse->eM10d!=M10d_Yes && pItem->u2.pCteUse->nUse<2))
152711 && disableUnusedSubqueryResultColumns(pItem)
152724 pParse->zAuthContext = pItem->zName;
152736 VdbeComment((v, "%!S", pItem));
152739 ExplainQueryPlan((pParse, 1, "CO-ROUTINE %!S", pItem));
152741 pItem->pSTab->nRowLogEst = pSub->nSelectRow;
152742 pItem->fg.viaCoroutine = 1;
152745 VdbeComment((v, "end %!S", pItem));
152748 }else if( pItem->fg.isCte && pItem->u2.pCteUse->addrM9e>0 ){
152753 CteUse *pCteUse = pItem->u2.pCteUse;
152755 if( pItem->iCursor!=pCteUse->iCur ){
152756 sqlite3VdbeAddOp2(v, OP_OpenDup, pItem->iCursor, pCteUse->iCur);
152757 VdbeComment((v, "%!S", pItem));
152760 }else if( (pPrior = isSelfJoinView(pTabList, pItem, 0, i))!=0 ){
152771 sqlite3VdbeAddOp2(v, OP_OpenDup, pItem->iCursor, pPrior->iCursor);
152786 pItem->fg.isMaterialized = 1;
152787 if( pItem->fg.isCorrelated==0 ){
152792 VdbeComment((v, "materialize %!S", pItem));
152794 VdbeNoopComment((v, "materialize %!S", pItem));
152796 sqlite3SelectDestInit(&dest, SRT_EphemTab, pItem->iCursor);
152798 ExplainQueryPlan2(addrExplain, (pParse, 1, "MATERIALIZE %!S", pItem));
152800 pItem->pSTab->nRowLogEst = pSub->nSelectRow;
152803 VdbeComment((v, "end %!S", pItem));
152807 if( pItem->fg.isCte && pItem->fg.isCorrelated==0 ){
152808 CteUse *pCteUse = pItem->u2.pCteUse;
152811 pCteUse->iCur = pItem->iCursor;
153049 struct ExprList_item *pItem; /* For looping over expression in a list */
153051 for(k=p->pEList->nExpr, pItem=p->pEList->a; k>0; k--, pItem++){
153052 pItem->u.x.iAlias = 0;
153054 for(k=pGroupBy->nExpr, pItem=pGroupBy->a; k>0; k--, pItem++){
153055 pItem->u.x.iAlias = 0;
154805 struct ExprList_item *pItem = &pNew->a[pNew->nExpr-1];
154806 pItem->zEName = sqlite3DbStrDup(db, pTab->aCol[jj].zCnName);
154807 pItem->fg.eEName = ENAME_NAME;
154814 struct ExprList_item *pItem = &pNew->a[pNew->nExpr-1];
154815 pItem->zEName = sqlite3DbStrDup(db, pList->a[i].zEName);
154816 pItem->fg.eEName = pList->a[i].fg.eEName;
159731 SrcItem *pItem = &pTabList->a[pLevel->iFrom];
159753 sqlite3_str_appendf(&str, "%s %S", isSearch ? "SEARCH" : "SCAN", pItem);
159761 if( !HasRowid(pItem->pSTab) && IsPrimaryKeyIndex(pIdx) ){
159782 const Table *pTab = pItem->pTab;
159810 if( pItem->fg.jointype & JT_LEFT ){
159885 SrcItem *pItem = &pWInfo->pTabList->a[pLevel->iFrom];
159896 sqlite3_str_appendf(&str, "BLOOM FILTER ON %S (", pItem);
159899 const Table *pTab = pItem->pSTab;
164422 SrcItem *pItem, /* The FROM clause term to process */
164430 if( pItem->fg.isTabFunc==0 ) return;
164431 pTab = pItem->pSTab;
164433 pArgs = pItem->u1.pFuncArg;
164446 pColRef->iTable = pItem->iCursor;
164450 pItem->colUsed |= sqlite3ExprColUsed(pColRef);
164454 if( pItem->fg.jointype & (JT_LEFT|JT_RIGHT) ){
164455 testcase( pItem->fg.jointype & JT_LEFT ); /* testtag-20230227a */
164456 testcase( pItem->fg.jointype & JT_RIGHT ); /* testtag-20230227b */
164459 testcase( pItem->fg.jointype & JT_LTORJ ); /* testtag-20230227c */
164462 sqlite3SetJoinExpr(pTerm, pItem->iCursor, joinType);
165767 const SrcItem *pItem;
165786 pItem = &pTabList->a[iSrc];
165787 assert( pItem!=0 );
165788 pTab = pItem->pSTab;
165819 assert( pIdx->pTable==pItem->pSTab );
166913 SrcItem *pItem = pWInfo->pTabList->a + p->iTab;
166914 Table *pTab = pItem->pSTab;
166919 pItem->zAlias ? pItem->zAlias : pTab->zName);
168286 SrcItem *pItem /* The FROM clause entry for the table */
168288 assert( pItem==0 || (pItem->fg.jointype & JT_RIGHT)==0 );
168289 assert( (pItem==0 || pMask==0) && (pMask!=0 || pItem!=0) );
168292 wherePartIdxExpr(pParse, pIdx, pPart->pRight, pMask, iIdxCur, pItem);
168307 if( pItem ){
168311 int bNullRow = (pItem->fg.jointype&(JT_LEFT|JT_LTORJ))!=0;
168313 p->iDataCur = pItem->iCursor;
169182 SrcItem *pItem;
169188 pItem = pWInfo->pTabList->a + pNew->iTab;
169189 iCur = pItem->iCursor;
169192 if( pItem->fg.jointype & JT_RIGHT ) return SQLITE_OK;
169231 if( IsVirtual(pItem->pSTab) ){
169301 SrcItem *pItem;
169320 for(iTab=0, pItem=pTabList->a; pItem<pEnd; iTab++, pItem++){
169324 pNew->maskSelf = sqlite3WhereGetMask(&pWInfo->sMaskSet, pItem->iCursor);
169326 || (pItem->fg.jointype & (JT_OUTER|JT_CROSS|JT_LTORJ))!=0
169338 if( pItem->fg.jointype & JT_LTORJ ) hasRightJoin = 1;
169340 bFirstPastRJ = (pItem->fg.jointype & JT_RIGHT)!=0;
169345 if( IsVirtual(pItem->pSTab) ){
169347 for(p=&pItem[1]; p<pEnd; p++){
170655 SrcItem *pItem;
170668 pItem = pWInfo->pTabList->a;
170669 pTab = pItem->pSTab;
170671 if( pItem->fg.isIndexedBy || pItem->fg.notIndexed ){
170672 testcase( pItem->fg.isIndexedBy );
170673 testcase( pItem->fg.notIndexed );
170676 iCur = pItem->iCursor;
170709 if( pIdx->isCovering || (pItem->colUsed & pIdx->colNotIdxed)==0 ){
170857 SrcItem *pItem;
170861 pItem = &pWInfo->pTabList->a[pLoop->iTab];
170862 if( (pItem->fg.jointype & (JT_LEFT|JT_RIGHT))!=JT_LEFT ) continue;
170873 || pTerm->pExpr->w.iJoin!=pItem->iCursor
170880 && NEVER(pTerm->pExpr->w.iJoin==pItem->iCursor)
170935 SrcItem *pItem = &pWInfo->pTabList->a[pLoop->iTab];
170936 Table *pTab = pItem->pSTab;
170945 testcase( pItem->fg.jointype & JT_LEFT );
171031 SrcItem *pItem = &pWInfo->pTabList->a[ii];
171032 if( !pItem->fg.isCte
171033 || pItem->u2.pCteUse->eM10d!=M10d_Yes
171034 || NEVER(pItem->fg.isSubquery==0)
171035 || pItem->u4.pSubq->pSelect->pOrderBy==0