From: drh <> Date: Fri, 25 Feb 2022 16:21:00 +0000 (+0000) Subject: Do not do a deferred seek on a cursor that is marked nullRow. X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=544d3b780580f783ada3d142bf92e382e5580ffe;p=thirdparty%2Fsqlite.git Do not do a deferred seek on a cursor that is marked nullRow. FossilOrigin-Name: 1c026bcb3c9e1ae0f38ad8a3e6e3bda1a0cdff9dcc77a08b1820f2fdde2ee200 --- diff --git a/manifest b/manifest index f510c37f92..d506655738 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C This\sbranch\sproposes\sto\sconsolidate\svarious\sstate\sfields\sof\sVdbeCursor\n(specifically,\snullRow,\sdeferredMoveto,\sand\scacheStatus)\sinto\sa\ssingle\neCurState\sfield.\s\sThis\sfirst\scheck-in\sadds\sthe\snew\seCurState\sfield\swhile\nretaining\sand\scontinuing\sto\suse\sthe\slegacy\sstate\sfields. -D 2022-02-25T15:44:13.844 +C Do\snot\sdo\sa\sdeferred\sseek\son\sa\scursor\sthat\sis\smarked\snullRow. +D 2022-02-25T16:21:00.933 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -628,7 +628,7 @@ F src/vdbe.c 588de992e0efc2cc167748888b90fc0910e93b3030a16b5685f0acd7cb5f1cb3 F src/vdbe.h a1d0e3b934e835e73edd146f2e7c4eadb711b5c9875c18159a57483fd78e550e F src/vdbeInt.h 68756566247e190f22ea8f175a81f9d1b91b6258bcdd69832ea2eb3c78ecfb11 F src/vdbeapi.c 8863ffb5a7bac42fe9a68aaa3526ee29fc18fb02a9b27188b756de41e33856e9 -F src/vdbeaux.c b938eb6ba843f370fe6f97069a3ed3693e1d6cbb01f3cbe718d4a877a25d3e38 +F src/vdbeaux.c 2c3e77262e0f5604d1b560b0559e9be7a793a7448ddf4baf90cedce7fedf683d F src/vdbeblob.c 5e61ce31aca17db8fb60395407457a8c1c7fb471dde405e0cd675974611dcfcd F src/vdbemem.c 7737f0b1c480a32b057849c804d2f21d5389649bb8be80f77ad75df700adc9a1 F src/vdbesort.c 43756031ca7430f7aec3ef904824a7883c4ede783e51f280d99b9b65c0796e35 @@ -1944,11 +1944,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 54f49f65ac943263a1622b1efe519c8a61f30f23694fd4fec89ad2bf0e17b473 -R 2ff4c217735fef3148c991fc4ac1775c -T *branch * simplify-cursor-state -T *sym-simplify-cursor-state * -T -sym-trunk * +P 7953716c12ca1deb50ee2c91d9b62a029e38f7cb61af418eeca438283c45f825 +R 85c483559243dc30f8f8dd48c45fb13f U drh -Z 177b4f0e5553a1f45304df314a704a95 +Z 6cb6334f470796473908dc1f535cd43a # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 168c33756a..d9f3573134 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -7953716c12ca1deb50ee2c91d9b62a029e38f7cb61af418eeca438283c45f825 \ No newline at end of file +1c026bcb3c9e1ae0f38ad8a3e6e3bda1a0cdff9dcc77a08b1820f2fdde2ee200 \ No newline at end of file diff --git a/src/vdbeaux.c b/src/vdbeaux.c index 2856fe014a..d7724eb82b 100644 --- a/src/vdbeaux.c +++ b/src/vdbeaux.c @@ -3495,7 +3495,7 @@ int SQLITE_NOINLINE sqlite3VdbeFinishMoveto(VdbeCursor *p){ #endif p->deferredMoveto = 0; p->cacheStatus = CACHE_STALE; - p->eCurState = p->nullRow ? CURSTATE_NULLROW : CURSTATE_UNINIT; + if( !p->nullRow ) p->eCurState = CURSTATE_UNINIT; return SQLITE_OK; } @@ -3549,7 +3549,7 @@ int sqlite3VdbeCursorRestore(VdbeCursor *p){ int sqlite3VdbeCursorMoveto(VdbeCursor **pp, u32 *piCol){ VdbeCursor *p = *pp; assert( p->eCurType==CURTYPE_BTREE || p->eCurType==CURTYPE_PSEUDO ); - if( p->deferredMoveto ){ + if( p->deferredMoveto && !p->nullRow ){ u32 iMap; assert( !p->isEphemeral ); assert( p->eCurState==CURSTATE_DEFERRED );