Lines Matching refs:pSort

149483   SortCtx *pSort,  argument
149488 int nOBSat = pSort->nOBSat;
149491 if( pSort->pDeferredRowLoad ){
149492 innerLoopLoadRow(pParse, pSelect, pSort->pDeferredRowLoad);
149504 SortCtx *pSort, /* Information about the ORDER BY clause */ argument
149512 int bSeq = ((pSort->sortFlags & SORTFLAG_UseSorter)==0);
149513 int nExpr = pSort->pOrderBy->nExpr; /* No. of ORDER BY terms */
149517 int nOBSat = pSort->nOBSat; /* ORDER BY terms to skip */
149540 pSort->addrPush = sqlite3VdbeCurrentAddr(v);
149552 pSort->labelDone = sqlite3VdbeMakeLabel(pParse);
149553 sqlite3ExprCodeExprList(pParse, pSort->pOrderBy, regBase, regOrigData,
149556 sqlite3VdbeAddOp2(v, OP_Sequence, pSort->iECursor, regBase+nExpr);
149569 regRecord = makeSorterRecord(pParse, pSort, pSelect, regBase, nBase);
149571 pParse->nMem += pSort->nOBSat;
149572 nKey = nExpr - pSort->nOBSat + bSeq;
149576 addrFirst = sqlite3VdbeAddOp1(v, OP_SequenceTest, pSort->iECursor);
149579 sqlite3VdbeAddOp3(v, OP_Compare, regPrevKey, regBase, pSort->nOBSat);
149580 pOp = sqlite3VdbeGetOp(v, pSort->addrSortIndex);
149587 pOp->p4.pKeyInfo = sqlite3KeyInfoFromExprList(pParse,pSort->pOrderBy,nOBSat,
149592 pSort->labelBkOut = sqlite3VdbeMakeLabel(pParse);
149593 pSort->regReturn = ++pParse->nMem;
149594 sqlite3VdbeAddOp2(v, OP_Gosub, pSort->regReturn, pSort->labelBkOut);
149595 sqlite3VdbeAddOp1(v, OP_ResetSorter, pSort->iECursor);
149597 sqlite3VdbeAddOp2(v, OP_IfNot, iLimit, pSort->labelDone);
149601 sqlite3ExprCodeMove(pParse, regBase, regPrevKey, pSort->nOBSat);
149620 int iCsr = pSort->iECursor;
149630 regRecord = makeSorterRecord(pParse, pSort, pSelect, regBase, nBase);
149632 if( pSort->sortFlags & SORTFLAG_UseSorter ){
149637 sqlite3VdbeAddOp4Int(v, op, pSort->iECursor, regRecord,
149641 pSort->labelOBLopt ? pSort->labelOBLopt : sqlite3VdbeCurrentAddr(v));
149644 pSort->addrPushEnd = sqlite3VdbeCurrentAddr(v)-1;
149843 SortCtx *pSort, /* Sorter context */ argument
149864 if( pSort->aDefer[j].iCsr==pExpr->iTable ) break;
149867 if( nDefer==ArraySize(pSort->aDefer) ){
149887 pSort->aDefer[nDefer].pTab = pExpr->y.pTab;
149888 pSort->aDefer[nDefer].iCsr = pExpr->iTable;
149889 pSort->aDefer[nDefer].nKey = nKey;
149897 pSort->nDefer = (u8)nDefer;
149915 SortCtx *pSort, /* If not NULL, info on how to process ORDER BY */ argument
149941 if( pSort && pSort->pOrderBy==0 ) pSort = 0;
149942 if( pSort==0 && !hasDistinct ){
149952 if( pSort ){
149953 nPrefixReg = pSort->pOrderBy->nExpr;
149954 if( !(pSort->sortFlags & SORTFLAG_UseSorter) ) nPrefixReg++;
149988 if( pSort && hasDistinct==0 && eDest!=SRT_EphemTab && eDest!=SRT_Table ){
149997 for(i=pSort->nOBSat; i<pSort->pOrderBy->nExpr; i++){
149999 if( (j = pSort->pOrderBy->a[i].u.x.iOrderByCol)>0 ){
150000 p->pEList->a[j-1].u.x.iOrderByCol = i+1-pSort->nOBSat;
150004 selectExprDefer(pParse, pSort, p->pEList, &pExtra);
150011 VdbeOp *pOp = sqlite3VdbeGetOp(v, pSort->addrSortIndex);
150012 pOp->p2 += (pExtra->nExpr - pSort->nDefer);
150013 pOp->p4.pKeyInfo->nAllField += (pExtra->nExpr - pSort->nDefer);
150052 assert( pSort!=0 );
150054 pSort->pDeferredRowLoad = &sRowLoadInfo;
150071 if( pSort==0 ){
150110 assert( pSort==0 );
150113 if( pSort ){
150115 pushOntoSorter(pParse, pSort, p, r1+nPrefixReg, regOrig, 1, nPrefixReg);
150128 if( pSort ){
150130 pParse, pSort, p, regResult, regOrig, nResultCol, nPrefixReg);
150157 if( pSort ){
150163 pParse, pSort, p, regResult, regOrig, nResultCol, nPrefixReg);
150195 if( pSort ){
150198 pParse, pSort, p, regResult, regOrig, nResultCol, nPrefixReg);
150217 if( pSort ){
150218 pushOntoSorter(pParse, pSort, p, regResult, regOrig, nResultCol,
150294 if( pSort==0 && p->iLimit ){
150448 SortCtx *pSort, /* Information on the ORDER BY clause */ argument
150453 int addrBreak = pSort->labelDone; /* Jump here to exit loop */
150458 ExprList *pOrderBy = pSort->pOrderBy;
150474 nKey = pOrderBy->nExpr - pSort->nOBSat;
150475 if( pSort->nOBSat==0 || nKey==1 ){
150477 "USE TEMP B-TREE FOR %sORDER BY", pSort->nOBSat?"LAST TERM OF ":""
150484 sqlite3VdbeScanStatusRange(v, addrExplain,pSort->addrPush,pSort->addrPushEnd);
150485 sqlite3VdbeScanStatusCounters(v, addrExplain, addrExplain, pSort->addrPush);
150489 if( pSort->labelBkOut ){
150490 sqlite3VdbeAddOp2(v, OP_Gosub, pSort->regReturn, pSort->labelBkOut);
150492 sqlite3VdbeResolveLabel(v, pSort->labelBkOut);
150497 for(i=0; i<pSort->nDefer; i++){
150498 Table *pTab = pSort->aDefer[i].pTab;
150500 sqlite3OpenTable(pParse, pSort->aDefer[i].iCsr, iDb, pTab, OP_OpenRead);
150501 nRefKey = MAX(nRefKey, pSort->aDefer[i].nKey);
150505 iTab = pSort->iECursor;
150521 if( pSort->sortFlags & SORTFLAG_UseSorter ){
150524 if( pSort->labelBkOut ){
150551 if( pSort->nDefer ){
150555 for(i=0; i<pSort->nDefer; i++){
150556 int iCsr = pSort->aDefer[i].iCsr;
150557 Table *pTab = pSort->aDefer[i].pTab;
150558 int nKey = pSort->aDefer[i].nKey;
150655 if( pSort->sortFlags & SORTFLAG_UseSorter ){
150661 if( pSort->regReturn ) sqlite3VdbeAddOp1(v, OP_Return, pSort->regReturn);
177449 ExprList *pSort = 0; local
177481 pSort = exprListAppendList(pParse, 0, pMWin->pPartition, 1);
177482 pSort = exprListAppendList(pParse, pSort, pMWin->pOrderBy, 1);
177483 if( pSort && p->pOrderBy && p->pOrderBy->nExpr<=pSort->nExpr ){
177484 int nSave = pSort->nExpr;
177485 pSort->nExpr = p->pOrderBy->nExpr;
177486 if( sqlite3ExprListCompare(pSort, p->pOrderBy, -1)==0 ){
177490 pSort->nExpr = nSave;
177546 pParse, pSublist, pSrc, pWhere, pGroupBy, pHaving, pSort, 0, 0