Lines Matching refs:pTask

80336   SortSubtask *pTask;        /* Used by this thread only */
80475 SortSubtask *pTask; /* Task that owns this merger */
80691 static int vdbeSorterMapFile(SortSubtask *pTask, SorterFile *pFile, u8 **pp){
80693 if( pFile->iEof<=(i64)(pTask->pSorter->db->nMaxSorterMmap) ){
80709 SortSubtask *pTask, /* Task context */
80727 rc = vdbeSorterMapFile(pTask, pFile, &pReadr->aMap);
80729 int pgsz = pTask->pSorter->pgsz;
80767 pIncr->pTask, pReadr, &pIncr->aFile[0], pIncr->iStartOff
80803 SortSubtask *pTask, /* Task context */
80816 rc = vdbePmaReaderSeek(pTask, pReadr, pFile, iStart);
80836 SortSubtask *pTask, /* Subtask context (for pKeyInfo) */
80841 UnpackedRecord *r2 = pTask->pUnpacked;
80843 sqlite3VdbeRecordUnpack(pTask->pSorter->pKeyInfo, nKey2, pKey2, r2);
80863 SortSubtask *pTask, /* Subtask context (for pKeyInfo) */
80868 UnpackedRecord *r2 = pTask->pUnpacked;
80870 sqlite3VdbeRecordUnpack(pTask->pSorter->pKeyInfo, nKey2, pKey2, r2);
80882 SortSubtask *pTask, /* Subtask context (for pKeyInfo) */
80904 if( pTask->pSorter->pKeyInfo->nField>1 ){
80906 pTask, pbKey2Cached, pKey1, nKey1, pKey2, nKey2
80910 if( pTask->pSorter->pKeyInfo->aSortOrder[0] ){
80923 SortSubtask *pTask, /* Subtask context (for pKeyInfo) */
80974 if( pTask->pSorter->pKeyInfo->nField>1 ){
80976 pTask, pbKey2Cached, pKey1, nKey1, pKey2, nKey2
80979 }else if( pTask->pSorter->pKeyInfo->aSortOrder[0] ){
81063 SortSubtask *pTask = &pSorter->aTask[i];
81064 pTask->pSorter = pSorter;
81113 static void vdbeSortSubtaskCleanup(sqlite3 *db, SortSubtask *pTask){
81114 sqlite3DbFree(db, pTask->pUnpacked);
81118 if( pTask->list.aMemory ){
81119 sqlite3_free(pTask->list.aMemory);
81123 assert( pTask->list.aMemory==0 );
81124 vdbeSorterRecordFree(0, pTask->list.pList);
81126 if( pTask->file.pFd ){
81127 sqlite3OsCloseFree(pTask->file.pFd);
81129 if( pTask->file2.pFd ){
81130 sqlite3OsCloseFree(pTask->file2.pFd);
81132 memset(pTask, 0, sizeof(SortSubtask));
81136 static void vdbeSorterWorkDebug(SortSubtask *pTask, const char *zEvent){
81138 int iTask = (pTask - pTask->pSorter->aTask);
81139 sqlite3OsCurrentTimeInt64(pTask->pSorter->db->pVfs, &t);
81148 SortSubtask *pTask,
81152 int iTask = (pTask - pTask->pSorter->aTask);
81153 sqlite3OsCurrentTimeInt64(pTask->pSorter->db->pVfs, &t);
81157 SortSubtask *pTask,
81163 sqlite3OsCurrentTimeInt64(pTask->pSorter->db->pVfs, &t);
81178 static int vdbeSorterJoinThread(SortSubtask *pTask){
81180 if( pTask->pThread ){
81182 int bDone = pTask->bDone;
81185 vdbeSorterBlockDebug(pTask, !bDone, "enter");
81186 (void)sqlite3ThreadJoin(pTask->pThread, &pRet);
81187 vdbeSorterBlockDebug(pTask, !bDone, "exit");
81189 assert( pTask->bDone==1 );
81190 pTask->bDone = 0;
81191 pTask->pThread = 0;
81200 SortSubtask *pTask, /* Thread will use this task object */
81204 assert( pTask->pThread==0 && pTask->bDone==0 );
81205 return sqlite3ThreadCreate(&pTask->pThread, xTask, pIn);
81224 SortSubtask *pTask = &pSorter->aTask[i];
81225 int rc2 = vdbeSorterJoinThread(pTask);
81232 # define vdbeSorterJoinThread(pTask) SQLITE_OK
81255 pNew->pTask = 0;
81283 vdbeSorterJoinThread(pIncr->pTask);
81310 SortSubtask *pTask = &pSorter->aTask[i];
81311 vdbeSortSubtaskCleanup(db, pTask);
81312 pTask->pSorter = pSorter;
81395 static int vdbeSortAllocUnpacked(SortSubtask *pTask){
81396 if( pTask->pUnpacked==0 ){
81398 pTask->pUnpacked = sqlite3VdbeAllocUnpackedRecord(
81399 pTask->pSorter->pKeyInfo, 0, 0, &pFree
81401 assert( pTask->pUnpacked==(UnpackedRecord*)pFree );
81403 pTask->pUnpacked->nField = pTask->pSorter->pKeyInfo->nField;
81404 pTask->pUnpacked->errCode = 0;
81415 SortSubtask *pTask, /* Calling thread context */
81426 res = pTask->xCompare(
81427 pTask, &bCached, SRVAL(p1), p1->nVal, SRVAL(p2), p2->nVal
81463 static int vdbeSorterSort(SortSubtask *pTask, SorterList *pList){
81469 rc = vdbeSortAllocUnpacked(pTask);
81473 pTask->xCompare = vdbeSorterGetCompare(pTask->pSorter);
81495 vdbeSorterMerge(pTask, p, aSlot[i], &p);
81504 vdbeSorterMerge(pTask, p, aSlot[i], &p);
81509 assert( pTask->pUnpacked->errCode==SQLITE_OK
81510 || pTask->pUnpacked->errCode==SQLITE_NOMEM
81512 return pTask->pUnpacked->errCode;
81613 static int vdbeSorterListToPMA(SortSubtask *pTask, SorterList *pList){
81614 sqlite3 *db = pTask->pSorter->db;
81621 i64 iSz = pList->szPMA + sqlite3VarintLen(pList->szPMA) + pTask->file.iEof;
81624 vdbeSorterWorkDebug(pTask, "enter");
81629 if( pTask->file.pFd==0 ){
81630 rc = vdbeSorterOpenTempFile(db, 0, &pTask->file.pFd);
81631 assert( rc!=SQLITE_OK || pTask->file.pFd );
81632 assert( pTask->file.iEof==0 );
81633 assert( pTask->nPMA==0 );
81638 vdbeSorterExtendFile(db, pTask->file.pFd, pTask->file.iEof+pList->szPMA+9);
81643 rc = vdbeSorterSort(pTask, pList);
81650 vdbePmaWriterInit(pTask->file.pFd, &writer, pTask->pSorter->pgsz,
81651 pTask->file.iEof);
81652 pTask->nPMA++;
81661 rc = vdbePmaWriterFinish(&writer, &pTask->file.iEof);
81664 vdbeSorterWorkDebug(pTask, "exit");
81666 assert( rc!=SQLITE_OK || pTask->file.iEof==iSz );
81683 SortSubtask *pTask = pMerger->pTask;
81708 iRes = pTask->xCompare(pTask, &bCached,
81741 return (rc==SQLITE_OK ? pTask->pUnpacked->errCode : rc);
81749 SortSubtask *pTask = (SortSubtask*)pCtx;
81751 assert( pTask->bDone==0 );
81752 rc = vdbeSorterListToPMA(pTask, &pTask->list);
81753 pTask->bDone = 1;
81769 SortSubtask *pTask = 0; /* Thread context used to create new PMA */
81786 pTask = &pSorter->aTask[iTest];
81787 if( pTask->bDone ){
81788 rc = vdbeSorterJoinThread(pTask);
81790 if( rc!=SQLITE_OK || pTask->pThread==0 ) break;
81799 u8 *aMem = pTask->list.aMemory;
81800 void *pCtx = (void*)pTask;
81802 assert( pTask->pThread==0 && pTask->bDone==0 );
81803 assert( pTask->list.pList==0 );
81804 assert( pTask->list.aMemory==0 || pSorter->list.aMemory!=0 );
81806 pSorter->iPrev = (u8)(pTask - pSorter->aTask);
81807 pTask->list = pSorter->list;
81818 rc = vdbeSorterCreateThread(pTask, vdbeSorterFlushThread, pCtx);
81940 SortSubtask *pTask = pIncr->pTask;
81945 vdbeSorterPopulateDebug(pTask, "enter");
81947 vdbePmaWriterInit(pOut->pFd, &writer, pTask->pSorter->pgsz, iStart);
81962 assert( pIncr->pMerger->pTask==pTask );
81968 vdbeSorterPopulateDebug(pTask, "exit");
81980 pIncr->pTask->bDone = 1;
81990 return vdbeSorterCreateThread(pIncr->pTask, vdbeIncrPopulateThread, p);
82016 rc = vdbeSorterJoinThread(pIncr->pTask);
82051 SortSubtask *pTask, /* The thread that will be using the new IncrMerger */
82060 pIncr->pTask = pTask;
82061 pIncr->mxSz = MAX(pTask->pSorter->mxKeysize+9,pTask->pSorter->mxPmaSize/2);
82062 pTask->file2.iEof += pIncr->mxSz;
82076 pIncr->pTask->file2.iEof -= pIncr->mxSz;
82115 SortSubtask *pTask = pMerger->pTask;
82118 assert( pTask->pUnpacked!=0 ); /* from vdbeSortSubtaskMain() */
82119 res = pTask->xCompare(
82120 pTask, &bCached, p1->aKey, p1->nKey, p2->aKey, p2->nKey
82170 SortSubtask *pTask, /* Thread that will run pMerger */
82182 assert( pMerger->pTask==0 );
82183 pMerger->pTask = pTask;
82204 return pTask->pUnpacked->errCode;
82243 SortSubtask *pTask = pIncr->pTask;
82244 sqlite3 *db = pTask->pSorter->db;
82249 rc = vdbeMergeEngineInit(pTask, pIncr->pMerger, eMode);
82265 if( pTask->file2.pFd==0 ){
82266 assert( pTask->file2.iEof>0 );
82267 rc = vdbeSorterOpenTempFile(db, pTask->file2.iEof, &pTask->file2.pFd);
82268 pTask->file2.iEof = 0;
82271 pIncr->aFile[1].pFd = pTask->file2.pFd;
82272 pIncr->iStartOff = pTask->file2.iEof;
82273 pTask->file2.iEof += mxSz;
82312 pReader->pIncr->pTask->bDone = 1;
82336 rc = vdbeSorterCreateThread(pIncr->pTask, vdbePmaReaderBgIncrInit, pCtx);
82359 SortSubtask *pTask, /* Sorter task to read from */
82375 rc = vdbePmaReaderInit(pTask, &pTask->file, iOff, pReadr, &nDummy);
82416 SortSubtask *pTask, /* Task context */
82428 rc = vdbeIncrMergerNew(pTask, pLeaf, &pIncr);
82443 rc = vdbeIncrMergerNew(pTask, pNew, &pReadr->pIncr);
82491 SortSubtask *pTask = &pSorter->aTask[iTask];
82492 assert( pTask->nPMA>0 || SQLITE_MAX_WORKER_THREADS>0 );
82493 if( SQLITE_MAX_WORKER_THREADS==0 || pTask->nPMA ){
82495 int nDepth = vdbeSorterTreeDepth(pTask->nPMA);
82498 if( pTask->nPMA<=SORTER_MAX_MERGE_COUNT ){
82499 rc = vdbeMergeEngineLevel0(pTask, pTask->nPMA, &iReadOff, &pRoot);
82505 for(i=0; i<pTask->nPMA && rc==SQLITE_OK; i += SORTER_MAX_MERGE_COUNT){
82509 nReader = MIN(pTask->nPMA - i, SORTER_MAX_MERGE_COUNT);
82510 rc = vdbeMergeEngineLevel0(pTask, nReader, &iReadOff, &pMerger);
82512 rc = vdbeSorterAddToTree(pTask, nDepth, iSeq++, pRoot, pMerger);
82520 rc = vdbeIncrMergerNew(pTask, pRoot, &pMain->aReadr[iTask].pIncr);
82585 assert( pIncr->pTask!=pLast );
82600 (p->pIncr->pTask==&pSorter->aTask[iTask]) /* a */
82695 assert( pSorter->pMerger->pTask==(&pSorter->aTask[0]) );