mirror of
https://github.com/sqlite/sqlite.git
synced 2025-11-05 04:30:38 +03:00
Further improvements to the ".scanstats on" display in the shell. Be sure
to show the results of all subqueries even if there are gaps in the SELECTID values. Add ".scanstats" to the ".help" output. FossilOrigin-Name: ee922682bb7235dbcd23a22fcfdfa188f6d3228a
This commit is contained in:
12
manifest
12
manifest
@@ -1,5 +1,5 @@
|
|||||||
C On\sthe\s".scanstats\son"\soutput\sin\sthe\sshell,\sinitialize\sthe\sestimated\scount\sfor\nthe\sfirst\sloop\sof\seach\ssubquery\sto\sthe\sactual\sloop\scount.
|
C Further\simprovements\sto\sthe\s".scanstats\son"\sdisplay\sin\sthe\sshell.\s\sBe\ssure\nto\sshow\sthe\sresults\sof\sall\ssubqueries\seven\sif\sthere\sare\sgaps\sin\sthe\s\nSELECTID\svalues.\s\sAdd\s".scanstats"\sto\sthe\s".help"\soutput.
|
||||||
D 2014-11-06T12:17:24.789
|
D 2014-11-06T12:46:16.708
|
||||||
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
|
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
|
||||||
F Makefile.in cf57f673d77606ab0f2d9627ca52a9ba1464146a
|
F Makefile.in cf57f673d77606ab0f2d9627ca52a9ba1464146a
|
||||||
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
|
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
|
||||||
@@ -228,7 +228,7 @@ F src/random.c ba2679f80ec82c4190062d756f22d0c358180696
|
|||||||
F src/resolve.c 4965007d6497b6a4d7a6d98751cc39712885f952
|
F src/resolve.c 4965007d6497b6a4d7a6d98751cc39712885f952
|
||||||
F src/rowset.c eccf6af6d620aaa4579bd3b72c1b6395d9e9fa1e
|
F src/rowset.c eccf6af6d620aaa4579bd3b72c1b6395d9e9fa1e
|
||||||
F src/select.c 428165951748151e87a15295b7357221433e311b
|
F src/select.c 428165951748151e87a15295b7357221433e311b
|
||||||
F src/shell.c 64a941c079837fd1a0d920273832e6275b777402
|
F src/shell.c 48fe276aada42a15722aee2584e6321345ed4609
|
||||||
F src/sqlite.h.in 087d30a4c7ec7ae19bcaa03a9db9d6ee7a73b0b3
|
F src/sqlite.h.in 087d30a4c7ec7ae19bcaa03a9db9d6ee7a73b0b3
|
||||||
F src/sqlite3.rc 992c9f5fb8285ae285d6be28240a7e8d3a7f2bad
|
F src/sqlite3.rc 992c9f5fb8285ae285d6be28240a7e8d3a7f2bad
|
||||||
F src/sqlite3ext.h 17d487c3c91b0b8c584a32fbeb393f6f795eea7d
|
F src/sqlite3ext.h 17d487c3c91b0b8c584a32fbeb393f6f795eea7d
|
||||||
@@ -1211,7 +1211,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
|
|||||||
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
|
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
|
||||||
F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
|
F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
|
||||||
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
||||||
P eacbbd8849db9b023eff15ef1cb42ec941299433
|
P d1c51c8455d5ce972a77720c2d56228646ced27c
|
||||||
R c65acc2e5374aae8ca471af05c87c9aa
|
R 1f66f00948a1acda590c099646f9e3d3
|
||||||
U drh
|
U drh
|
||||||
Z b18ed09265a53348fca40701c374436f
|
Z 2bc412ec02d784f50574dd160207db0a
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
d1c51c8455d5ce972a77720c2d56228646ced27c
|
ee922682bb7235dbcd23a22fcfdfa188f6d3228a
|
||||||
20
src/shell.c
20
src/shell.c
@@ -1194,9 +1194,10 @@ static void display_scanstats(
|
|||||||
ShellState *pArg /* Pointer to ShellState */
|
ShellState *pArg /* Pointer to ShellState */
|
||||||
){
|
){
|
||||||
#ifdef SQLITE_ENABLE_STMT_SCANSTATUS
|
#ifdef SQLITE_ENABLE_STMT_SCANSTATUS
|
||||||
int i, k, n = 1;
|
int i, k, n, mx;
|
||||||
fprintf(pArg->out, "-------- scanstats --------\n");
|
fprintf(pArg->out, "-------- scanstats --------\n");
|
||||||
for(k=0; n>0; k++){
|
mx = 0;
|
||||||
|
for(k=0; k<=mx; k++){
|
||||||
double rEstLoop = 1.0;
|
double rEstLoop = 1.0;
|
||||||
for(i=n=0; 1; i++){
|
for(i=n=0; 1; i++){
|
||||||
sqlite3_stmt *p = pArg->pStmt;
|
sqlite3_stmt *p = pArg->pStmt;
|
||||||
@@ -1208,10 +1209,11 @@ static void display_scanstats(
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
sqlite3_stmt_scanstatus(p, i, SQLITE_SCANSTAT_SELECTID, (void*)&iSid);
|
sqlite3_stmt_scanstatus(p, i, SQLITE_SCANSTAT_SELECTID, (void*)&iSid);
|
||||||
|
if( iSid>mx ) mx = iSid;
|
||||||
if( iSid!=k ) continue;
|
if( iSid!=k ) continue;
|
||||||
if( n==0 ){
|
if( n==0 ){
|
||||||
rEstLoop = (double)nLoop;
|
rEstLoop = (double)nLoop;
|
||||||
if( k>0 ) fprintf(pArg->out, "-------- subquery %d --------\n", k);
|
if( k>0 ) fprintf(pArg->out, "-------- subquery %d -------\n", k);
|
||||||
}
|
}
|
||||||
n++;
|
n++;
|
||||||
sqlite3_stmt_scanstatus(p, i, SQLITE_SCANSTAT_NVISIT, (void*)&nVisit);
|
sqlite3_stmt_scanstatus(p, i, SQLITE_SCANSTAT_NVISIT, (void*)&nVisit);
|
||||||
@@ -1224,14 +1226,8 @@ static void display_scanstats(
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
fprintf(pArg->out, "-------- scanstats --------\n");
|
|
||||||
fprintf(pArg->out,
|
|
||||||
"sqlite3_stmt_scanstatus() unavailable - "
|
|
||||||
"rebuild with SQLITE_ENABLE_STMT_SCANSTATUS\n"
|
|
||||||
);
|
|
||||||
#endif
|
|
||||||
fprintf(pArg->out, "---------------------------\n");
|
fprintf(pArg->out, "---------------------------\n");
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -1687,6 +1683,7 @@ static char zHelp[] =
|
|||||||
".read FILENAME Execute SQL in FILENAME\n"
|
".read FILENAME Execute SQL in FILENAME\n"
|
||||||
".restore ?DB? FILE Restore content of DB (default \"main\") from FILE\n"
|
".restore ?DB? FILE Restore content of DB (default \"main\") from FILE\n"
|
||||||
".save FILE Write in-memory database into FILE\n"
|
".save FILE Write in-memory database into FILE\n"
|
||||||
|
".scanstats on|off Turn sqlite3_stmt_scanstatus() metrics on or off\n"
|
||||||
".schema ?TABLE? Show the CREATE statements\n"
|
".schema ?TABLE? Show the CREATE statements\n"
|
||||||
" If TABLE specified, only show tables matching\n"
|
" If TABLE specified, only show tables matching\n"
|
||||||
" LIKE pattern TABLE.\n"
|
" LIKE pattern TABLE.\n"
|
||||||
@@ -3072,6 +3069,9 @@ static int do_meta_command(char *zLine, ShellState *p){
|
|||||||
if( c=='s' && strncmp(azArg[0], "scanstats", n)==0 ){
|
if( c=='s' && strncmp(azArg[0], "scanstats", n)==0 ){
|
||||||
if( nArg==2 ){
|
if( nArg==2 ){
|
||||||
p->scanstatsOn = booleanValue(azArg[1]);
|
p->scanstatsOn = booleanValue(azArg[1]);
|
||||||
|
#ifndef SQLITE_ENABLE_STMT_SCANSTATUS
|
||||||
|
fprintf(stderr, "Warning: .scanstats not available in this build.\n");
|
||||||
|
#endif
|
||||||
}else{
|
}else{
|
||||||
fprintf(stderr, "Usage: .scanstats on|off\n");
|
fprintf(stderr, "Usage: .scanstats on|off\n");
|
||||||
rc = 1;
|
rc = 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user