Lines Matching refs:pSorter

12612   VdbeSorter *pSorter;  /* Sorter object for OP_SorterOpen cursors */
63170 # define isSorter(x) ((x)->pSorter!=0)
70539 VdbeSorter *pSorter, /* Sorter object */
70546 assert( pSorter->iWriteOff>iStart );
70548 pIter->pFile = pSorter->pTemp1;
70556 rc = vdbeSorterReadVarint(pSorter->pTemp1, &pIter->iReadOff, &nByte);
70590 VdbeSorter *pSorter = pCsr->pSorter;
70591 UnpackedRecord *r2 = pSorter->pUnpacked;
70619 VdbeSorter *pSorter = pCsr->pSorter;
70626 assert( iOut<pSorter->nTree && iOut>0 );
70628 if( iOut>=(pSorter->nTree/2) ){
70629 i1 = (iOut - pSorter->nTree/2) * 2;
70632 i1 = pSorter->aTree[iOut*2];
70633 i2 = pSorter->aTree[iOut*2+1];
70636 p1 = &pSorter->aIter[i1];
70637 p2 = &pSorter->aIter[i2];
70645 assert( pCsr->pSorter->pUnpacked!=0 ); /* allocated in vdbeSorterMerge() */
70656 pSorter->aTree[iOut] = iRes;
70666 VdbeSorter *pSorter; /* The new sorter */
70670 pCsr->pSorter = pSorter = sqlite3DbMallocZero(db, sizeof(VdbeSorter));
70671 if( pSorter==0 ){
70675 pSorter->pUnpacked = sqlite3VdbeAllocUnpackedRecord(pCsr->pKeyInfo, 0, 0, &d);
70676 if( pSorter->pUnpacked==0 ) return SQLITE_NOMEM;
70677 assert( pSorter->pUnpacked==(UnpackedRecord *)d );
70681 pSorter->mnPmaSize = SORTER_MIN_WORKING * pgsz;
70684 pSorter->mxPmaSize = mxCache * pgsz;
70706 VdbeSorter *pSorter = pCsr->pSorter;
70707 if( pSorter ){
70708 if( pSorter->aIter ){
70710 for(i=0; i<pSorter->nTree; i++){
70711 vdbeSorterIterZero(db, &pSorter->aIter[i]);
70713 sqlite3DbFree(db, pSorter->aIter);
70715 if( pSorter->pTemp1 ){
70716 sqlite3OsCloseFree(pSorter->pTemp1);
70718 vdbeSorterRecordFree(db, pSorter->pRecord);
70719 sqlite3DbFree(db, pSorter->pUnpacked);
70720 sqlite3DbFree(db, pSorter);
70721 pCsr->pSorter = 0;
70782 VdbeSorter *pSorter = pCsr->pSorter;
70789 p = pSorter->pRecord;
70805 pSorter->pRecord = p;
70827 VdbeSorter *pSorter = pCsr->pSorter;
70829 if( pSorter->nInMemory==0 ){
70830 assert( pSorter->pRecord==0 );
70837 if( rc==SQLITE_OK && pSorter->pTemp1==0 ){
70838 rc = vdbeSorterOpenTempFile(db, &pSorter->pTemp1);
70839 assert( rc!=SQLITE_OK || pSorter->pTemp1 );
70840 assert( pSorter->iWriteOff==0 );
70841 assert( pSorter->nPMA==0 );
70845 i64 iOff = pSorter->iWriteOff;
70850 pSorter->nPMA++;
70851 rc = vdbeSorterWriteVarint(pSorter->pTemp1, pSorter->nInMemory, &iOff);
70852 for(p=pSorter->pRecord; rc==SQLITE_OK && p; p=pNext){
70854 rc = vdbeSorterWriteVarint(pSorter->pTemp1, p->nVal, &iOff);
70857 rc = sqlite3OsWrite(pSorter->pTemp1, p->pVal, p->nVal, iOff);
70866 ** pSorter->nInMemory. */
70867 assert( rc!=SQLITE_OK || pSorter->nInMemory==(
70868 iOff-pSorter->iWriteOff-sqlite3VarintLen(pSorter->nInMemory)
70871 pSorter->iWriteOff = iOff;
70875 rc = sqlite3OsWrite(pSorter->pTemp1, eightZeros, 8, iOff);
70877 pSorter->pRecord = p;
70891 VdbeSorter *pSorter = pCsr->pSorter;
70895 assert( pSorter );
70896 pSorter->nInMemory += sqlite3VarintLen(pVal->n) + pVal->n;
70905 pNew->pNext = pSorter->pRecord;
70906 pSorter->pRecord = pNew;
70918 if( rc==SQLITE_OK && pSorter->mxPmaSize>0 && (
70919 (pSorter->nInMemory>pSorter->mxPmaSize)
70920 || (pSorter->nInMemory>pSorter->mnPmaSize && sqlite3HeapNearlyFull())
70923 pSorter->nInMemory = 0;
70937 VdbeSorter *pSorter = pCsr->pSorter;
70944 VdbeSorterIter *pIter = &pSorter->aIter[i];
70945 rc = vdbeSorterIterInit(db, pSorter, pSorter->iReadOff, pIter, &nByte);
70946 pSorter->iReadOff = pIter->iEof;
70947 assert( rc!=SQLITE_OK || pSorter->iReadOff<=pSorter->iWriteOff );
70948 if( rc!=SQLITE_OK || pSorter->iReadOff>=pSorter->iWriteOff ) break;
70952 for(i=pSorter->nTree-1; rc==SQLITE_OK && i>0; i--){
70965 VdbeSorter *pSorter = pCsr->pSorter;
70973 assert( pSorter );
70978 if( pSorter->nPMA==0 ){
70979 *pbEof = !pSorter->pRecord;
70980 assert( pSorter->aTree==0 );
70989 nIter = pSorter->nPMA;
70994 pSorter->aIter = (VdbeSorterIter *)sqlite3DbMallocZero(db, nByte);
70995 if( !pSorter->aIter ) return SQLITE_NOMEM;
70996 pSorter->aTree = (int *)&pSorter->aIter[N];
70997 pSorter->nTree = N;
71003 rc==SQLITE_OK && iNew*SORTER_MAX_MERGE_COUNT<pSorter->nPMA;
71018 assert( rc!=SQLITE_OK || pSorter->aIter[ pSorter->aTree[1] ].pFile );
71019 if( rc!=SQLITE_OK || pSorter->nPMA<=SORTER_MAX_MERGE_COUNT ){
71037 VdbeSorterIter *pIter = &pSorter->aIter[ pSorter->aTree[1] ];
71049 if( pSorter->nPMA<=SORTER_MAX_MERGE_COUNT ){
71052 sqlite3_file *pTmp = pSorter->pTemp1;
71053 pSorter->nPMA = iNew;
71054 pSorter->pTemp1 = pTemp2;
71056 pSorter->iWriteOff = iWrite2;
71057 pSorter->iReadOff = 0;
71065 *pbEof = (pSorter->aIter[pSorter->aTree[1]].pFile==0);
71073 VdbeSorter *pSorter = pCsr->pSorter;
71076 if( pSorter->aTree ){
71077 int iPrev = pSorter->aTree[1];/* Index of iterator to advance */
71080 rc = vdbeSorterIterNext(db, &pSorter->aIter[iPrev]);
71081 for(i=(pSorter->nTree+iPrev)/2; rc==SQLITE_OK && i>0; i=i/2){
71085 *pbEof = (pSorter->aIter[pSorter->aTree[1]].pFile==0);
71087 SorterRecord *pFree = pSorter->pRecord;
71088 pSorter->pRecord = pFree->pNext;
71091 *pbEof = !pSorter->pRecord;
71102 VdbeSorter *pSorter, /* Sorter object */
71106 if( pSorter->aTree ){
71108 pIter = &pSorter->aIter[ pSorter->aTree[1] ];
71112 *pnKey = pSorter->pRecord->nVal;
71113 pKey = pSorter->pRecord->pVal;
71122 VdbeSorter *pSorter = pCsr->pSorter;
71125 pKey = vdbeSorterRowkey(pSorter, &nKey);
71151 VdbeSorter *pSorter = pCsr->pSorter;
71154 pKey = vdbeSorterRowkey(pSorter, &nKey);