mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-10 01:02:56 +03:00
Back out the "low-quality index" query planner hack of check-in
[bcac937526d9a6ef]. Subsequent query planner enhancements for dealing with star-queries make that change unnecessary and the change was recently found to cause a performance regression in an unrelated query. Also fix a typo in a debugging message. FossilOrigin-Name: e7dcf25efae364b7cdf9eb8265803c816c8b8557e4a7684da428badc6ffb3875
This commit is contained in:
16
manifest
16
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Fix\strunk\sfork.
|
C Back\sout\sthe\s"low-quality\sindex"\squery\splanner\shack\sof\scheck-in\n[bcac937526d9a6ef].\s\sSubsequent\squery\splanner\senhancements\sfor\sdealing\nwith\sstar-queries\smake\sthat\schange\sunnecessary\sand\sthe\schange\swas\srecently\nfound\sto\scause\sa\sperformance\sregression\sin\san\sunrelated\squery.\nAlso\sfix\sa\stypo\sin\sa\sdebugging\smessage.
|
||||||
D 2025-05-13T19:06:11.380
|
D 2025-05-14T16:40:05.375
|
||||||
F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
|
F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
|
||||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||||
@@ -720,7 +720,7 @@ F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
|
|||||||
F sqlite3.1 acdff36db796e2d00225b911d3047d580cd136547298435426ce9d40347973cc
|
F sqlite3.1 acdff36db796e2d00225b911d3047d580cd136547298435426ce9d40347973cc
|
||||||
F sqlite3.pc.in 0977c03a4da7c4204bd60e784a0efb8d51a190448aba78a4e973fe7192bdaf03
|
F sqlite3.pc.in 0977c03a4da7c4204bd60e784a0efb8d51a190448aba78a4e973fe7192bdaf03
|
||||||
F src/alter.c 6a21a487290ed0990a0fac9db6b0b09c63de4b1cdaa6ba3fa3872e6f26b87768
|
F src/alter.c 6a21a487290ed0990a0fac9db6b0b09c63de4b1cdaa6ba3fa3872e6f26b87768
|
||||||
F src/analyze.c 13895d4da6ac857d95d3291dc607d492eba3ea1cbc3bc04baaa0383fbc1bb3d4
|
F src/analyze.c 03bcfc083fc0cccaa9ded93604e1d4244ea245c17285d463ef6a60425fcb247d
|
||||||
F src/attach.c 9af61b63b10ee702b1594ecd24fb8cea0839cfdb6addee52fba26fa879f5db9d
|
F src/attach.c 9af61b63b10ee702b1594ecd24fb8cea0839cfdb6addee52fba26fa879f5db9d
|
||||||
F src/auth.c 54ab9c6c5803b47c0d45b76ce27eff22a03b4b1f767c5945a3a4eb13aa4c78dc
|
F src/auth.c 54ab9c6c5803b47c0d45b76ce27eff22a03b4b1f767c5945a3a4eb13aa4c78dc
|
||||||
F src/backup.c 5c97e8023aab1ce14a42387eb3ae00ba5a0644569e3476f38661fa6f824c3523
|
F src/backup.c 5c97e8023aab1ce14a42387eb3ae00ba5a0644569e3476f38661fa6f824c3523
|
||||||
@@ -790,7 +790,7 @@ F src/shell.c.in 2c904da4431fed365e7d5029b8cb2da46cb3e8cf8a09305d1478836a2301ea9
|
|||||||
F src/sqlite.h.in 22882ddd3a70751aa8864c81993ee4562ed54c2c508b6270f75e223ffee38e1b
|
F src/sqlite.h.in 22882ddd3a70751aa8864c81993ee4562ed54c2c508b6270f75e223ffee38e1b
|
||||||
F src/sqlite3.rc 015537e6ac1eec6c7050e17b616c2ffe6f70fca241835a84a4f0d5937383c479
|
F src/sqlite3.rc 015537e6ac1eec6c7050e17b616c2ffe6f70fca241835a84a4f0d5937383c479
|
||||||
F src/sqlite3ext.h 3f046c04ea3595d6bfda99b781926b17e672fd6d27da2ba6d8d8fc39981dcb54
|
F src/sqlite3ext.h 3f046c04ea3595d6bfda99b781926b17e672fd6d27da2ba6d8d8fc39981dcb54
|
||||||
F src/sqliteInt.h 8b18ed676757ce49df633b603a465655aa105d9862821ffa9296afb189ba564f
|
F src/sqliteInt.h ded2e1527c84603d9d91adccb63dda460d96a2e2f98111d0438a479aa0dbe4e3
|
||||||
F src/sqliteLimit.h 6d817c28a8f19af95e6f4921933b7fbbca48a962bce0eb0ec81e8bb3ef38e68b
|
F src/sqliteLimit.h 6d817c28a8f19af95e6f4921933b7fbbca48a962bce0eb0ec81e8bb3ef38e68b
|
||||||
F src/status.c 0e72e4f6be6ccfde2488eb63210297e75f569f3ce9920f6c3d77590ec6ce5ffd
|
F src/status.c 0e72e4f6be6ccfde2488eb63210297e75f569f3ce9920f6c3d77590ec6ce5ffd
|
||||||
F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
|
F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
|
||||||
@@ -869,7 +869,7 @@ F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
|
|||||||
F src/wal.c bcf40795a09b699ad7e42624dd6282b13335164fbabcd5a98a717758cebef451
|
F src/wal.c bcf40795a09b699ad7e42624dd6282b13335164fbabcd5a98a717758cebef451
|
||||||
F src/wal.h ba252daaa94f889f4b2c17c027e823d9be47ce39da1d3799886bbd51f0490452
|
F src/wal.h ba252daaa94f889f4b2c17c027e823d9be47ce39da1d3799886bbd51f0490452
|
||||||
F src/walker.c d5006d6b005e4ea7302ad390957a8d41ed83faa177e412f89bc5600a7462a014
|
F src/walker.c d5006d6b005e4ea7302ad390957a8d41ed83faa177e412f89bc5600a7462a014
|
||||||
F src/where.c 16aab5421a7119063fdb138dce6b53c57c50ad01b0b64992dacb14f946fe8d4a
|
F src/where.c 1d06561f7310af61bef8a046fa95d463ad88f855be9036fec9091f984520afc5
|
||||||
F src/whereInt.h ecdbfb5551cf394f04ec7f0bc7ad963146d80eee3071405ac29aa84950128b8e
|
F src/whereInt.h ecdbfb5551cf394f04ec7f0bc7ad963146d80eee3071405ac29aa84950128b8e
|
||||||
F src/wherecode.c d67fadf5430c2647773b5f702a47b82eb4af50a317f8978c0c82363cc1a5107f
|
F src/wherecode.c d67fadf5430c2647773b5f702a47b82eb4af50a317f8978c0c82363cc1a5107f
|
||||||
F src/whereexpr.c 2415c8eee5ff89a8b709d7d83d71c1ff986cd720d0520057e1d8a5371339012a
|
F src/whereexpr.c 2415c8eee5ff89a8b709d7d83d71c1ff986cd720d0520057e1d8a5371339012a
|
||||||
@@ -2207,8 +2207,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
|
|||||||
F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
|
F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
|
||||||
F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139
|
F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139
|
||||||
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
||||||
P fc254c1eb784c79a371bf961945a18a680982cdcd3fdcd7e6bb481712fe21cf8 c9e04dadfdf6c860631ce5603693add565ff2033aa25af5736302af7045fc91e
|
P 53644c42c5ee40e905a72bb014515e5e30265577d543eeca09139800822b5b42
|
||||||
R 2c951b894630034ec93ff56350c9beb9
|
R 59151c194fe4122ae75c7906b9cce51d
|
||||||
U drh
|
U drh
|
||||||
Z 97e0cef690bfe86eb3019d1e3b04006a
|
Z 6b734debe02b11e5124b69bb671a98d3
|
||||||
# Remove this line to create a well-formed Fossil manifest.
|
# Remove this line to create a well-formed Fossil manifest.
|
||||||
|
@@ -1 +1 @@
|
|||||||
53644c42c5ee40e905a72bb014515e5e30265577d543eeca09139800822b5b42
|
e7dcf25efae364b7cdf9eb8265803c816c8b8557e4a7684da428badc6ffb3875
|
||||||
|
@@ -1576,16 +1576,6 @@ static void decodeIntArray(
|
|||||||
while( z[0]!=0 && z[0]!=' ' ) z++;
|
while( z[0]!=0 && z[0]!=' ' ) z++;
|
||||||
while( z[0]==' ' ) z++;
|
while( z[0]==' ' ) z++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set the bLowQual flag if the peak number of rows obtained
|
|
||||||
** from a full equality match is so large that a full table scan
|
|
||||||
** seems likely to be faster than using the index.
|
|
||||||
*/
|
|
||||||
if( aLog[0] > 66 /* Index has more than 100 rows */
|
|
||||||
&& aLog[0] <= aLog[nOut-1] /* And only a single value seen */
|
|
||||||
){
|
|
||||||
pIndex->bLowQual = 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -2789,7 +2789,6 @@ struct Index {
|
|||||||
unsigned isCovering:1; /* True if this is a covering index */
|
unsigned isCovering:1; /* True if this is a covering index */
|
||||||
unsigned noSkipScan:1; /* Do not try to use skip-scan if true */
|
unsigned noSkipScan:1; /* Do not try to use skip-scan if true */
|
||||||
unsigned hasStat1:1; /* aiRowLogEst values come from sqlite_stat1 */
|
unsigned hasStat1:1; /* aiRowLogEst values come from sqlite_stat1 */
|
||||||
unsigned bLowQual:1; /* sqlite_stat1 says this is a low-quality index */
|
|
||||||
unsigned bNoQuery:1; /* Do not use this index to optimize queries */
|
unsigned bNoQuery:1; /* Do not use this index to optimize queries */
|
||||||
unsigned bAscKeyBug:1; /* True if the bba7b69f9849b5bf bug applies */
|
unsigned bAscKeyBug:1; /* True if the bba7b69f9849b5bf bug applies */
|
||||||
unsigned bIdxRowid:1; /* One or more of the index keys is the ROWID */
|
unsigned bIdxRowid:1; /* One or more of the index keys is the ROWID */
|
||||||
|
@@ -3159,11 +3159,8 @@ static int whereLoopAddBtreeIndex(
|
|||||||
assert( pNew->u.btree.nBtm==0 );
|
assert( pNew->u.btree.nBtm==0 );
|
||||||
opMask = WO_EQ|WO_IN|WO_GT|WO_GE|WO_LT|WO_LE|WO_ISNULL|WO_IS;
|
opMask = WO_EQ|WO_IN|WO_GT|WO_GE|WO_LT|WO_LE|WO_ISNULL|WO_IS;
|
||||||
}
|
}
|
||||||
if( pProbe->bUnordered || pProbe->bLowQual ){
|
if( pProbe->bUnordered ){
|
||||||
if( pProbe->bUnordered ) opMask &= ~(WO_GT|WO_GE|WO_LT|WO_LE);
|
opMask &= ~(WO_GT|WO_GE|WO_LT|WO_LE);
|
||||||
if( pProbe->bLowQual && pSrc->fg.isIndexedBy==0 ){
|
|
||||||
opMask &= ~(WO_EQ|WO_IN|WO_IS);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
assert( pNew->u.btree.nEq<pProbe->nColumn );
|
assert( pNew->u.btree.nEq<pProbe->nColumn );
|
||||||
@@ -4100,7 +4097,7 @@ static int whereLoopAddBtree(
|
|||||||
&& (HasRowid(pTab) || pWInfo->pSelect!=0 || sqlite3FaultSim(700))
|
&& (HasRowid(pTab) || pWInfo->pSelect!=0 || sqlite3FaultSim(700))
|
||||||
){
|
){
|
||||||
WHERETRACE(0x200,
|
WHERETRACE(0x200,
|
||||||
("-> %s a covering index according to bitmasks\n",
|
("-> %s is a covering index according to bitmasks\n",
|
||||||
pProbe->zName, m==0 ? "is" : "is not"));
|
pProbe->zName, m==0 ? "is" : "is not"));
|
||||||
pNew->wsFlags = WHERE_IDX_ONLY | WHERE_INDEXED;
|
pNew->wsFlags = WHERE_IDX_ONLY | WHERE_INDEXED;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user