1
0
mirror of https://github.com/sqlite/sqlite.git synced 2026-10-23 21:49:02 +03:00

Remove some unnecessary sqlite3_test_control() optimization control flags

for a small performance increase and size reduction.

FossilOrigin-Name: 2a9cb1e12ab4b81875e2d08f6cdecfb08b57137a69f6eb4efd19a56347184c3b
This commit is contained in:
drh
2026-08-22 16:33:58 +00:00
parent 3468c5b73e
commit 5ff4a5390c
9 changed files with 22 additions and 54 deletions

View File

@@ -1,5 +1,5 @@
C Fix\scheck-in\s[468e730036edac22]\sso\sthat\sit\sworks\swith\sDESC\sindexes.\n[bugs:/info/2026-08-22T07:01:45Z|Bug\s2026-08-22T07:01:45Z].
D 2026-08-22T09:33:37.424
C Remove\ssome\sunnecessary\ssqlite3_test_control()\soptimization\scontrol\sflags\nfor\sa\ssmall\sperformance\sincrease\sand\ssize\sreduction.
D 2026-08-22T16:33:58.464
F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -743,18 +743,18 @@ F src/printf.c b480176bd0aaed9d64e804cfa3ca27fc585f65a73e7c7ca2fe9b9016db2cf6d5
F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c
F src/resolve.c 0e0990f60c93db38c735d85e5d1741130e72dd0670aec204b5a39118b53c8044
F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
F src/select.c f9da7b070c559f249d6cb7911f8467b6cb8fcb1c785c8d4bf3aaecccdd472789
F src/shell.c.in 38548c326452780d6119e508d3c020432df042aa13a4e41bd4c1ea8ad95eb48c
F src/select.c ba33125b1a93984f702883c730002a466860a7226dd9ce811bf75246d4ed021e
F src/shell.c.in d3fc7e4318df72b5dafb93c7d0323bb26aaeea594b099dccd9e76b182d4014d2
F src/sqlite.h.in efc3f7aa00a2bb01c087435e6fa5f86103e310e6c3ea072b12cc110cf2715a75
F src/sqlite3.rc 015537e6ac1eec6c7050e17b616c2ffe6f70fca241835a84a4f0d5937383c479
F src/sqlite3ext.h 0efd4723bad9124ea1f581d9f1ea0254ac1c6f3e5fb29e4f3dcf36c72485a456
F src/sqliteInt.h b3d850874673b4697d55955771a08ef7ec6d155323d2ff04855383e4c7ec2eef
F src/sqliteInt.h b4cb30785d99c6b04399a0ca35fa701d5f0b6e6df0ea8bdb7a40878cb87decc6
F src/sqliteLimit.h c433b3fdb5e52f4226bf78d7e8081dff8fd8fbb0ce0cb1a5fee282aaa8976813
F src/status.c 7565d63a79aa2f326339a24a0461a60096d0bd2bce711fefb50b5c89335f3592
F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
F src/tclsqlite.c ed8f7cd15cf56e05a31270d002598f349c1c17f5a21b9f8b55688a519f633ec6
F src/tclsqlite.h 614b3780a62522bc9f8f2b9fb22689e8009958e7aa77e572d0f3149050af348a
F src/test1.c 83f56d24b5de0965af7b245dc0199690389772e3813f8bca2c88f11e524982fe
F src/test1.c 6bb9bee04156c0bead88369d24d1bc0055bb15592402592eb232ef02ffd09198
F src/test2.c a61ed01d9264a1db74ab42fbc981fc66165f85d5e3947e92be61a73e79ec4f2d
F src/test3.c c959fe0c3b04157483f5a6fa1950c1f222e062d920fee0a8e70410c6b6d45522
F src/test4.c 0ac87fc13cdb334ab3a71823f99b6c32a6bebe5d603cd6a71d84c823d43a25a0
@@ -825,7 +825,7 @@ F src/vxworks.h 9d18819c5235b49c2340a8a4d48195ec5d5afb637b152406de95a9436beeaeab
F src/wal.c cb28ab3a71cb73ea422a2fcc26283b65a1e5a2a65c44de86951c7d6a186381ac
F src/wal.h ba252daaa94f889f4b2c17c027e823d9be47ce39da1d3799886bbd51f0490452
F src/walker.c d5006d6b005e4ea7302ad390957a8d41ed83faa177e412f89bc5600a7462a014
F src/where.c 3c784585b64b6ab36aae8c3df9ac7b4aa81d2e4ec26c74d69536c25c5437a726
F src/where.c ff03395a6915ff32ec867605ff2312fe4a4f80c8604ed56c0856d31c541a74ee
F src/whereInt.h f039ad303bc2913de673e431821ef8db3b619d249e6e5548d90072a684e72285
F src/wherecode.c aa733a45b550c65aae0641335ddd6179a24c6bf0889bf0dda44a8dddc74d6bb0
F src/whereexpr.c 76f72a95c5cf0e8a8edb679ca4fb7afa17ba45ff4effe73c414266510109e701
@@ -1780,7 +1780,7 @@ F test/tkt-752e1646fc.test ea78d88d14fe9866bdd991c634483334639e13bf
F test/tkt-78e04e52ea.test b731f2ab7d1c2482ac5152097da02ef4805a45147ba9498d3cd9da27072f34d1
F test/tkt-7a31705a7e6.test 9e9c057b6a9497c8f7ba7b16871029414ccf6550e7345d9085d6d71c9a56bb6f
F test/tkt-7bbfb7d442.test e87b59e620700b5a52ecd92f05d56686c1cad9e1aa17456eada55e0bb821b698
F test/tkt-80ba201079.test 105a721e6aad0ae3c5946d7615d1e4d03f6145b8
F test/tkt-80ba201079.test d8c8635b72628f457ed4f68bb0f25bfeb68c9917f2abeda59f4ed55948629511
F test/tkt-80e031a00f.test 7c93af53f43527f50020983a4bcc39b077e77c7362d7af8e04a5fd155fe5e829
F test/tkt-8454a207b9.test ead80b7a01438ca1436cee029694a96c821346cf1e24f06de12f8172e139ddbb
F test/tkt-868145d012.test a5f941107ece6a64410ca4755c6329b7eb57a356
@@ -1917,7 +1917,7 @@ F test/trigger8.test 30cb0530bd7c4728055420e3f739aa00412eafa4
F test/trigger9.test 1724b595661da3dd3c8d79f0ebae818132a39e65c241bad2049f66952b1dc29d
F test/triggerA.test 837be862d8721f903dba3f3ceff05b32e0bee5214cf6ea3da5fadf12d3650e9d
F test/triggerB.test 56780c031b454abac2340dbb3b71ac5c56c3d7fe
F test/triggerC.test 1faacf5249a7abe8bdc44aafe170f2141a72cb2abcef300dc91e3d55c4158f41
F test/triggerC.test 02b32b66b5b08300829ce23fc0bc3d19db6559b44b520d0f4e6c98e36ed4dd70
F test/triggerD.test 8e7f3921a92a5797d472732108109e44575fa650
F test/triggerE.test 45cf42d88b6e0bf1458509e558d24da272967b69798877103f2140616967948b
F test/triggerF.test 5d76f0a8c428ff87a4d5ed52da06f6096a2c787a1e21b846111dfac4123de3ad
@@ -2219,8 +2219,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee
F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c
P 3a01099c45bd5965286640c23d727ef0c4a61bd97146bf01bac63e296808cba9
R b0542f919a1a303e26fc4257e0d7830d
P d1f4fa43f30d0aaf04af1b2afe9ec488654df43444bd49fae31ba1e2ab16b985
R 0398f6afe5debd4e1b75a99904e2dc72
U drh
Z c2d675ebb5ec9d5669a5dadef886b467
Z f723cbcd19074f5969a9ce662c278eb1
# Remove this line to create a well-formed Fossil manifest.

View File

@@ -1 +1 @@
d1f4fa43f30d0aaf04af1b2afe9ec488654df43444bd49fae31ba1e2ab16b985
2a9cb1e12ab4b81875e2d08f6cdecfb08b57137a69f6eb4efd19a56347184c3b

View File

@@ -2525,9 +2525,7 @@ Vdbe *sqlite3GetVdbe(Parse *pParse){
if( pParse->pVdbe ){
return pParse->pVdbe;
}
if( pParse->pToplevel==0
&& OptimizationEnabled(pParse->db,SQLITE_FactorOutConst)
){
if( pParse->pToplevel==0 ){
pParse->okConstFactor = 1;
}
return sqlite3VdbeCreate(pParse);

View File

@@ -12568,7 +12568,6 @@ static int do_meta_command(const char *zLine, ShellState *p){
{ 0x00000001, 0, "Flatten" },
{ 0x00000002, 1, "WindowFunc" },
{ 0x00000004, 1, "GroupByOrder" },
{ 0x00000008, 1, "FactorOutConst" },
{ 0x00000010, 1, "DistinctOpt" },
{ 0x00000020, 1, "CoverIdxScan" },
{ 0x00000040, 1, "OrderByIdxJoin" },
@@ -12585,7 +12584,6 @@ static int do_meta_command(const char *zLine, ShellState *p){
{ 0x00020000, 1, "SeekScan" },
{ 0x00040000, 1, "OmitOrderBy" },
{ 0x00080000, 1, "BloomFilter" },
{ 0x00100000, 1, "BloomPulldown" },
{ 0x00200000, 1, "BalancedMerge" },
{ 0x00400000, 1, "ReleaseReg" },
{ 0x00800000, 1, "FlttnUnionAll" },

View File

@@ -1936,7 +1936,7 @@ struct sqlite3 {
#define SQLITE_QueryFlattener 0x00000001 /* Query flattening */
#define SQLITE_WindowFunc 0x00000002 /* Use xInverse for window functions */
#define SQLITE_GroupByOrder 0x00000004 /* GROUPBY cover of ORDERBY */
#define SQLITE_FactorOutConst 0x00000008 /* Constant factoring */
/* 0x00000008 -- Available for reuse */
#define SQLITE_DistinctOpt 0x00000010 /* DISTINCT using indexes */
#define SQLITE_CoverIdxScan 0x00000020 /* Covering index scans */
#define SQLITE_OrderByIdxJoin 0x00000040 /* ORDER BY of joins via index */
@@ -1945,7 +1945,7 @@ struct sqlite3 {
#define SQLITE_CountOfView 0x00000200 /* The count-of-view optimization */
#define SQLITE_CursorHints 0x00000400 /* Add OP_CursorHint opcodes */
#define SQLITE_Stat4 0x00000800 /* Use STAT4 data */
/* TH3 expects this value ^^^^^^^^^^ to be 0x0000800. Don't change it */
/* TH3 expects this value ^^^^^^^^^^ */
#define SQLITE_PushDown 0x00001000 /* WHERE-clause push-down opt */
#define SQLITE_SimplifyJoin 0x00002000 /* Convert LEFT JOIN to JOIN */
#define SQLITE_SkipScan 0x00004000 /* Skip-scans */
@@ -1953,13 +1953,14 @@ struct sqlite3 {
#define SQLITE_MinMaxOpt 0x00010000 /* The min/max optimization */
#define SQLITE_SeekScan 0x00020000 /* The OP_SeekScan optimization */
#define SQLITE_OmitOrderBy 0x00040000 /* Omit pointless ORDER BY */
/* TH3 expects this value ^^^^^^^^^^ to be 0x40000. Coordinate any change */
#define SQLITE_BloomFilter 0x00080000 /* Use a Bloom filter on searches */
#define SQLITE_BloomPulldown 0x00100000 /* Run Bloom filters early */
/* TH3 expects this value ^^^^^^^^^^ */
#define SQLITE_BloomFilter 0x00080000 /* Use a Bloom filters */
/* TH3 expects this value ^^^^^^^^^^ */
/* 0x00100000 -- Available for reuse */
#define SQLITE_BalancedMerge 0x00200000 /* Balance multi-way merges */
#define SQLITE_ReleaseReg 0x00400000 /* Use OP_ReleaseReg for testing */
#define SQLITE_FlttnUnionAll 0x00800000 /* Disable the UNION ALL flattener */
/* TH3 expects this value ^^^^^^^^^^ See flatten04.test */
/* TH3 expects this value ^^^^^^^^^^ */
#define SQLITE_IndexedExpr 0x01000000 /* Pull exprs from index when able */
#define SQLITE_Coroutines 0x02000000 /* Co-routines for subqueries */
#define SQLITE_NullUnusedCols 0x04000000 /* NULL unused columns in subqueries */

View File

@@ -8396,7 +8396,6 @@ static int SQLITE_TCLAPI optimization_control(
{ "none", 0 },
{ "query-flattener", SQLITE_QueryFlattener },
{ "groupby-order", SQLITE_GroupByOrder },
{ "factor-constants", SQLITE_FactorOutConst },
{ "distinct-opt", SQLITE_DistinctOpt },
{ "cover-idx-scan", SQLITE_CoverIdxScan },
{ "order-by-idx-join", SQLITE_OrderByIdxJoin },

View File

@@ -1251,9 +1251,7 @@ end_auto_index_create:
** for pLevel.
**
** If there are inner loops within pLevel that have the WHERE_BLOOMFILTER
** flag set, initialize a Bloomfilter for them as well. Except don't do
** this recursive initialization if the SQLITE_BloomPulldown optimization has
** been turned off.
** flag set, initialize a Bloomfilter for them as well.
**
** When the Bloom filter is initialized, the WHERE_BLOOMFILTER flag is cleared
** from the loop, but the regFilter value is set to a register that implements
@@ -1362,7 +1360,6 @@ static SQLITE_NOINLINE void sqlite3ConstructBloomFilter(
VdbeCoverage(v);
sqlite3VdbeJumpHere(v, addrTop);
pLoop->wsFlags &= ~WHERE_BLOOMFILTER;
if( OptimizationDisabled(pParse->db, SQLITE_BloomPulldown) ) break;
while( ++iLevel < pWInfo->nLevel ){
const SrcItem *pTabItem;
pLevel = &pWInfo->a[iLevel];

View File

@@ -41,7 +41,6 @@ do_test tkt-80ba2-101 {
}
} {A B}
do_test tkt-80ba2-102 {
optimization_control db factor-constants 0
db cache flush
db eval {
SELECT * FROM t1, t2
@@ -49,26 +48,6 @@ do_test tkt-80ba2-102 {
OR (a='A' AND EXISTS (SELECT * FROM t3 WHERE c='C'));
}
} {A B}
optimization_control db all 1
# Verify that the optimization_control command is actually working
#
do_test tkt-80ba2-150 {
optimization_control db factor-constants 1
db cache flush
set x1 [db eval {EXPLAIN
SELECT * FROM t1, t2
WHERE (a='A' AND b='X')
OR (a='A' AND EXISTS (SELECT * FROM t3 WHERE c='C'));}]
optimization_control db factor-constants 0
db cache flush
set x2 [db eval {EXPLAIN
SELECT * FROM t1, t2
WHERE (a='A' AND b='X')
OR (a='A' AND EXISTS (SELECT * FROM t3 WHERE c='C'));}]
expr {$x1==$x2}
} {0}
do_test tkt-80ba2-200 {
db eval {
@@ -123,7 +102,6 @@ do_test tkt-80ba2-201 {
}
} {300 object_change 2048}
do_test tkt-80ba2-202 {
optimization_control db factor-constants 0
db cache flush
db eval {
SELECT entry_type,

View File

@@ -990,9 +990,6 @@ set SQL {
reset_db
do_execsql_test triggerC-14.1 $SQL {1 2 3}
reset_db
optimization_control db factor-constants 0
do_execsql_test triggerC-14.2 $SQL {1 2 3}
#-------------------------------------------------------------------------
# Check that table names used by trigger programs are dequoted exactly