1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-08-05 15:55:57 +03:00

Revamp SQLITE_TESTCTRL_TUNE to provide visibility of current turning

parameter values.

FossilOrigin-Name: 677e645e69e1f06487c26da6671fc03f0fb89a0f8e0d35712e6bdcf7279bdfc4
This commit is contained in:
drh
2021-06-04 13:40:26 +00:00
parent f3c1256a4d
commit 2d26cfcc4a
5 changed files with 43 additions and 18 deletions

View File

@@ -1,5 +1,5 @@
C Add\ssupport\sfor\sSQLITE_TESTCTRL_TUNE\sand\sthe\s".testctrl\stune\sID\sVALUE"\scommand\nin\sthe\sCLI. C Revamp\sSQLITE_TESTCTRL_TUNE\sto\sprovide\svisibility\sof\scurrent\sturning\nparameter\svalues.
D 2021-06-04T13:16:46.112 D 2021-06-04T13:40:26.168
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -508,7 +508,7 @@ F src/in-operator.md 10cd8f4bcd225a32518407c2fb2484089112fd71
F src/insert.c 2189e0e596010a0dc5405d9f14f78db1ee2fa71138c931f5b6ea96610b95bfc1 F src/insert.c 2189e0e596010a0dc5405d9f14f78db1ee2fa71138c931f5b6ea96610b95bfc1
F src/legacy.c d7874bc885906868cd51e6c2156698f2754f02d9eee1bae2d687323c3ca8e5aa F src/legacy.c d7874bc885906868cd51e6c2156698f2754f02d9eee1bae2d687323c3ca8e5aa
F src/loadext.c 8c9c8cd2bd8eecdb06d9b6e89de7e9e65bae45cc8fc33609cc74023a5c296067 F src/loadext.c 8c9c8cd2bd8eecdb06d9b6e89de7e9e65bae45cc8fc33609cc74023a5c296067
F src/main.c 3d9a09ebfcf5e1fa704afa3a1e957bc13b03c994c346bcec8c6b6ae5d5277caf F src/main.c 7a1b7017af16977b298ef5a0b824b1153f1c878f94885a098620c3c1b1078ce9
F src/malloc.c cbc93cdd429c4594912017d92ab656e2579aca64dbd1c6888551275bed46f25b F src/malloc.c cbc93cdd429c4594912017d92ab656e2579aca64dbd1c6888551275bed46f25b
F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645 F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
F src/mem1.c c12a42539b1ba105e3707d0e628ad70e611040d8f5e38cf942cee30c867083de F src/mem1.c c12a42539b1ba105e3707d0e628ad70e611040d8f5e38cf942cee30c867083de
@@ -545,11 +545,11 @@ F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384
F src/resolve.c 35630effd4d16d2373caa41bae40a3d71f853f3ad0cb4f572f2ed4b8c350c1e9 F src/resolve.c 35630effd4d16d2373caa41bae40a3d71f853f3ad0cb4f572f2ed4b8c350c1e9
F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92 F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92
F src/select.c 2f4429e0b0ca031e360489c45dca5dfa06cd85480e12c0d1360b91e1c8e7f7a2 F src/select.c 2f4429e0b0ca031e360489c45dca5dfa06cd85480e12c0d1360b91e1c8e7f7a2
F src/shell.c.in d10dd74a98c7d360ae3a2dffe867540648809581f3575fa3970d9c994814ebe6 F src/shell.c.in a4bc0e2ba9be798e293790f354dcc0099c6370127eec18cf49cb161b9dae2fbc
F src/sqlite.h.in 7f184776cfd85900905420ea3c62e44929ba348ddc015bc5933835ee0529188e F src/sqlite.h.in 7f184776cfd85900905420ea3c62e44929ba348ddc015bc5933835ee0529188e
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
F src/sqlite3ext.h 61b38c073d5e1e96a3d45271b257aef27d0d13da2bea5347692ae579475cd95e F src/sqlite3ext.h 61b38c073d5e1e96a3d45271b257aef27d0d13da2bea5347692ae579475cd95e
F src/sqliteInt.h 96c6caf72c227310dcf401488c2227d7f5586453bc95372fa822fb10c810822f F src/sqliteInt.h 61f717ac4242af975c6d8abc11a3ada6153ad5bfb7ce08ef8a443c01e13c8031
F src/sqliteLimit.h d7323ffea5208c6af2734574bae933ca8ed2ab728083caa117c9738581a31657 F src/sqliteLimit.h d7323ffea5208c6af2734574bae933ca8ed2ab728083caa117c9738581a31657
F src/status.c 4b8bc2a6905163a38b739854a35b826c737333fab5b1f8e03fa7eb9a4799c4c1 F src/status.c 4b8bc2a6905163a38b739854a35b826c737333fab5b1f8e03fa7eb9a4799c4c1
F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1 F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
@@ -1918,7 +1918,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
P d9e85fe80cdd3d798a583a5f99148235d0c3f39adfabbc661615893c387e6e45 P f1199d58b9cfdcddb83bc35544ce38299ac4ed50d7ab90d33463f6ccce526feb
R 6791cad4e90a4fac84f0f4c8722de676 R b36ffe32c23127e88069749b6a5f5f27
U drh U drh
Z 52da6a38608d38de5f10fc4c527493c0 Z 0e96dd2eb82b5d85005719ac04994aad

View File

@@ -1 +1 @@
f1199d58b9cfdcddb83bc35544ce38299ac4ed50d7ab90d33463f6ccce526feb 677e645e69e1f06487c26da6671fc03f0fb89a0f8e0d35712e6bdcf7279bdfc4

View File

@@ -4285,11 +4285,12 @@ int sqlite3_test_control(int op, ...){
} }
#ifdef SQLITE_DEBUG #ifdef SQLITE_DEBUG
/* sqlite3_test_control(SQLITE_TESTCTRL_TUNE, id, val) /* sqlite3_test_control(SQLITE_TESTCTRL_TUNE, id, *piValue)
** **
** "id" must be an integer between 0 and SQLITE_NTUNE-1. "val" ** If "id" is an integer between 1 and SQLITE_NTUNE then set the value
** is a 64-bit signed integer. This test-control sets tuning parameter ** of the id-th tuning parameter to *piValue. If "id" is between -1
** id to the value val. ** and -SQLITE_NTUNE, then write the current value of the (-id)-th
** tuning parameter into *piValue.
** **
** Tuning parameters are for use during transient development builds, ** Tuning parameters are for use during transient development builds,
** to help find the best values for constants in the query planner. ** to help find the best values for constants in the query planner.
@@ -4301,8 +4302,14 @@ int sqlite3_test_control(int op, ...){
*/ */
case SQLITE_TESTCTRL_TUNE: { case SQLITE_TESTCTRL_TUNE: {
int id = va_arg(ap, int); int id = va_arg(ap, int);
int val = va_arg(ap, sqlite3_int64); int *piValue = va_arg(ap, int*);
if( id>=0 && id<SQLITE_NTUNE ) Tuning(id) = val; if( id>0 && id<=SQLITE_NTUNE ){
Tuning(id) = *piValue;
}else if( id<0 && id>=-SQLITE_NTUNE ){
*piValue = Tuning(-id);
}else{
rc = SQLITE_NOTFOUND;
}
break; break;
} }
#endif #endif

View File

@@ -10131,8 +10131,24 @@ static int do_meta_command(char *zLine, ShellState *p){
case SQLITE_TESTCTRL_TUNE: { case SQLITE_TESTCTRL_TUNE: {
if( nArg==4 ){ if( nArg==4 ){
int id = (int)integerValue(azArg[2]); int id = (int)integerValue(azArg[2]);
i64 val = integerValue(azArg[3]); int val = (int)integerValue(azArg[3]);
rc2 = sqlite3_test_control(testctrl, id, val); sqlite3_test_control(testctrl, id, &val);
isOk = 3;
}else if( nArg==3 ){
int id = (int)integerValue(azArg[2]);
sqlite3_test_control(testctrl, -id, &rc2);
isOk = 1;
}else if( nArg==2 ){
int id = 1;
while(1){
int val = 0;
rc2 = sqlite3_test_control(testctrl, -id, &val);
if( rc2!=SQLITE_OK ) break;
if( id>1 ) utf8_printf(p->out, " ");
utf8_printf(p->out, "%d: %d", id, val);
id++;
}
if( id>1 ) utf8_printf(p->out, "\n");
isOk = 3; isOk = 3;
} }
break; break;

View File

@@ -3747,10 +3747,12 @@ typedef struct {
** optimial values for parameters in the query planner. The should not ** optimial values for parameters in the query planner. The should not
** be used on trunk check-ins. They are a temporary mechanism available ** be used on trunk check-ins. They are a temporary mechanism available
** for transient development builds only. ** for transient development builds only.
**
** Tuning parameters are numbered starting with 1.
*/ */
#define SQLITE_NTUNE 6 /* Should be zero for all trunk check-ins */ #define SQLITE_NTUNE 6 /* Should be zero for all trunk check-ins */
#ifdef SQLITE_DEBUG #ifdef SQLITE_DEBUG
# define Tuning(X) (sqlite3Config.aTune[X]) # define Tuning(X) (sqlite3Config.aTune[(X)-1])
#else #else
# define Tuning(X) 0 # define Tuning(X) 0
#endif #endif