Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix minor errors causing compilation to fail with SQLITE_MAX_WORKER_THREADS set to a value greater than zero. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | threads |
Files: | files | file ages | folders |
SHA1: |
0561272abf357a2f4709f6c02866e570 |
User & Date: | dan 2014-04-03 14:29:08.251 |
Context
2014-04-03
| ||
16:25 | Fix an integer overflow problem in the sorter. (check-in: 9d3351b8d7 user: dan tags: threads) | |
14:29 | Fix minor errors causing compilation to fail with SQLITE_MAX_WORKER_THREADS set to a value greater than zero. (check-in: 0561272abf user: dan tags: threads) | |
02:54 | Refactor local object and method names in vdbesort.c so that their names more closely reflect their actual use. (check-in: d284e30eb1 user: drh tags: threads) | |
Changes
Changes to src/vdbesort.c.
︙ | ︙ | |||
732 733 734 735 736 737 738 | */ #if SQLITE_MAX_WORKER_THREADS>0 static int vdbeSorterJoinAll(VdbeSorter *pSorter, int rcin){ int rc = rcin; int i; for(i=0; i<pSorter->nTask; i++){ SortSubtask *pTask = &pSorter->aTask[i]; | | | | | 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 | */ #if SQLITE_MAX_WORKER_THREADS>0 static int vdbeSorterJoinAll(VdbeSorter *pSorter, int rcin){ int rc = rcin; int i; for(i=0; i<pSorter->nTask; i++){ SortSubtask *pTask = &pSorter->aTask[i]; if( pTask->pThread ){ void *pRet; int rc2 = sqlite3ThreadJoin(pTask->pThread, &pRet); pTask->pThread = 0; pTask->bDone = 0; if( rc==SQLITE_OK ) rc = rc2; if( rc==SQLITE_OK ) rc = SQLITE_PTR_TO_INT(pRet); } } return rc; } |
︙ | ︙ | |||
1308 1309 1310 1311 1312 1313 1314 | pSorter->bUsePMA = 1; for(i=0; i<nWorker; i++){ int iTest = (pSorter->iPrev + i + 1) % nWorker; pTask = &pSorter->aTask[iTest]; #if SQLITE_MAX_WORKER_THREADS>0 if( pTask->bDone ){ void *pRet; | | | | | 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 | pSorter->bUsePMA = 1; for(i=0; i<nWorker; i++){ int iTest = (pSorter->iPrev + i + 1) % nWorker; pTask = &pSorter->aTask[iTest]; #if SQLITE_MAX_WORKER_THREADS>0 if( pTask->bDone ){ void *pRet; assert( pTask->pThread ); rc = sqlite3ThreadJoin(pTask->pThread, &pRet); pTask->pThread = 0; pTask->bDone = 0; if( rc==SQLITE_OK ){ rc = SQLITE_PTR_TO_INT(pRet); } } #endif if( pTask->pThread==0 ) break; |
︙ | ︙ | |||
1352 1353 1354 1355 1356 1357 1358 | if( pSorter->aMemory==0 ){ pSorter->aMemory = sqlite3Malloc(pSorter->nMemory); if( pSorter->aMemory==0 ) return SQLITE_NOMEM; }else{ pSorter->nMemory = sqlite3MallocSize(pSorter->aMemory); } } | | | 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 | if( pSorter->aMemory==0 ){ pSorter->aMemory = sqlite3Malloc(pSorter->nMemory); if( pSorter->aMemory==0 ) return SQLITE_NOMEM; }else{ pSorter->nMemory = sqlite3MallocSize(pSorter->aMemory); } } rc = sqlite3ThreadCreate(&pTask->pThread, vdbeSortSubtaskMain, pCtx); }else #endif { /* Use the foreground thread for this operation */ rc = vdbeSorterRunTask(pTask); if( rc==SQLITE_OK ){ u8 *aMem = pTask->aListMemory; |
︙ | ︙ | |||
1527 1528 1529 1530 1531 1532 1533 | if( pTask->pTemp1 ){ pTask->nConsolidate = SORTER_MAX_MERGE_COUNT / pSorter->nTask; pTask->eWork = SORT_SUBTASK_CONS; #if SQLITE_MAX_WORKER_THREADS>0 if( i<(pSorter->nTask-1) ){ void *pCtx = (void*)pTask; | | | 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 | if( pTask->pTemp1 ){ pTask->nConsolidate = SORTER_MAX_MERGE_COUNT / pSorter->nTask; pTask->eWork = SORT_SUBTASK_CONS; #if SQLITE_MAX_WORKER_THREADS>0 if( i<(pSorter->nTask-1) ){ void *pCtx = (void*)pTask; rc = sqlite3ThreadCreate(&pTask->pThread, vdbeSortSubtaskMain, pCtx); }else #endif { rc = vdbeSorterRunTask(pTask); } } } |
︙ | ︙ |