From: dan Date: Mon, 3 Jul 2017 20:19:28 +0000 (+0000) Subject: Fix a bug in lsm queries on levels undergoing incremental an merge that X-Git-Tag: version-3.20.0~142 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=45408a108f23f9ddc23d71be0ab231fbb54c73e5;p=thirdparty%2Fsqlite.git Fix a bug in lsm queries on levels undergoing incremental an merge that contain range-delete markers. FossilOrigin-Name: b2c2487928becbea5a932895d153709c98a057a3c71c2600e165478562e9f7c5 --- diff --git a/ext/lsm1/lsm_sorted.c b/ext/lsm1/lsm_sorted.c index de5a332db8..6390368d9d 100644 --- a/ext/lsm1/lsm_sorted.c +++ b/ext/lsm1/lsm_sorted.c @@ -1952,7 +1952,17 @@ static int seekInLevel( rtTopic(pPtr->eType), pPtr->pKey, pPtr->nKey, pLvl->iSplitTopic, pLvl->pSplitKey, pLvl->nSplitKey ); - if( res<0 ) segmentPtrReset(pPtr, LSM_SEGMENTPTR_FREE_THRESHOLD); + if( res<0 ){ + if( pPtr->eType & LSM_START_DELETE ){ + pPtr->eType &= ~LSM_INSERT; + pPtr->pKey = pLvl->pSplitKey; + pPtr->nKey = pLvl->nSplitKey; + pPtr->pVal = 0; + pPtr->nVal = 0; + }else{ + segmentPtrReset(pPtr, LSM_SEGMENTPTR_FREE_THRESHOLD); + } + } } if( aPtr[i].pKey ) bHit = 1; diff --git a/manifest b/manifest index 623179b428..d20c9525eb 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Attempt\sto\simprove\sdocumentation\son\ssqlite3_column_\sand\ssqlite3_value_\ninterfaces. -D 2017-07-03T17:37:04.837 +C Fix\sa\sbug\sin\slsm\squeries\son\slevels\sundergoing\sincremental\san\smerge\sthat\ncontain\srange-delete\smarkers. +D 2017-07-03T20:19:28.955 F Makefile.in 081e48dfe7f995d57ce1a88ddf4d2917b4349158648a6cd45b42beae30de3a12 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 4ebb1d257cac7fb1bcb4ba59278416d410ff1c4bf59447a9c37a415f3516056a @@ -244,7 +244,7 @@ F ext/lsm1/lsm_main.c 8f1f68a87126dcecaed463ed38e4b1c0dcc184614de1d7b01542d88c06 F ext/lsm1/lsm_mem.c 4c51ea9fa285ee6e35301b33491642d071740a0a F ext/lsm1/lsm_mutex.c 378edf0a2b142b4f7640ee982df06d50b98788ea F ext/lsm1/lsm_shared.c 54cc3a5157c6abd77f7d3ae60708b9f7bf022b3c -F ext/lsm1/lsm_sorted.c 62cc605a66cf8e0e6ab3593281c2476a787fc4b2013c618dd17568d18c730070 +F ext/lsm1/lsm_sorted.c 105a4c0b95e6f8c1d03774f88afbf1397e7cacd52c1a4b24de1118d011d05fdd F ext/lsm1/lsm_str.c 77ebdd5040ddf267a6f724d4c83132d2dce8a226 F ext/lsm1/lsm_tree.c 5d9fb2bc58a1a70c75126bd8d7198f7b627e165b F ext/lsm1/lsm_unix.c 57361bcf5b1a1a028f5d66571ee490e9064d2cfb145a2cc9e5ddade467bb551b @@ -1628,7 +1628,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P e34eafd4c5b2bbf2735e136ad69b67bb4288ad4d01a0128d8e107ac46209a182 -R daf6aa916562f77defe7fb8012cb61e0 -U drh -Z 91228c779b3dd3fbfc53cd1f8eb1df59 +P 9111ac69bf307997e590bc9459222661fc79f549b3c493168a654a5046e6e4ad +R 17216989ed0c1efa9e59126318b86d4a +U dan +Z d89f155c1b113ffdce094dbb498ae299 diff --git a/manifest.uuid b/manifest.uuid index ec501ded56..806985e972 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -9111ac69bf307997e590bc9459222661fc79f549b3c493168a654a5046e6e4ad \ No newline at end of file +b2c2487928becbea5a932895d153709c98a057a3c71c2600e165478562e9f7c5 \ No newline at end of file