Lines Matching refs:pTask

258   SortSubtask *pTask;        /* Used by this thread only */  member
397 SortSubtask *pTask; /* Task that owns this merger */ member
613 static int vdbeSorterMapFile(SortSubtask *pTask, SorterFile *pFile, u8 **pp){ in vdbeSorterMapFile() argument
615 if( pFile->iEof<=(i64)(pTask->pSorter->db->nMaxSorterMmap) ){ in vdbeSorterMapFile()
631 SortSubtask *pTask, /* Task context */ in vdbePmaReaderSeek() argument
649 rc = vdbeSorterMapFile(pTask, pFile, &pReadr->aMap); in vdbePmaReaderSeek()
651 int pgsz = pTask->pSorter->pgsz; in vdbePmaReaderSeek()
689 pIncr->pTask, pReadr, &pIncr->aFile[0], pIncr->iStartOff in vdbePmaReaderNext()
725 SortSubtask *pTask, /* Task context */ in vdbePmaReaderInit() argument
738 rc = vdbePmaReaderSeek(pTask, pReadr, pFile, iStart); in vdbePmaReaderInit()
758 SortSubtask *pTask, /* Subtask context (for pKeyInfo) */ in vdbeSorterCompareTail() argument
763 UnpackedRecord *r2 = pTask->pUnpacked; in vdbeSorterCompareTail()
765 sqlite3VdbeRecordUnpack(pTask->pSorter->pKeyInfo, nKey2, pKey2, r2); in vdbeSorterCompareTail()
785 SortSubtask *pTask, /* Subtask context (for pKeyInfo) */ in vdbeSorterCompare() argument
790 UnpackedRecord *r2 = pTask->pUnpacked; in vdbeSorterCompare()
792 sqlite3VdbeRecordUnpack(pTask->pSorter->pKeyInfo, nKey2, pKey2, r2); in vdbeSorterCompare()
804 SortSubtask *pTask, /* Subtask context (for pKeyInfo) */ in vdbeSorterCompareText() argument
826 if( pTask->pSorter->pKeyInfo->nKeyField>1 ){ in vdbeSorterCompareText()
828 pTask, pbKey2Cached, pKey1, nKey1, pKey2, nKey2 in vdbeSorterCompareText()
832 assert( !(pTask->pSorter->pKeyInfo->aSortFlags[0]&KEYINFO_ORDER_BIGNULL) ); in vdbeSorterCompareText()
833 if( pTask->pSorter->pKeyInfo->aSortFlags[0] ){ in vdbeSorterCompareText()
846 SortSubtask *pTask, /* Subtask context (for pKeyInfo) */ in vdbeSorterCompareInt() argument
896 if( pTask->pSorter->pKeyInfo->nKeyField>1 ){ in vdbeSorterCompareInt()
898 pTask, pbKey2Cached, pKey1, nKey1, pKey2, nKey2 in vdbeSorterCompareInt()
901 }else if( pTask->pSorter->pKeyInfo->aSortFlags[0] ){ in vdbeSorterCompareInt()
902 assert( !(pTask->pSorter->pKeyInfo->aSortFlags[0]&KEYINFO_ORDER_BIGNULL) ); in vdbeSorterCompareInt()
989 SortSubtask *pTask = &pSorter->aTask[i]; in sqlite3VdbeSorterInit() local
990 pTask->pSorter = pSorter; in sqlite3VdbeSorterInit()
1047 static void vdbeSortSubtaskCleanup(sqlite3 *db, SortSubtask *pTask){ in vdbeSortSubtaskCleanup() argument
1048 sqlite3DbFree(db, pTask->pUnpacked); in vdbeSortSubtaskCleanup()
1052 if( pTask->list.aMemory ){ in vdbeSortSubtaskCleanup()
1053 sqlite3_free(pTask->list.aMemory); in vdbeSortSubtaskCleanup()
1057 assert( pTask->list.aMemory==0 ); in vdbeSortSubtaskCleanup()
1058 vdbeSorterRecordFree(0, pTask->list.pList); in vdbeSortSubtaskCleanup()
1060 if( pTask->file.pFd ){ in vdbeSortSubtaskCleanup()
1061 sqlite3OsCloseFree(pTask->file.pFd); in vdbeSortSubtaskCleanup()
1063 if( pTask->file2.pFd ){ in vdbeSortSubtaskCleanup()
1064 sqlite3OsCloseFree(pTask->file2.pFd); in vdbeSortSubtaskCleanup()
1066 memset(pTask, 0, sizeof(SortSubtask)); in vdbeSortSubtaskCleanup()
1070 static void vdbeSorterWorkDebug(SortSubtask *pTask, const char *zEvent){ in vdbeSorterWorkDebug() argument
1072 int iTask = (pTask - pTask->pSorter->aTask); in vdbeSorterWorkDebug()
1073 sqlite3OsCurrentTimeInt64(pTask->pSorter->db->pVfs, &t); in vdbeSorterWorkDebug()
1083 SortSubtask *pTask, in vdbeSorterPopulateDebug() argument
1087 int iTask = (pTask - pTask->pSorter->aTask); in vdbeSorterPopulateDebug()
1088 sqlite3OsCurrentTimeInt64(pTask->pSorter->db->pVfs, &t); in vdbeSorterPopulateDebug()
1092 SortSubtask *pTask, in vdbeSorterBlockDebug() argument
1098 sqlite3OsCurrentTimeInt64(pTask->pSorter->db->pVfs, &t); in vdbeSorterBlockDebug()
1113 static int vdbeSorterJoinThread(SortSubtask *pTask){ in vdbeSorterJoinThread() argument
1115 if( pTask->pThread ){ in vdbeSorterJoinThread()
1117 int bDone = pTask->bDone; in vdbeSorterJoinThread()
1120 vdbeSorterBlockDebug(pTask, !bDone, "enter"); in vdbeSorterJoinThread()
1121 (void)sqlite3ThreadJoin(pTask->pThread, &pRet); in vdbeSorterJoinThread()
1122 vdbeSorterBlockDebug(pTask, !bDone, "exit"); in vdbeSorterJoinThread()
1124 assert( pTask->bDone==1 ); in vdbeSorterJoinThread()
1125 pTask->bDone = 0; in vdbeSorterJoinThread()
1126 pTask->pThread = 0; in vdbeSorterJoinThread()
1135 SortSubtask *pTask, /* Thread will use this task object */ in vdbeSorterCreateThread() argument
1139 assert( pTask->pThread==0 && pTask->bDone==0 ); in vdbeSorterCreateThread()
1140 return sqlite3ThreadCreate(&pTask->pThread, xTask, pIn); in vdbeSorterCreateThread()
1159 SortSubtask *pTask = &pSorter->aTask[i]; in vdbeSorterJoinAll() local
1160 int rc2 = vdbeSorterJoinThread(pTask); in vdbeSorterJoinAll()
1167 # define vdbeSorterJoinThread(pTask) SQLITE_OK argument
1190 pNew->pTask = 0; in vdbeMergeEngineNew()
1218 vdbeSorterJoinThread(pIncr->pTask); in vdbeIncrFree()
1245 SortSubtask *pTask = &pSorter->aTask[i]; in sqlite3VdbeSorterReset() local
1246 vdbeSortSubtaskCleanup(db, pTask); in sqlite3VdbeSorterReset()
1247 pTask->pSorter = pSorter; in sqlite3VdbeSorterReset()
1332 static int vdbeSortAllocUnpacked(SortSubtask *pTask){ in vdbeSortAllocUnpacked() argument
1333 if( pTask->pUnpacked==0 ){ in vdbeSortAllocUnpacked()
1334 pTask->pUnpacked = sqlite3VdbeAllocUnpackedRecord(pTask->pSorter->pKeyInfo); in vdbeSortAllocUnpacked()
1335 if( pTask->pUnpacked==0 ) return SQLITE_NOMEM_BKPT; in vdbeSortAllocUnpacked()
1336 pTask->pUnpacked->nField = pTask->pSorter->pKeyInfo->nKeyField; in vdbeSortAllocUnpacked()
1337 pTask->pUnpacked->errCode = 0; in vdbeSortAllocUnpacked()
1347 SortSubtask *pTask, /* Calling thread context */ in vdbeSorterMerge() argument
1358 res = pTask->xCompare( in vdbeSorterMerge()
1359 pTask, &bCached, SRVAL(p1), p1->nVal, SRVAL(p2), p2->nVal in vdbeSorterMerge()
1402 static int vdbeSorterSort(SortSubtask *pTask, SorterList *pList){ in vdbeSorterSort() argument
1408 rc = vdbeSortAllocUnpacked(pTask); in vdbeSorterSort()
1412 pTask->xCompare = vdbeSorterGetCompare(pTask->pSorter); in vdbeSorterSort()
1430 p = vdbeSorterMerge(pTask, p, aSlot[i]); in vdbeSorterSort()
1440 p = p ? vdbeSorterMerge(pTask, p, aSlot[i]) : aSlot[i]; in vdbeSorterSort()
1444 assert( pTask->pUnpacked->errCode==SQLITE_OK in vdbeSorterSort()
1445 || pTask->pUnpacked->errCode==SQLITE_NOMEM in vdbeSorterSort()
1447 return pTask->pUnpacked->errCode; in vdbeSorterSort()
1548 static int vdbeSorterListToPMA(SortSubtask *pTask, SorterList *pList){ in vdbeSorterListToPMA() argument
1549 sqlite3 *db = pTask->pSorter->db; in vdbeSorterListToPMA()
1556 i64 iSz = pList->szPMA + sqlite3VarintLen(pList->szPMA) + pTask->file.iEof; in vdbeSorterListToPMA()
1559 vdbeSorterWorkDebug(pTask, "enter"); in vdbeSorterListToPMA()
1564 if( pTask->file.pFd==0 ){ in vdbeSorterListToPMA()
1565 rc = vdbeSorterOpenTempFile(db, 0, &pTask->file.pFd); in vdbeSorterListToPMA()
1566 assert( rc!=SQLITE_OK || pTask->file.pFd ); in vdbeSorterListToPMA()
1567 assert( pTask->file.iEof==0 ); in vdbeSorterListToPMA()
1568 assert( pTask->nPMA==0 ); in vdbeSorterListToPMA()
1573 vdbeSorterExtendFile(db, pTask->file.pFd, pTask->file.iEof+pList->szPMA+9); in vdbeSorterListToPMA()
1578 rc = vdbeSorterSort(pTask, pList); in vdbeSorterListToPMA()
1585 vdbePmaWriterInit(pTask->file.pFd, &writer, pTask->pSorter->pgsz, in vdbeSorterListToPMA()
1586 pTask->file.iEof); in vdbeSorterListToPMA()
1587 pTask->nPMA++; in vdbeSorterListToPMA()
1596 rc = vdbePmaWriterFinish(&writer, &pTask->file.iEof); in vdbeSorterListToPMA()
1599 vdbeSorterWorkDebug(pTask, "exit"); in vdbeSorterListToPMA()
1601 assert( rc!=SQLITE_OK || pTask->file.iEof==iSz ); in vdbeSorterListToPMA()
1618 SortSubtask *pTask = pMerger->pTask; in vdbeMergeEngineStep() local
1643 iRes = pTask->xCompare(pTask, &bCached, in vdbeMergeEngineStep()
1676 return (rc==SQLITE_OK ? pTask->pUnpacked->errCode : rc); in vdbeMergeEngineStep()
1684 SortSubtask *pTask = (SortSubtask*)pCtx; in vdbeSorterFlushThread() local
1686 assert( pTask->bDone==0 ); in vdbeSorterFlushThread()
1687 rc = vdbeSorterListToPMA(pTask, &pTask->list); in vdbeSorterFlushThread()
1688 pTask->bDone = 1; in vdbeSorterFlushThread()
1704 SortSubtask *pTask = 0; /* Thread context used to create new PMA */ in vdbeSorterFlushPMA()
1721 pTask = &pSorter->aTask[iTest]; in vdbeSorterFlushPMA()
1722 if( pTask->bDone ){ in vdbeSorterFlushPMA()
1723 rc = vdbeSorterJoinThread(pTask); in vdbeSorterFlushPMA()
1725 if( rc!=SQLITE_OK || pTask->pThread==0 ) break; in vdbeSorterFlushPMA()
1737 assert( pTask!=0 ); in vdbeSorterFlushPMA()
1738 assert( pTask->pThread==0 && pTask->bDone==0 ); in vdbeSorterFlushPMA()
1739 assert( pTask->list.pList==0 ); in vdbeSorterFlushPMA()
1740 assert( pTask->list.aMemory==0 || pSorter->list.aMemory!=0 ); in vdbeSorterFlushPMA()
1742 aMem = pTask->list.aMemory; in vdbeSorterFlushPMA()
1743 pCtx = (void*)pTask; in vdbeSorterFlushPMA()
1744 pSorter->iPrev = (u8)(pTask - pSorter->aTask); in vdbeSorterFlushPMA()
1745 pTask->list = pSorter->list; in vdbeSorterFlushPMA()
1756 rc = vdbeSorterCreateThread(pTask, vdbeSorterFlushThread, pCtx); in vdbeSorterFlushPMA()
1884 SortSubtask *pTask = pIncr->pTask; in vdbeIncrPopulate() local
1889 vdbeSorterPopulateDebug(pTask, "enter"); in vdbeIncrPopulate()
1891 vdbePmaWriterInit(pOut->pFd, &writer, pTask->pSorter->pgsz, iStart); in vdbeIncrPopulate()
1906 assert( pIncr->pMerger->pTask==pTask ); in vdbeIncrPopulate()
1912 vdbeSorterPopulateDebug(pTask, "exit"); in vdbeIncrPopulate()
1924 pIncr->pTask->bDone = 1; in vdbeIncrPopulateThread()
1934 return vdbeSorterCreateThread(pIncr->pTask, vdbeIncrPopulateThread, p); in vdbeIncrBgPopulate()
1960 rc = vdbeSorterJoinThread(pIncr->pTask); in vdbeIncrSwap()
1995 SortSubtask *pTask, /* The thread that will be using the new IncrMerger */ in vdbeIncrMergerNew() argument
2004 pIncr->pTask = pTask; in vdbeIncrMergerNew()
2005 pIncr->mxSz = MAX(pTask->pSorter->mxKeysize+9,pTask->pSorter->mxPmaSize/2); in vdbeIncrMergerNew()
2006 pTask->file2.iEof += pIncr->mxSz; in vdbeIncrMergerNew()
2021 pIncr->pTask->file2.iEof -= pIncr->mxSz; in vdbeIncrMergerSetThreads()
2060 SortSubtask *pTask = pMerger->pTask; in vdbeMergeEngineCompare() local
2063 assert( pTask->pUnpacked!=0 ); /* from vdbeSortSubtaskMain() */ in vdbeMergeEngineCompare()
2064 res = pTask->xCompare( in vdbeMergeEngineCompare()
2065 pTask, &bCached, p1->aKey, p1->nKey, p2->aKey, p2->nKey in vdbeMergeEngineCompare()
2115 SortSubtask *pTask, /* Thread that will run pMerger */ in vdbeMergeEngineInit() argument
2131 assert( pMerger->pTask==0 ); in vdbeMergeEngineInit()
2132 pMerger->pTask = pTask; in vdbeMergeEngineInit()
2154 return pTask->pUnpacked->errCode; in vdbeMergeEngineInit()
2193 SortSubtask *pTask = pIncr->pTask; in vdbePmaReaderIncrMergeInit() local
2194 sqlite3 *db = pTask->pSorter->db; in vdbePmaReaderIncrMergeInit()
2199 rc = vdbeMergeEngineInit(pTask, pIncr->pMerger, eMode); in vdbePmaReaderIncrMergeInit()
2215 if( pTask->file2.pFd==0 ){ in vdbePmaReaderIncrMergeInit()
2216 assert( pTask->file2.iEof>0 ); in vdbePmaReaderIncrMergeInit()
2217 rc = vdbeSorterOpenTempFile(db, pTask->file2.iEof, &pTask->file2.pFd); in vdbePmaReaderIncrMergeInit()
2218 pTask->file2.iEof = 0; in vdbePmaReaderIncrMergeInit()
2221 pIncr->aFile[1].pFd = pTask->file2.pFd; in vdbePmaReaderIncrMergeInit()
2222 pIncr->iStartOff = pTask->file2.iEof; in vdbePmaReaderIncrMergeInit()
2223 pTask->file2.iEof += mxSz; in vdbePmaReaderIncrMergeInit()
2262 pReader->pIncr->pTask->bDone = 1; in vdbePmaReaderBgIncrInit()
2286 rc = vdbeSorterCreateThread(pIncr->pTask, vdbePmaReaderBgIncrInit, pCtx); in vdbePmaReaderIncrInit()
2309 SortSubtask *pTask, /* Sorter task to read from */ in vdbeMergeEngineLevel0() argument
2325 rc = vdbePmaReaderInit(pTask, &pTask->file, iOff, pReadr, &nDummy); in vdbeMergeEngineLevel0()
2366 SortSubtask *pTask, /* Task context */ in vdbeSorterAddToTree() argument
2378 rc = vdbeIncrMergerNew(pTask, pLeaf, &pIncr); in vdbeSorterAddToTree()
2393 rc = vdbeIncrMergerNew(pTask, pNew, &pReadr->pIncr); in vdbeSorterAddToTree()
2441 SortSubtask *pTask = &pSorter->aTask[iTask]; in vdbeSorterMergeTreeBuild() local
2442 assert( pTask->nPMA>0 || SQLITE_MAX_WORKER_THREADS>0 ); in vdbeSorterMergeTreeBuild()
2443 if( SQLITE_MAX_WORKER_THREADS==0 || pTask->nPMA ){ in vdbeSorterMergeTreeBuild()
2445 int nDepth = vdbeSorterTreeDepth(pTask->nPMA); in vdbeSorterMergeTreeBuild()
2448 if( pTask->nPMA<=SORTER_MAX_MERGE_COUNT ){ in vdbeSorterMergeTreeBuild()
2449 rc = vdbeMergeEngineLevel0(pTask, pTask->nPMA, &iReadOff, &pRoot); in vdbeSorterMergeTreeBuild()
2455 for(i=0; i<pTask->nPMA && rc==SQLITE_OK; i += SORTER_MAX_MERGE_COUNT){ in vdbeSorterMergeTreeBuild()
2459 nReader = MIN(pTask->nPMA - i, SORTER_MAX_MERGE_COUNT); in vdbeSorterMergeTreeBuild()
2460 rc = vdbeMergeEngineLevel0(pTask, nReader, &iReadOff, &pMerger); in vdbeSorterMergeTreeBuild()
2462 rc = vdbeSorterAddToTree(pTask, nDepth, iSeq++, pRoot, pMerger); in vdbeSorterMergeTreeBuild()
2470 rc = vdbeIncrMergerNew(pTask, pRoot, &pMain->aReadr[iTask].pIncr); in vdbeSorterMergeTreeBuild()
2535 assert( pIncr->pTask!=pLast ); in vdbeSorterSetupMerge()
2550 (p->pIncr->pTask==&pSorter->aTask[iTask]) /* a */ in vdbeSorterSetupMerge()
2654 assert( pSorter->pMerger->pTask==(&pSorter->aTask[0]) ); in sqlite3VdbeSorterNext()