pSorter          14586 ext/sqlite3/libsqlite/sqlite3.c   VdbeSorter *pSorter;  /* Sorter object for OP_SorterOpen cursors */
pSorter          70911 ext/sqlite3/libsqlite/sqlite3.c #define isSorter(x) ((x)->pSorter!=0)
pSorter          74311 ext/sqlite3/libsqlite/sqlite3.c   assert( pC->pSorter );
pSorter          75889 ext/sqlite3/libsqlite/sqlite3.c   if( pC->pSorter ){
pSorter          75890 ext/sqlite3/libsqlite/sqlite3.c     sqlite3VdbeSorterReset(db, pC->pSorter);
pSorter          78196 ext/sqlite3/libsqlite/sqlite3.c   VdbeSorter *pSorter;            /* Sorter that owns this sub-task */
pSorter          78513 ext/sqlite3/libsqlite/sqlite3.c   if( pFile->iEof<=(i64)(pTask->pSorter->db->nMaxSorterMmap) ){
pSorter          78549 ext/sqlite3/libsqlite/sqlite3.c     int pgsz = pTask->pSorter->pgsz;
pSorter          78663 ext/sqlite3/libsqlite/sqlite3.c     sqlite3VdbeRecordUnpack(pTask->pSorter->pKeyInfo, nKey2, pKey2, r2);
pSorter          78690 ext/sqlite3/libsqlite/sqlite3.c     sqlite3VdbeRecordUnpack(pTask->pSorter->pKeyInfo, nKey2, pKey2, r2);
pSorter          78724 ext/sqlite3/libsqlite/sqlite3.c     if( pTask->pSorter->pKeyInfo->nField>1 ){
pSorter          78730 ext/sqlite3/libsqlite/sqlite3.c     if( pTask->pSorter->pKeyInfo->aSortOrder[0] ){
pSorter          78794 ext/sqlite3/libsqlite/sqlite3.c     if( pTask->pSorter->pKeyInfo->nField>1 ){
pSorter          78799 ext/sqlite3/libsqlite/sqlite3.c   }else if( pTask->pSorter->pKeyInfo->aSortOrder[0] ){
pSorter          78833 ext/sqlite3/libsqlite/sqlite3.c   VdbeSorter *pSorter;            /* The new sorter */
pSorter          78865 ext/sqlite3/libsqlite/sqlite3.c   pSorter = (VdbeSorter*)sqlite3DbMallocZero(db, sz + szKeyInfo);
pSorter          78866 ext/sqlite3/libsqlite/sqlite3.c   pCsr->pSorter = pSorter;
pSorter          78867 ext/sqlite3/libsqlite/sqlite3.c   if( pSorter==0 ){
pSorter          78870 ext/sqlite3/libsqlite/sqlite3.c     pSorter->pKeyInfo = pKeyInfo = (KeyInfo*)((u8*)pSorter + sz);
pSorter          78877 ext/sqlite3/libsqlite/sqlite3.c     pSorter->pgsz = pgsz = sqlite3BtreeGetPageSize(db->aDb[0].pBt);
pSorter          78878 ext/sqlite3/libsqlite/sqlite3.c     pSorter->nTask = nWorker + 1;
pSorter          78879 ext/sqlite3/libsqlite/sqlite3.c     pSorter->iPrev = nWorker-1;
pSorter          78880 ext/sqlite3/libsqlite/sqlite3.c     pSorter->bUseThreads = (pSorter->nTask>1);
pSorter          78881 ext/sqlite3/libsqlite/sqlite3.c     pSorter->db = db;
pSorter          78882 ext/sqlite3/libsqlite/sqlite3.c     for(i=0; i<pSorter->nTask; i++){
pSorter          78883 ext/sqlite3/libsqlite/sqlite3.c       SortSubtask *pTask = &pSorter->aTask[i];
pSorter          78884 ext/sqlite3/libsqlite/sqlite3.c       pTask->pSorter = pSorter;
pSorter          78889 ext/sqlite3/libsqlite/sqlite3.c       pSorter->mnPmaSize = szPma * pgsz;
pSorter          78892 ext/sqlite3/libsqlite/sqlite3.c       pSorter->mxPmaSize = MIN((i64)mxCache*pgsz, SQLITE_MAX_PMASZ);
pSorter          78899 ext/sqlite3/libsqlite/sqlite3.c         assert( pSorter->iMemory==0 );
pSorter          78900 ext/sqlite3/libsqlite/sqlite3.c         pSorter->nMemory = pgsz;
pSorter          78901 ext/sqlite3/libsqlite/sqlite3.c         pSorter->list.aMemory = (u8*)sqlite3Malloc(pgsz);
pSorter          78902 ext/sqlite3/libsqlite/sqlite3.c         if( !pSorter->list.aMemory ) rc = SQLITE_NOMEM;
pSorter          78909 ext/sqlite3/libsqlite/sqlite3.c       pSorter->typeMask = SORTER_TYPE_INTEGER | SORTER_TYPE_TEXT;
pSorter          78958 ext/sqlite3/libsqlite/sqlite3.c   int iTask = (pTask - pTask->pSorter->aTask);
pSorter          78959 ext/sqlite3/libsqlite/sqlite3.c   sqlite3OsCurrentTimeInt64(pTask->pSorter->db->pVfs, &t);
pSorter          78972 ext/sqlite3/libsqlite/sqlite3.c   int iTask = (pTask - pTask->pSorter->aTask);
pSorter          78973 ext/sqlite3/libsqlite/sqlite3.c   sqlite3OsCurrentTimeInt64(pTask->pSorter->db->pVfs, &t);
pSorter          78983 ext/sqlite3/libsqlite/sqlite3.c     sqlite3OsCurrentTimeInt64(pTask->pSorter->db->pVfs, &t);
pSorter          79032 ext/sqlite3/libsqlite/sqlite3.c static int vdbeSorterJoinAll(VdbeSorter *pSorter, int rcin){
pSorter          79043 ext/sqlite3/libsqlite/sqlite3.c   for(i=pSorter->nTask-1; i>=0; i--){
pSorter          79044 ext/sqlite3/libsqlite/sqlite3.c     SortSubtask *pTask = &pSorter->aTask[i];
pSorter          79116 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE void sqlite3VdbeSorterReset(sqlite3 *db, VdbeSorter *pSorter){
pSorter          79118 ext/sqlite3/libsqlite/sqlite3.c   (void)vdbeSorterJoinAll(pSorter, SQLITE_OK);
pSorter          79119 ext/sqlite3/libsqlite/sqlite3.c   assert( pSorter->bUseThreads || pSorter->pReader==0 );
pSorter          79121 ext/sqlite3/libsqlite/sqlite3.c   if( pSorter->pReader ){
pSorter          79122 ext/sqlite3/libsqlite/sqlite3.c     vdbePmaReaderClear(pSorter->pReader);
pSorter          79123 ext/sqlite3/libsqlite/sqlite3.c     sqlite3DbFree(db, pSorter->pReader);
pSorter          79124 ext/sqlite3/libsqlite/sqlite3.c     pSorter->pReader = 0;
pSorter          79127 ext/sqlite3/libsqlite/sqlite3.c   vdbeMergeEngineFree(pSorter->pMerger);
pSorter          79128 ext/sqlite3/libsqlite/sqlite3.c   pSorter->pMerger = 0;
pSorter          79129 ext/sqlite3/libsqlite/sqlite3.c   for(i=0; i<pSorter->nTask; i++){
pSorter          79130 ext/sqlite3/libsqlite/sqlite3.c     SortSubtask *pTask = &pSorter->aTask[i];
pSorter          79132 ext/sqlite3/libsqlite/sqlite3.c     pTask->pSorter = pSorter;
pSorter          79134 ext/sqlite3/libsqlite/sqlite3.c   if( pSorter->list.aMemory==0 ){
pSorter          79135 ext/sqlite3/libsqlite/sqlite3.c     vdbeSorterRecordFree(0, pSorter->list.pList);
pSorter          79137 ext/sqlite3/libsqlite/sqlite3.c   pSorter->list.pList = 0;
pSorter          79138 ext/sqlite3/libsqlite/sqlite3.c   pSorter->list.szPMA = 0;
pSorter          79139 ext/sqlite3/libsqlite/sqlite3.c   pSorter->bUsePMA = 0;
pSorter          79140 ext/sqlite3/libsqlite/sqlite3.c   pSorter->iMemory = 0;
pSorter          79141 ext/sqlite3/libsqlite/sqlite3.c   pSorter->mxKeysize = 0;
pSorter          79142 ext/sqlite3/libsqlite/sqlite3.c   sqlite3DbFree(db, pSorter->pUnpacked);
pSorter          79143 ext/sqlite3/libsqlite/sqlite3.c   pSorter->pUnpacked = 0;
pSorter          79150 ext/sqlite3/libsqlite/sqlite3.c   VdbeSorter *pSorter = pCsr->pSorter;
pSorter          79151 ext/sqlite3/libsqlite/sqlite3.c   if( pSorter ){
pSorter          79152 ext/sqlite3/libsqlite/sqlite3.c     sqlite3VdbeSorterReset(db, pSorter);
pSorter          79153 ext/sqlite3/libsqlite/sqlite3.c     sqlite3_free(pSorter->list.aMemory);
pSorter          79154 ext/sqlite3/libsqlite/sqlite3.c     sqlite3DbFree(db, pSorter);
pSorter          79155 ext/sqlite3/libsqlite/sqlite3.c     pCsr->pSorter = 0;
pSorter          79219 ext/sqlite3/libsqlite/sqlite3.c         pTask->pSorter->pKeyInfo, 0, 0, &pFree
pSorter          79223 ext/sqlite3/libsqlite/sqlite3.c     pTask->pUnpacked->nField = pTask->pSorter->pKeyInfo->nField;
pSorter          79293 ext/sqlite3/libsqlite/sqlite3.c   pTask->xCompare = vdbeSorterGetCompare(pTask->pSorter);
pSorter          79434 ext/sqlite3/libsqlite/sqlite3.c   sqlite3 *db = pTask->pSorter->db;
pSorter          79470 ext/sqlite3/libsqlite/sqlite3.c     vdbePmaWriterInit(pTask->file.pFd, &writer, pTask->pSorter->pgsz,
pSorter          79582 ext/sqlite3/libsqlite/sqlite3.c static int vdbeSorterFlushPMA(VdbeSorter *pSorter){
pSorter          79584 ext/sqlite3/libsqlite/sqlite3.c   pSorter->bUsePMA = 1;
pSorter          79585 ext/sqlite3/libsqlite/sqlite3.c   return vdbeSorterListToPMA(&pSorter->aTask[0], &pSorter->list);
pSorter          79590 ext/sqlite3/libsqlite/sqlite3.c   int nWorker = (pSorter->nTask-1);
pSorter          79594 ext/sqlite3/libsqlite/sqlite3.c   pSorter->bUsePMA = 1;
pSorter          79605 ext/sqlite3/libsqlite/sqlite3.c     int iTest = (pSorter->iPrev + i + 1) % nWorker;
pSorter          79606 ext/sqlite3/libsqlite/sqlite3.c     pTask = &pSorter->aTask[iTest];
pSorter          79616 ext/sqlite3/libsqlite/sqlite3.c       rc = vdbeSorterListToPMA(&pSorter->aTask[nWorker], &pSorter->list);
pSorter          79624 ext/sqlite3/libsqlite/sqlite3.c       assert( pTask->list.aMemory==0 || pSorter->list.aMemory!=0 );
pSorter          79626 ext/sqlite3/libsqlite/sqlite3.c       pSorter->iPrev = (u8)(pTask - pSorter->aTask);
pSorter          79627 ext/sqlite3/libsqlite/sqlite3.c       pTask->list = pSorter->list;
pSorter          79628 ext/sqlite3/libsqlite/sqlite3.c       pSorter->list.pList = 0;
pSorter          79629 ext/sqlite3/libsqlite/sqlite3.c       pSorter->list.szPMA = 0;
pSorter          79631 ext/sqlite3/libsqlite/sqlite3.c         pSorter->list.aMemory = aMem;
pSorter          79632 ext/sqlite3/libsqlite/sqlite3.c         pSorter->nMemory = sqlite3MallocSize(aMem);
pSorter          79633 ext/sqlite3/libsqlite/sqlite3.c       }else if( pSorter->list.aMemory ){
pSorter          79634 ext/sqlite3/libsqlite/sqlite3.c         pSorter->list.aMemory = sqlite3Malloc(pSorter->nMemory);
pSorter          79635 ext/sqlite3/libsqlite/sqlite3.c         if( !pSorter->list.aMemory ) return SQLITE_NOMEM;
pSorter          79653 ext/sqlite3/libsqlite/sqlite3.c   VdbeSorter *pSorter = pCsr->pSorter;
pSorter          79664 ext/sqlite3/libsqlite/sqlite3.c     pSorter->typeMask &= SORTER_TYPE_INTEGER;
pSorter          79666 ext/sqlite3/libsqlite/sqlite3.c     pSorter->typeMask &= SORTER_TYPE_TEXT;
pSorter          79668 ext/sqlite3/libsqlite/sqlite3.c     pSorter->typeMask = 0;
pSorter          79671 ext/sqlite3/libsqlite/sqlite3.c   assert( pSorter );
pSorter          79691 ext/sqlite3/libsqlite/sqlite3.c   if( pSorter->mxPmaSize ){
pSorter          79692 ext/sqlite3/libsqlite/sqlite3.c     if( pSorter->list.aMemory ){
pSorter          79693 ext/sqlite3/libsqlite/sqlite3.c       bFlush = pSorter->iMemory && (pSorter->iMemory+nReq) > pSorter->mxPmaSize;
pSorter          79696 ext/sqlite3/libsqlite/sqlite3.c           (pSorter->list.szPMA > pSorter->mxPmaSize)
pSorter          79697 ext/sqlite3/libsqlite/sqlite3.c        || (pSorter->list.szPMA > pSorter->mnPmaSize && sqlite3HeapNearlyFull())
pSorter          79701 ext/sqlite3/libsqlite/sqlite3.c       rc = vdbeSorterFlushPMA(pSorter);
pSorter          79702 ext/sqlite3/libsqlite/sqlite3.c       pSorter->list.szPMA = 0;
pSorter          79703 ext/sqlite3/libsqlite/sqlite3.c       pSorter->iMemory = 0;
pSorter          79704 ext/sqlite3/libsqlite/sqlite3.c       assert( rc!=SQLITE_OK || pSorter->list.pList==0 );
pSorter          79708 ext/sqlite3/libsqlite/sqlite3.c   pSorter->list.szPMA += nPMA;
pSorter          79709 ext/sqlite3/libsqlite/sqlite3.c   if( nPMA>pSorter->mxKeysize ){
pSorter          79710 ext/sqlite3/libsqlite/sqlite3.c     pSorter->mxKeysize = nPMA;
pSorter          79713 ext/sqlite3/libsqlite/sqlite3.c   if( pSorter->list.aMemory ){
pSorter          79714 ext/sqlite3/libsqlite/sqlite3.c     int nMin = pSorter->iMemory + nReq;
pSorter          79716 ext/sqlite3/libsqlite/sqlite3.c     if( nMin>pSorter->nMemory ){
pSorter          79718 ext/sqlite3/libsqlite/sqlite3.c       int nNew = pSorter->nMemory * 2;
pSorter          79720 ext/sqlite3/libsqlite/sqlite3.c       if( nNew > pSorter->mxPmaSize ) nNew = pSorter->mxPmaSize;
pSorter          79723 ext/sqlite3/libsqlite/sqlite3.c       aNew = sqlite3Realloc(pSorter->list.aMemory, nNew);
pSorter          79725 ext/sqlite3/libsqlite/sqlite3.c       pSorter->list.pList = (SorterRecord*)(
pSorter          79726 ext/sqlite3/libsqlite/sqlite3.c           aNew + ((u8*)pSorter->list.pList - pSorter->list.aMemory)
pSorter          79728 ext/sqlite3/libsqlite/sqlite3.c       pSorter->list.aMemory = aNew;
pSorter          79729 ext/sqlite3/libsqlite/sqlite3.c       pSorter->nMemory = nNew;
pSorter          79732 ext/sqlite3/libsqlite/sqlite3.c     pNew = (SorterRecord*)&pSorter->list.aMemory[pSorter->iMemory];
pSorter          79733 ext/sqlite3/libsqlite/sqlite3.c     pSorter->iMemory += ROUND8(nReq);
pSorter          79734 ext/sqlite3/libsqlite/sqlite3.c     pNew->u.iNext = (int)((u8*)(pSorter->list.pList) - pSorter->list.aMemory);
pSorter          79740 ext/sqlite3/libsqlite/sqlite3.c     pNew->u.pNext = pSorter->list.pList;
pSorter          79745 ext/sqlite3/libsqlite/sqlite3.c   pSorter->list.pList = pNew;
pSorter          79767 ext/sqlite3/libsqlite/sqlite3.c   vdbePmaWriterInit(pOut->pFd, &writer, pTask->pSorter->pgsz, iStart);
pSorter          79881 ext/sqlite3/libsqlite/sqlite3.c     pIncr->mxSz = MAX(pTask->pSorter->mxKeysize+9,pTask->pSorter->mxPmaSize/2);
pSorter          80064 ext/sqlite3/libsqlite/sqlite3.c   sqlite3 *db = pTask->pSorter->db;
pSorter          80292 ext/sqlite3/libsqlite/sqlite3.c   VdbeSorter *pSorter,       /* The VDBE cursor that implements the sort */
pSorter          80303 ext/sqlite3/libsqlite/sqlite3.c   assert( pSorter->bUseThreads || pSorter->nTask==1 );
pSorter          80304 ext/sqlite3/libsqlite/sqlite3.c   if( pSorter->nTask>1 ){
pSorter          80305 ext/sqlite3/libsqlite/sqlite3.c     pMain = vdbeMergeEngineNew(pSorter->nTask);
pSorter          80310 ext/sqlite3/libsqlite/sqlite3.c   for(iTask=0; rc==SQLITE_OK && iTask<pSorter->nTask; iTask++){
pSorter          80311 ext/sqlite3/libsqlite/sqlite3.c     SortSubtask *pTask = &pSorter->aTask[iTask];
pSorter          80370 ext/sqlite3/libsqlite/sqlite3.c static int vdbeSorterSetupMerge(VdbeSorter *pSorter){
pSorter          80372 ext/sqlite3/libsqlite/sqlite3.c   SortSubtask *pTask0 = &pSorter->aTask[0];
pSorter          80375 ext/sqlite3/libsqlite/sqlite3.c   sqlite3 *db = pTask0->pSorter->db;
pSorter          80377 ext/sqlite3/libsqlite/sqlite3.c   SorterCompare xCompare = vdbeSorterGetCompare(pSorter);
pSorter          80378 ext/sqlite3/libsqlite/sqlite3.c   for(i=0; i<pSorter->nTask; i++){
pSorter          80379 ext/sqlite3/libsqlite/sqlite3.c     pSorter->aTask[i].xCompare = xCompare;
pSorter          80383 ext/sqlite3/libsqlite/sqlite3.c   rc = vdbeSorterMergeTreeBuild(pSorter, &pMain);
pSorter          80386 ext/sqlite3/libsqlite/sqlite3.c     assert( pSorter->bUseThreads==0 || pSorter->nTask>1 );
pSorter          80387 ext/sqlite3/libsqlite/sqlite3.c     if( pSorter->bUseThreads ){
pSorter          80390 ext/sqlite3/libsqlite/sqlite3.c       SortSubtask *pLast = &pSorter->aTask[pSorter->nTask-1];
pSorter          80394 ext/sqlite3/libsqlite/sqlite3.c         pSorter->pReader = pReadr;
pSorter          80401 ext/sqlite3/libsqlite/sqlite3.c           for(iTask=0; iTask<(pSorter->nTask-1); iTask++){
pSorter          80408 ext/sqlite3/libsqlite/sqlite3.c           for(iTask=0; rc==SQLITE_OK && iTask<pSorter->nTask; iTask++){
pSorter          80420 ext/sqlite3/libsqlite/sqlite3.c                 (p->pIncr->pTask==&pSorter->aTask[iTask])             /* a */
pSorter          80421 ext/sqlite3/libsqlite/sqlite3.c              && (iTask!=pSorter->nTask-1 || p->pIncr->bUseThread==0)  /* b */
pSorter          80435 ext/sqlite3/libsqlite/sqlite3.c       pSorter->pMerger = pMain;
pSorter          80453 ext/sqlite3/libsqlite/sqlite3.c   VdbeSorter *pSorter = pCsr->pSorter;
pSorter          80456 ext/sqlite3/libsqlite/sqlite3.c   assert( pSorter );
pSorter          80461 ext/sqlite3/libsqlite/sqlite3.c   if( pSorter->bUsePMA==0 ){
pSorter          80462 ext/sqlite3/libsqlite/sqlite3.c     if( pSorter->list.pList ){
pSorter          80464 ext/sqlite3/libsqlite/sqlite3.c       rc = vdbeSorterSort(&pSorter->aTask[0], &pSorter->list);
pSorter          80475 ext/sqlite3/libsqlite/sqlite3.c   assert( pSorter->list.pList );
pSorter          80476 ext/sqlite3/libsqlite/sqlite3.c   rc = vdbeSorterFlushPMA(pSorter);
pSorter          80479 ext/sqlite3/libsqlite/sqlite3.c   rc = vdbeSorterJoinAll(pSorter, rc);
pSorter          80485 ext/sqlite3/libsqlite/sqlite3.c   assert( pSorter->pReader==0 );
pSorter          80487 ext/sqlite3/libsqlite/sqlite3.c     rc = vdbeSorterSetupMerge(pSorter);
pSorter          80499 ext/sqlite3/libsqlite/sqlite3.c   VdbeSorter *pSorter = pCsr->pSorter;
pSorter          80502 ext/sqlite3/libsqlite/sqlite3.c   assert( pSorter->bUsePMA || (pSorter->pReader==0 && pSorter->pMerger==0) );
pSorter          80503 ext/sqlite3/libsqlite/sqlite3.c   if( pSorter->bUsePMA ){
pSorter          80504 ext/sqlite3/libsqlite/sqlite3.c     assert( pSorter->pReader==0 || pSorter->pMerger==0 );
pSorter          80505 ext/sqlite3/libsqlite/sqlite3.c     assert( pSorter->bUseThreads==0 || pSorter->pReader );
pSorter          80506 ext/sqlite3/libsqlite/sqlite3.c     assert( pSorter->bUseThreads==1 || pSorter->pMerger );
pSorter          80508 ext/sqlite3/libsqlite/sqlite3.c     if( pSorter->bUseThreads ){
pSorter          80509 ext/sqlite3/libsqlite/sqlite3.c       rc = vdbePmaReaderNext(pSorter->pReader);
pSorter          80510 ext/sqlite3/libsqlite/sqlite3.c       *pbEof = (pSorter->pReader->pFd==0);
pSorter          80514 ext/sqlite3/libsqlite/sqlite3.c       assert( pSorter->pMerger!=0 );
pSorter          80515 ext/sqlite3/libsqlite/sqlite3.c       assert( pSorter->pMerger->pTask==(&pSorter->aTask[0]) );
pSorter          80516 ext/sqlite3/libsqlite/sqlite3.c       rc = vdbeMergeEngineStep(pSorter->pMerger, pbEof);
pSorter          80519 ext/sqlite3/libsqlite/sqlite3.c     SorterRecord *pFree = pSorter->list.pList;
pSorter          80520 ext/sqlite3/libsqlite/sqlite3.c     pSorter->list.pList = pFree->u.pNext;
pSorter          80522 ext/sqlite3/libsqlite/sqlite3.c     if( pSorter->list.aMemory==0 ) vdbeSorterRecordFree(db, pFree);
pSorter          80523 ext/sqlite3/libsqlite/sqlite3.c     *pbEof = !pSorter->list.pList;
pSorter          80534 ext/sqlite3/libsqlite/sqlite3.c   const VdbeSorter *pSorter,      /* Sorter object */
pSorter          80538 ext/sqlite3/libsqlite/sqlite3.c   if( pSorter->bUsePMA ){
pSorter          80541 ext/sqlite3/libsqlite/sqlite3.c     if( pSorter->bUseThreads ){
pSorter          80542 ext/sqlite3/libsqlite/sqlite3.c       pReader = pSorter->pReader;
pSorter          80546 ext/sqlite3/libsqlite/sqlite3.c       pReader = &pSorter->pMerger->aReadr[pSorter->pMerger->aTree[1]];
pSorter          80551 ext/sqlite3/libsqlite/sqlite3.c     *pnKey = pSorter->list.pList->nVal;
pSorter          80552 ext/sqlite3/libsqlite/sqlite3.c     pKey = SRVAL(pSorter->list.pList);
pSorter          80561 ext/sqlite3/libsqlite/sqlite3.c   VdbeSorter *pSorter = pCsr->pSorter;
pSorter          80564 ext/sqlite3/libsqlite/sqlite3.c   pKey = vdbeSorterRowkey(pSorter, &nKey);
pSorter          80597 ext/sqlite3/libsqlite/sqlite3.c   VdbeSorter *pSorter = pCsr->pSorter;
pSorter          80598 ext/sqlite3/libsqlite/sqlite3.c   UnpackedRecord *r2 = pSorter->pUnpacked;
pSorter          80605 ext/sqlite3/libsqlite/sqlite3.c     r2 = pSorter->pUnpacked = sqlite3VdbeAllocUnpackedRecord(pKeyInfo,0,0,&p);
pSorter          80606 ext/sqlite3/libsqlite/sqlite3.c     assert( pSorter->pUnpacked==(UnpackedRecord*)p );
pSorter          80612 ext/sqlite3/libsqlite/sqlite3.c   pKey = vdbeSorterRowkey(pSorter, &nKey);