pIncr 78259 ext/sqlite3/libsqlite/sqlite3.c IncrMerger *pIncr; /* Incremental merger */ pIncr 78371 ext/sqlite3/libsqlite/sqlite3.c vdbeIncrFree(pReadr->pIncr); pIncr 78536 ext/sqlite3/libsqlite/sqlite3.c assert( pReadr->pIncr==0 || pReadr->pIncr->bEof==0 ); pIncr 78581 ext/sqlite3/libsqlite/sqlite3.c IncrMerger *pIncr = pReadr->pIncr; pIncr 78583 ext/sqlite3/libsqlite/sqlite3.c if( pIncr ){ pIncr 78584 ext/sqlite3/libsqlite/sqlite3.c rc = vdbeIncrSwap(pIncr); pIncr 78585 ext/sqlite3/libsqlite/sqlite3.c if( rc==SQLITE_OK && pIncr->bEof==0 ){ pIncr 78587 ext/sqlite3/libsqlite/sqlite3.c pIncr->pTask, pReadr, &pIncr->aFile[0], pIncr->iStartOff pIncr 79099 ext/sqlite3/libsqlite/sqlite3.c static void vdbeIncrFree(IncrMerger *pIncr){ pIncr 79100 ext/sqlite3/libsqlite/sqlite3.c if( pIncr ){ pIncr 79102 ext/sqlite3/libsqlite/sqlite3.c if( pIncr->bUseThread ){ pIncr 79103 ext/sqlite3/libsqlite/sqlite3.c vdbeSorterJoinThread(pIncr->pTask); pIncr 79104 ext/sqlite3/libsqlite/sqlite3.c if( pIncr->aFile[0].pFd ) sqlite3OsCloseFree(pIncr->aFile[0].pFd); pIncr 79105 ext/sqlite3/libsqlite/sqlite3.c if( pIncr->aFile[1].pFd ) sqlite3OsCloseFree(pIncr->aFile[1].pFd); pIncr 79108 ext/sqlite3/libsqlite/sqlite3.c vdbeMergeEngineFree(pIncr->pMerger); pIncr 79109 ext/sqlite3/libsqlite/sqlite3.c sqlite3_free(pIncr); pIncr 79755 ext/sqlite3/libsqlite/sqlite3.c static int vdbeIncrPopulate(IncrMerger *pIncr){ pIncr 79758 ext/sqlite3/libsqlite/sqlite3.c i64 iStart = pIncr->iStartOff; pIncr 79759 ext/sqlite3/libsqlite/sqlite3.c SorterFile *pOut = &pIncr->aFile[1]; pIncr 79760 ext/sqlite3/libsqlite/sqlite3.c SortSubtask *pTask = pIncr->pTask; pIncr 79761 ext/sqlite3/libsqlite/sqlite3.c MergeEngine *pMerger = pIncr->pMerger; pIncr 79763 ext/sqlite3/libsqlite/sqlite3.c assert( pIncr->bEof==0 ); pIncr 79777 ext/sqlite3/libsqlite/sqlite3.c if( (iEof + nKey + sqlite3VarintLen(nKey))>(iStart + pIncr->mxSz) ) break; pIncr 79782 ext/sqlite3/libsqlite/sqlite3.c assert( pIncr->pMerger->pTask==pTask ); pIncr 79783 ext/sqlite3/libsqlite/sqlite3.c rc = vdbeMergeEngineStep(pIncr->pMerger, &dummy); pIncr 79798 ext/sqlite3/libsqlite/sqlite3.c IncrMerger *pIncr = (IncrMerger*)pCtx; pIncr 79799 ext/sqlite3/libsqlite/sqlite3.c void *pRet = SQLITE_INT_TO_PTR( vdbeIncrPopulate(pIncr) ); pIncr 79800 ext/sqlite3/libsqlite/sqlite3.c pIncr->pTask->bDone = 1; pIncr 79807 ext/sqlite3/libsqlite/sqlite3.c static int vdbeIncrBgPopulate(IncrMerger *pIncr){ pIncr 79808 ext/sqlite3/libsqlite/sqlite3.c void *p = (void*)pIncr; pIncr 79809 ext/sqlite3/libsqlite/sqlite3.c assert( pIncr->bUseThread ); pIncr 79810 ext/sqlite3/libsqlite/sqlite3.c return vdbeSorterCreateThread(pIncr->pTask, vdbeIncrPopulateThread, p); pIncr 79831 ext/sqlite3/libsqlite/sqlite3.c static int vdbeIncrSwap(IncrMerger *pIncr){ pIncr 79835 ext/sqlite3/libsqlite/sqlite3.c if( pIncr->bUseThread ){ pIncr 79836 ext/sqlite3/libsqlite/sqlite3.c rc = vdbeSorterJoinThread(pIncr->pTask); pIncr 79839 ext/sqlite3/libsqlite/sqlite3.c SorterFile f0 = pIncr->aFile[0]; pIncr 79840 ext/sqlite3/libsqlite/sqlite3.c pIncr->aFile[0] = pIncr->aFile[1]; pIncr 79841 ext/sqlite3/libsqlite/sqlite3.c pIncr->aFile[1] = f0; pIncr 79845 ext/sqlite3/libsqlite/sqlite3.c if( pIncr->aFile[0].iEof==pIncr->iStartOff ){ pIncr 79846 ext/sqlite3/libsqlite/sqlite3.c pIncr->bEof = 1; pIncr 79848 ext/sqlite3/libsqlite/sqlite3.c rc = vdbeIncrBgPopulate(pIncr); pIncr 79854 ext/sqlite3/libsqlite/sqlite3.c rc = vdbeIncrPopulate(pIncr); pIncr 79855 ext/sqlite3/libsqlite/sqlite3.c pIncr->aFile[0] = pIncr->aFile[1]; pIncr 79856 ext/sqlite3/libsqlite/sqlite3.c if( pIncr->aFile[0].iEof==pIncr->iStartOff ){ pIncr 79857 ext/sqlite3/libsqlite/sqlite3.c pIncr->bEof = 1; pIncr 79876 ext/sqlite3/libsqlite/sqlite3.c IncrMerger *pIncr = *ppOut = (IncrMerger*) pIncr 79877 ext/sqlite3/libsqlite/sqlite3.c (sqlite3FaultSim(100) ? 0 : sqlite3MallocZero(sizeof(*pIncr))); pIncr 79878 ext/sqlite3/libsqlite/sqlite3.c if( pIncr ){ pIncr 79879 ext/sqlite3/libsqlite/sqlite3.c pIncr->pMerger = pMerger; pIncr 79880 ext/sqlite3/libsqlite/sqlite3.c pIncr->pTask = pTask; pIncr 79881 ext/sqlite3/libsqlite/sqlite3.c pIncr->mxSz = MAX(pTask->pSorter->mxKeysize+9,pTask->pSorter->mxPmaSize/2); pIncr 79882 ext/sqlite3/libsqlite/sqlite3.c pTask->file2.iEof += pIncr->mxSz; pIncr 79894 ext/sqlite3/libsqlite/sqlite3.c static void vdbeIncrMergerSetThreads(IncrMerger *pIncr){ pIncr 79895 ext/sqlite3/libsqlite/sqlite3.c pIncr->bUseThread = 1; pIncr 79896 ext/sqlite3/libsqlite/sqlite3.c pIncr->pTask->file2.iEof -= pIncr->mxSz; pIncr 80062 ext/sqlite3/libsqlite/sqlite3.c IncrMerger *pIncr = pReadr->pIncr; pIncr 80063 ext/sqlite3/libsqlite/sqlite3.c SortSubtask *pTask = pIncr->pTask; pIncr 80069 ext/sqlite3/libsqlite/sqlite3.c rc = vdbeMergeEngineInit(pTask, pIncr->pMerger, eMode); pIncr 80075 ext/sqlite3/libsqlite/sqlite3.c int mxSz = pIncr->mxSz; pIncr 80077 ext/sqlite3/libsqlite/sqlite3.c if( pIncr->bUseThread ){ pIncr 80078 ext/sqlite3/libsqlite/sqlite3.c rc = vdbeSorterOpenTempFile(db, mxSz, &pIncr->aFile[0].pFd); pIncr 80080 ext/sqlite3/libsqlite/sqlite3.c rc = vdbeSorterOpenTempFile(db, mxSz, &pIncr->aFile[1].pFd); pIncr 80091 ext/sqlite3/libsqlite/sqlite3.c pIncr->aFile[1].pFd = pTask->file2.pFd; pIncr 80092 ext/sqlite3/libsqlite/sqlite3.c pIncr->iStartOff = pTask->file2.iEof; pIncr 80099 ext/sqlite3/libsqlite/sqlite3.c if( rc==SQLITE_OK && pIncr->bUseThread ){ pIncr 80111 ext/sqlite3/libsqlite/sqlite3.c rc = vdbeIncrPopulate(pIncr); pIncr 80132 ext/sqlite3/libsqlite/sqlite3.c pReader->pIncr->pTask->bDone = 1; pIncr 80149 ext/sqlite3/libsqlite/sqlite3.c IncrMerger *pIncr = pReadr->pIncr; /* Incremental merger */ pIncr 80151 ext/sqlite3/libsqlite/sqlite3.c if( pIncr ){ pIncr 80153 ext/sqlite3/libsqlite/sqlite3.c assert( pIncr->bUseThread==0 || eMode==INCRINIT_TASK ); pIncr 80154 ext/sqlite3/libsqlite/sqlite3.c if( pIncr->bUseThread ){ pIncr 80156 ext/sqlite3/libsqlite/sqlite3.c rc = vdbeSorterCreateThread(pIncr->pTask, vdbePmaReaderBgIncrInit, pCtx); pIncr 80246 ext/sqlite3/libsqlite/sqlite3.c IncrMerger *pIncr; pIncr 80248 ext/sqlite3/libsqlite/sqlite3.c rc = vdbeIncrMergerNew(pTask, pLeaf, &pIncr); pIncr 80258 ext/sqlite3/libsqlite/sqlite3.c if( pReadr->pIncr==0 ){ pIncr 80263 ext/sqlite3/libsqlite/sqlite3.c rc = vdbeIncrMergerNew(pTask, pNew, &pReadr->pIncr); pIncr 80267 ext/sqlite3/libsqlite/sqlite3.c p = pReadr->pIncr->pMerger; pIncr 80273 ext/sqlite3/libsqlite/sqlite3.c p->aReadr[iSeq % SORTER_MAX_MERGE_COUNT].pIncr = pIncr; pIncr 80275 ext/sqlite3/libsqlite/sqlite3.c vdbeIncrFree(pIncr); pIncr 80340 ext/sqlite3/libsqlite/sqlite3.c rc = vdbeIncrMergerNew(pTask, pRoot, &pMain->aReadr[iTask].pIncr); pIncr 80398 ext/sqlite3/libsqlite/sqlite3.c rc = vdbeIncrMergerNew(pLast, pMain, &pReadr->pIncr); pIncr 80400 ext/sqlite3/libsqlite/sqlite3.c vdbeIncrMergerSetThreads(pReadr->pIncr); pIncr 80402 ext/sqlite3/libsqlite/sqlite3.c IncrMerger *pIncr; pIncr 80403 ext/sqlite3/libsqlite/sqlite3.c if( (pIncr = pMain->aReadr[iTask].pIncr) ){ pIncr 80404 ext/sqlite3/libsqlite/sqlite3.c vdbeIncrMergerSetThreads(pIncr); pIncr 80405 ext/sqlite3/libsqlite/sqlite3.c assert( pIncr->pTask!=pLast ); pIncr 80419 ext/sqlite3/libsqlite/sqlite3.c assert( p->pIncr==0 || ( pIncr 80420 ext/sqlite3/libsqlite/sqlite3.c (p->pIncr->pTask==&pSorter->aTask[iTask]) /* a */ pIncr 80421 ext/sqlite3/libsqlite/sqlite3.c && (iTask!=pSorter->nTask-1 || p->pIncr->bUseThread==0) /* b */