Lines Matching refs:pSort

668   SortCtx *pSort,  in makeSorterRecord()  argument
673 int nOBSat = pSort->nOBSat; in makeSorterRecord()
676 if( pSort->pDeferredRowLoad ){ in makeSorterRecord()
677 innerLoopLoadRow(pParse, pSelect, pSort->pDeferredRowLoad); in makeSorterRecord()
689 SortCtx *pSort, /* Information about the ORDER BY clause */ in pushOntoSorter() argument
697 int bSeq = ((pSort->sortFlags & SORTFLAG_UseSorter)==0); in pushOntoSorter()
698 int nExpr = pSort->pOrderBy->nExpr; /* No. of ORDER BY terms */ in pushOntoSorter()
702 int nOBSat = pSort->nOBSat; /* ORDER BY terms to skip */ in pushOntoSorter()
733 pSort->labelDone = sqlite3VdbeMakeLabel(pParse); in pushOntoSorter()
734 sqlite3ExprCodeExprList(pParse, pSort->pOrderBy, regBase, regOrigData, in pushOntoSorter()
737 sqlite3VdbeAddOp2(v, OP_Sequence, pSort->iECursor, regBase+nExpr); in pushOntoSorter()
750 regRecord = makeSorterRecord(pParse, pSort, pSelect, regBase, nBase); in pushOntoSorter()
752 pParse->nMem += pSort->nOBSat; in pushOntoSorter()
753 nKey = nExpr - pSort->nOBSat + bSeq; in pushOntoSorter()
757 addrFirst = sqlite3VdbeAddOp1(v, OP_SequenceTest, pSort->iECursor); in pushOntoSorter()
760 sqlite3VdbeAddOp3(v, OP_Compare, regPrevKey, regBase, pSort->nOBSat); in pushOntoSorter()
761 pOp = sqlite3VdbeGetOp(v, pSort->addrSortIndex); in pushOntoSorter()
768 pOp->p4.pKeyInfo = sqlite3KeyInfoFromExprList(pParse,pSort->pOrderBy,nOBSat, in pushOntoSorter()
773 pSort->labelBkOut = sqlite3VdbeMakeLabel(pParse); in pushOntoSorter()
774 pSort->regReturn = ++pParse->nMem; in pushOntoSorter()
775 sqlite3VdbeAddOp2(v, OP_Gosub, pSort->regReturn, pSort->labelBkOut); in pushOntoSorter()
776 sqlite3VdbeAddOp1(v, OP_ResetSorter, pSort->iECursor); in pushOntoSorter()
778 sqlite3VdbeAddOp2(v, OP_IfNot, iLimit, pSort->labelDone); in pushOntoSorter()
782 sqlite3ExprCodeMove(pParse, regBase, regPrevKey, pSort->nOBSat); in pushOntoSorter()
801 int iCsr = pSort->iECursor; in pushOntoSorter()
811 regRecord = makeSorterRecord(pParse, pSort, pSelect, regBase, nBase); in pushOntoSorter()
813 if( pSort->sortFlags & SORTFLAG_UseSorter ){ in pushOntoSorter()
818 sqlite3VdbeAddOp4Int(v, op, pSort->iECursor, regRecord, in pushOntoSorter()
822 pSort->labelOBLopt ? pSort->labelOBLopt : sqlite3VdbeCurrentAddr(v)); in pushOntoSorter()
1021 SortCtx *pSort, /* Sorter context */ in selectExprDefer() argument
1042 if( pSort->aDefer[j].iCsr==pExpr->iTable ) break; in selectExprDefer()
1045 if( nDefer==ArraySize(pSort->aDefer) ){ in selectExprDefer()
1065 pSort->aDefer[nDefer].pTab = pExpr->y.pTab; in selectExprDefer()
1066 pSort->aDefer[nDefer].iCsr = pExpr->iTable; in selectExprDefer()
1067 pSort->aDefer[nDefer].nKey = nKey; in selectExprDefer()
1075 pSort->nDefer = (u8)nDefer; in selectExprDefer()
1093 SortCtx *pSort, /* If not NULL, info on how to process ORDER BY */ in selectInnerLoop() argument
1119 if( pSort && pSort->pOrderBy==0 ) pSort = 0; in selectInnerLoop()
1120 if( pSort==0 && !hasDistinct ){ in selectInnerLoop()
1130 if( pSort ){ in selectInnerLoop()
1131 nPrefixReg = pSort->pOrderBy->nExpr; in selectInnerLoop()
1132 if( !(pSort->sortFlags & SORTFLAG_UseSorter) ) nPrefixReg++; in selectInnerLoop()
1166 if( pSort && hasDistinct==0 && eDest!=SRT_EphemTab && eDest!=SRT_Table ){ in selectInnerLoop()
1175 for(i=pSort->nOBSat; i<pSort->pOrderBy->nExpr; i++){ in selectInnerLoop()
1177 if( (j = pSort->pOrderBy->a[i].u.x.iOrderByCol)>0 ){ in selectInnerLoop()
1178 p->pEList->a[j-1].u.x.iOrderByCol = i+1-pSort->nOBSat; in selectInnerLoop()
1182 selectExprDefer(pParse, pSort, p->pEList, &pExtra); in selectInnerLoop()
1189 VdbeOp *pOp = sqlite3VdbeGetOp(v, pSort->addrSortIndex); in selectInnerLoop()
1190 pOp->p2 += (pExtra->nExpr - pSort->nDefer); in selectInnerLoop()
1191 pOp->p4.pKeyInfo->nAllField += (pExtra->nExpr - pSort->nDefer); in selectInnerLoop()
1230 assert( pSort!=0 ); in selectInnerLoop()
1232 pSort->pDeferredRowLoad = &sRowLoadInfo; in selectInnerLoop()
1249 if( pSort==0 ){ in selectInnerLoop()
1304 assert( pSort==0 ); in selectInnerLoop()
1307 if( pSort ){ in selectInnerLoop()
1309 pushOntoSorter(pParse, pSort, p, r1+nPrefixReg, regOrig, 1, nPrefixReg); in selectInnerLoop()
1322 if( pSort ){ in selectInnerLoop()
1324 pParse, pSort, p, regResult, regOrig, nResultCol, nPrefixReg); in selectInnerLoop()
1351 if( pSort ){ in selectInnerLoop()
1357 pParse, pSort, p, regResult, regOrig, nResultCol, nPrefixReg); in selectInnerLoop()
1383 if( pSort ){ in selectInnerLoop()
1386 pParse, pSort, p, regResult, regOrig, nResultCol, nPrefixReg); in selectInnerLoop()
1400 if( pSort ){ in selectInnerLoop()
1401 pushOntoSorter(pParse, pSort, p, regResult, regOrig, nResultCol, in selectInnerLoop()
1477 if( pSort==0 && p->iLimit ){ in selectInnerLoop()
1628 SortCtx *pSort, /* Information on the ORDER BY clause */ in generateSortTail() argument
1633 int addrBreak = pSort->labelDone; /* Jump here to exit loop */ in generateSortTail()
1638 ExprList *pOrderBy = pSort->pOrderBy; in generateSortTail()
1652 if( pSort->labelBkOut ){ in generateSortTail()
1653 sqlite3VdbeAddOp2(v, OP_Gosub, pSort->regReturn, pSort->labelBkOut); in generateSortTail()
1655 sqlite3VdbeResolveLabel(v, pSort->labelBkOut); in generateSortTail()
1660 for(i=0; i<pSort->nDefer; i++){ in generateSortTail()
1661 Table *pTab = pSort->aDefer[i].pTab; in generateSortTail()
1663 sqlite3OpenTable(pParse, pSort->aDefer[i].iCsr, iDb, pTab, OP_OpenRead); in generateSortTail()
1664 nRefKey = MAX(nRefKey, pSort->aDefer[i].nKey); in generateSortTail()
1668 iTab = pSort->iECursor; in generateSortTail()
1684 nKey = pOrderBy->nExpr - pSort->nOBSat; in generateSortTail()
1685 if( pSort->sortFlags & SORTFLAG_UseSorter ){ in generateSortTail()
1688 if( pSort->labelBkOut ){ in generateSortTail()
1715 if( pSort->nDefer ){ in generateSortTail()
1719 for(i=0; i<pSort->nDefer; i++){ in generateSortTail()
1720 int iCsr = pSort->aDefer[i].iCsr; in generateSortTail()
1721 Table *pTab = pSort->aDefer[i].pTab; in generateSortTail()
1722 int nKey = pSort->aDefer[i].nKey; in generateSortTail()
1818 if( pSort->sortFlags & SORTFLAG_UseSorter ){ in generateSortTail()
1823 if( pSort->regReturn ) sqlite3VdbeAddOp1(v, OP_Return, pSort->regReturn); in generateSortTail()