From: drh Date: Fri, 16 May 2014 20:24:51 +0000 (+0000) Subject: Rearrange some conditionals and add #if statements to make the code more X-Git-Tag: version-3.8.7~132^2~39 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5f4a4790485f14102c55ba4ea38413b554e5e275;p=thirdparty%2Fsqlite.git Rearrange some conditionals and add #if statements to make the code more testable. FossilOrigin-Name: 17afd77057f8695733a9a60225646c1d8813b1a0 --- diff --git a/manifest b/manifest index 963e9310be..01d72475f4 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Add\sa\spair\sof\ssqlite3FaultSim(100)\scalls\sto\svdbesort.c\sto\sfacilitate\stesting\nof\sobscure\sand\shard\sto\sreach\serror\sconditions. -D 2014-05-16T17:31:42.435 +C Rearrange\ssome\sconditionals\sand\sadd\s#if\sstatements\sto\smake\sthe\scode\smore\ntestable. +D 2014-05-16T20:24:51.024 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in de92112472618cb869d27249966bad1783e4a853 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -282,14 +282,14 @@ F src/update.c 5b3e74a03b3811e586b4f2b4cbd7c49f01c93115 F src/utf.c 6dc9ec9f1b3db43ae8ba0365377f11df1ee4c01c F src/util.c 049fe1d3c0e2209c1bee107aec2fcff6285f909f F src/vacuum.c 3728d74919d4fb1356f9e9a13e27773db60b7179 -F src/vdbe.c 89ab2ded5123e823b47293aedd7931a4742fb6bd +F src/vdbe.c 4d11273a6a6644d948c534a17bdeaf42a2793d30 F src/vdbe.h 394464909ed682334aa3d5831aae0c2fe2abef94 F src/vdbeInt.h c78ace64dc37495806dd50596eded1f6cd2b5a64 F src/vdbeapi.c 0ed6053f947edd0b30f64ce5aeb811872a3450a4 F src/vdbeaux.c 44d4d1f5711f71eaf0d624de5c3e4976fe4e180b F src/vdbeblob.c 9205ce9d3b064d9600f8418a897fc88b5687d9ac F src/vdbemem.c 6fc77594c60f6155404f3f8d71bf36d1fdeb4447 -F src/vdbesort.c f126a837c4bea832f3b91796081131b22d7b9c7e +F src/vdbesort.c 15d1405fcfbb2f4a2ad667872be211153d69fa36 F src/vdbetrace.c 6f52bc0c51e144b7efdcfb2a8f771167a8816767 F src/vtab.c 21b932841e51ebd7d075e2d0ad1415dce8d2d5fd F src/wal.c 76e7fc6de229bea8b30bb2539110f03a494dc3a8 @@ -1175,7 +1175,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 43fcbd9116401f30781fdcbe55d1674d6b96311b -R 2be9e504fbe8e48aafd8e17341d9b966 +P cceac14fd83ddd8f868c1767cdc66635607cb159 +R 48ad2b172d9e67d362d3e27e91c64651 U drh -Z 9396ea859eaf958c2b1d37dca9017593 +Z 9751e875adf689a22af045a3a24a99e5 diff --git a/manifest.uuid b/manifest.uuid index 5102b5e8a8..d6d88fd0bf 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -cceac14fd83ddd8f868c1767cdc66635607cb159 \ No newline at end of file +17afd77057f8695733a9a60225646c1d8813b1a0 \ No newline at end of file diff --git a/src/vdbe.c b/src/vdbe.c index b8bf727b53..a2a59406a4 100644 --- a/src/vdbe.c +++ b/src/vdbe.c @@ -1128,7 +1128,7 @@ case OP_Move: { assert( pIn1<=&aMem[(p->nMem-p->nCursor)] ); assert( memIsValid(pIn1) ); memAboutToChange(p, pOut); - VdbeMemRelease(pOut); + sqlite3VdbeMemRelease(pOut); zMalloc = pOut->zMalloc; memcpy(pOut, pIn1, sizeof(Mem)); #ifdef SQLITE_DEBUG diff --git a/src/vdbesort.c b/src/vdbesort.c index 7c844065b4..aa08879aef 100644 --- a/src/vdbesort.c +++ b/src/vdbesort.c @@ -108,8 +108,9 @@ ** ** If there are fewer than SORTER_MAX_MERGE_COUNT PMAs in total and the ** sorter is running in single-threaded mode, then these PMAs are merged -** incrementally as keys are retreived from the sorter by the VDBE. See -** comments above object MergeEngine below for details. +** incrementally as keys are retreived from the sorter by the VDBE. The +** MergeEngine object, described in further detail below, performs this +** merge. ** ** Or, if running in multi-threaded mode, then a background thread is ** launched to merge the existing PMAs. Once the background thread has @@ -900,11 +901,17 @@ static void vdbeSorterRecordFree(sqlite3 *db, SorterRecord *pRecord){ static void vdbeSortSubtaskCleanup(sqlite3 *db, SortSubtask *pTask){ sqlite3DbFree(db, pTask->pUnpacked); pTask->pUnpacked = 0; - if( pTask->list.aMemory==0 ){ - vdbeSorterRecordFree(0, pTask->list.pList); - }else{ +#if SQLITE_MAX_WORKER_THREADS>0 + /* pTask->list.aMemory can only be non-zero if it was handed memory + ** from the main thread. That only occurs SQLITE_MAX_WORKER_THREADS>0 */ + if( pTask->list.aMemory ){ sqlite3_free(pTask->list.aMemory); pTask->list.aMemory = 0; + }else +#endif + { + assert( pTask->list.aMemory==0 ); + vdbeSorterRecordFree(0, pTask->list.pList); } pTask->list.pList = 0; if( pTask->file.pFd ){ @@ -2138,7 +2145,7 @@ static int vdbeSorterMergeTreeBuild(VdbeSorter *pSorter, MergeEngine **ppOut){ } #endif - for(iTask=0; iTasknTask && rc==SQLITE_OK; iTask++){ + for(iTask=0; rc==SQLITE_OK && iTasknTask; iTask++){ SortSubtask *pTask = &pSorter->aTask[iTask]; if( pTask->nPMA ){ MergeEngine *pRoot = 0; /* Root node of tree for this task */ @@ -2165,10 +2172,14 @@ static int vdbeSorterMergeTreeBuild(VdbeSorter *pSorter, MergeEngine **ppOut){ } if( rc==SQLITE_OK ){ - if( pMain==0 ){ - pMain = pRoot; - }else{ +#if SQLITE_MAX_WORKER_THREADS>0 + if( pMain!=0 ){ rc = vdbeIncrNew(pTask, pRoot, &pMain->aIter[iTask].pIncr); + }else +#endif + { + assert( pMain==0 ); + pMain = pRoot; } }else{ vdbeMergeEngineFree(pRoot);