From e9689e7dae350e35b68713b2836d8af5abdb568c Mon Sep 17 00:00:00 2001 From: drh <> Date: Fri, 25 Jul 2025 21:45:58 +0000 Subject: [PATCH] Do not use any index field with a collating sequence of DATACOPY to speed a look-up. Use such fields only for covering queries. *This is an experimental branch*. FossilOrigin-Name: aef529e6fcb682aa684c803d2e9eca5f40f1d83fdab8098183641e0da49d03b9 --- manifest | 12 ++++++------ manifest.uuid | 2 +- src/where.c | 6 ++++++ 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/manifest b/manifest index 8fda3552bd..e14ac3954d 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Add\sthe\sdatacopy\sextension,\sused\sfor\stesting\sonly. -D 2025-07-25T20:37:56.306 +C Do\snot\suse\sany\sindex\sfield\swith\sa\scollating\ssequence\sof\sDATACOPY\sto\sspeed\na\slook-up.\s\sUse\ssuch\sfields\sonly\sfor\scovering\squeries.\n*This\sis\san\sexperimental\sbranch*. +D 2025-07-25T21:45:58.913 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -605,7 +605,7 @@ F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9 F src/wal.c 9eccc7ebb532a7b0fd3cabc16cff576b9afa763472272db67d84fb8cec96f5c0 F src/wal.h 606292549f5a7be50b6227bd685fa76e3a4affad71bb8ac5ce4cb5c79f6a176a F src/walker.c 7607f1a68130c028255d8d56094ea602fc402c79e1e35a46e6282849d90d5fe4 -F src/where.c 7b276c3110231eebda4d537e32a560030762c2ce7dd44e8e89aa2898af04e263 +F src/where.c 343eb199c421bf44cb26be8f4c7ac221aac51d0424385bc258ccecd6f0ab1cf3 F src/whereInt.h 064a1508edcc9af400a3b79211ba55e553fab6451b797a31334c0d11cbb7debb F src/wherecode.c cf67460973119c7b2141ad67daf8368dfb4871f225e2489f95effaa139007bfd F src/whereexpr.c cb357cf1efd04ae2be4a0d4cf5e0b04c1d666c55f6af72574f593b4a0cf549f6 @@ -1823,8 +1823,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 b021399a6e93afbb3368a5ae94c0f29c97ec6603bf9a5b7f86ca63c94590c2c3 -R 9d7140bb1f9296ac7b0b83953ba9f03b +P 06735507ae28fbcd0d43715434ddd74c5dfa4609cd9cb4d1994ca125b9d8dd68 +R c45701309d77d38c4f1ca8efad218dfb U drh -Z 6b049eb05e75f32bb2613e16bba6d9dd +Z f75378737b8b4c96270e13bf0cfc620c # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index e37de9d429..2c566d3fe2 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -06735507ae28fbcd0d43715434ddd74c5dfa4609cd9cb4d1994ca125b9d8dd68 +aef529e6fcb682aa684c803d2e9eca5f40f1d83fdab8098183641e0da49d03b9 diff --git a/src/where.c b/src/where.c index 890fe91761..1d507cbe52 100644 --- a/src/where.c +++ b/src/where.c @@ -2445,6 +2445,12 @@ static int whereLoopAddBtreeIndex( assert( pNew->u.btree.nEqnColumn ); saved_nEq = pNew->u.btree.nEq; + if( pProbe->azColl!=0 + && pProbe->azColl[saved_nEq]!=0 + && sqlite3_stricmp(pProbe->azColl[saved_nEq],"DATACOPY")==0 + ){ + return rc; + } saved_nBtm = pNew->u.btree.nBtm; saved_nTop = pNew->u.btree.nTop; saved_nSkip = pNew->nSkip; -- 2.47.2