From e7c3aca60161d6537e4375c2a94442439e5c7a40 Mon Sep 17 00:00:00 2001 From: dan Date: Sat, 8 Apr 2017 18:56:32 +0000 Subject: [PATCH] Rename shell6.test to expert1.test. Have it invoke the sqlite3_expert binary if it is present. FossilOrigin-Name: be0deff940bea4f653d644113f42529a32ff7039d1d168119233aaf000a22f40 --- ext/expert/expert.c | 18 ++++++++++++++++-- ext/expert/sqlite3expert.c | 2 +- manifest | 16 ++++++++-------- manifest.uuid | 2 +- test/{shell6.test => expert1.test} | 15 ++++++--------- 5 files changed, 32 insertions(+), 21 deletions(-) rename test/{shell6.test => expert1.test} (93%) diff --git a/ext/expert/expert.c b/ext/expert/expert.c index 5a5cda185f..e211faa08e 100644 --- a/ext/expert/expert.c +++ b/ext/expert/expert.c @@ -24,6 +24,10 @@ static void option_requires_argument(const char *zOpt){ exit(-3); } +static int option_integer_arg(const char *zVal){ + return atoi(zVal); +} + static void usage(char **argv){ fprintf(stderr, "\n"); fprintf(stderr, "Usage %s ?OPTIONS? DATABASE\n", argv[0]); @@ -31,6 +35,7 @@ static void usage(char **argv){ fprintf(stderr, "Options are:\n"); fprintf(stderr, " -sql SQL (analyze SQL statements passed as argument)\n"); fprintf(stderr, " -file FILE (read SQL statements from file FILE)\n"); + fprintf(stderr, " -verbose LEVEL (integer verbosity level. default 1)\n"); exit(-1); } @@ -43,6 +48,7 @@ int main(int argc, char **argv){ int rc = 0; char *zErr = 0; int i; + int iVerbose = 1; /* -verbose option */ sqlite3 *db = 0; sqlite3expert *p = 0; @@ -73,6 +79,11 @@ int main(int argc, char **argv){ rc = sqlite3_expert_sql(p, argv[i], &zErr); } + else if( nArg>=2 && 0==sqlite3_strnicmp(zArg, "-verbose", nArg) ){ + if( ++i==(argc-1) ) option_requires_argument("-verbose"); + iVerbose = option_integer_arg(argv[i]); + } + else{ usage(argv); } @@ -89,8 +100,11 @@ int main(int argc, char **argv){ const char *zSql = sqlite3_expert_report(p, i, EXPERT_REPORT_SQL); const char *zIdx = sqlite3_expert_report(p, i, EXPERT_REPORT_INDEXES); const char *zEQP = sqlite3_expert_report(p, i, EXPERT_REPORT_PLAN); - fprintf(stdout, "-- query %d ----------------------------------\n", i+1); - fprintf(stdout, "%s\n\n%s\n%s\n", zSql, zIdx, zEQP); + if( iVerbose>0 ){ + fprintf(stdout, "-- query %d ----------------------------------\n",i+1); + fprintf(stdout, "%s\n\n", zSql); + } + fprintf(stdout, "%s\n%s\n", zIdx, zEQP); } }else if( zErr ){ fprintf(stderr, "Error: %s\n", zErr); diff --git a/ext/expert/sqlite3expert.c b/ext/expert/sqlite3expert.c index fb442a0b3c..6d674a748b 100644 --- a/ext/expert/sqlite3expert.c +++ b/ext/expert/sqlite3expert.c @@ -865,7 +865,7 @@ int idxFindIndexes( } for(pEntry=hIdx.pFirst; pEntry; pEntry=pEntry->pNext){ - pStmt->zIdx = idxAppendText(&rc, pStmt->zIdx, "%s\n", pEntry->zKey); + pStmt->zIdx = idxAppendText(&rc, pStmt->zIdx, "%s;\n", pEntry->zKey); } if( pStmt->zIdx==0 ){ pStmt->zIdx = idxAppendText(&rc, 0, "(no new indexes)\n"); diff --git a/manifest b/manifest index 83ba986696..5deeb9c637 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Use\shash\stables\sinstead\sof\sin-memory\sdatabase\stables\sfor\sa\sfew\spurposes\sin\nsqlite3expert.c. -D 2017-04-08T17:41:24.364 +C Rename\sshell6.test\sto\sexpert1.test.\sHave\sit\sinvoke\sthe\ssqlite3_expert\sbinary\nif\sit\sis\spresent. +D 2017-04-08T18:56:32.081 F Makefile.in 1cc758ce3374a32425e4d130c2fe7b026b20de5b8843243de75f087c0a2661fb F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc a4c0613a18663bda56d8cf76079ab6590a7c3602e54befb4bbdef76bcaa38b6a @@ -40,8 +40,8 @@ F ext/README.md fd5f78013b0a2bc6f0067afb19e6ad040e89a10179b4f6f03eee58fac5f169bd F ext/async/README.txt e12275968f6fde133a80e04387d0e839b0c51f91 F ext/async/sqlite3async.c 0f3070cc3f5ede78f2b9361fb3b629ce200d7d74 F ext/async/sqlite3async.h f489b080af7e72aec0e1ee6f1d98ab6cf2e4dcef -F ext/expert/expert.c c73a0da702a2e9f5fd48046ab182683a73ee0318cefa3f45826536d015f39021 -F ext/expert/sqlite3expert.c c0e3ee75550fe73c3f6a536801071b97536e0907e898993086ab478853139327 +F ext/expert/expert.c 861735e296c68cd442c20d5f6e75d07c957227009b79b31581a0971481e35d97 +F ext/expert/sqlite3expert.c 864ebebab5fd12cad8fb5debd26ff083dffe87ade15c1b6dcc7a7c3ae0afdd1b F ext/expert/sqlite3expert.h feeaee4ab73ba52426329781bbb28032ce18cf5abd2bf6221bac2df4c32b3013 F ext/fts1/README.txt 20ac73b006a70bcfd80069bdaf59214b6cf1db5e F ext/fts1/ft_hash.c 3927bd880e65329bdc6f506555b228b28924921b @@ -699,6 +699,7 @@ F test/exclusive.test 9a57bd66e39144b888ca75c309914fcdefb4e3f9 F test/exclusive2.test 984090e8e9d1b331d2e8111daf6e5d61dda0bef7 F test/exec.test e949714dc127eaa5ecc7d723efec1ec27118fdd7 F test/exists.test 79a75323c78f02bbe9c251ea502a092f9ef63dac +F test/expert1.test 4108ab79ee454679e3d46e3703943ac49676b6174703a13ed81f9ee8cd794e68 F test/expr.test 66a2c9ac34f74f036faa4092f5402c7d3162fc93 F test/extension01.test 00d13cec817f331a687a243e0e5a2d87b0e358c9 F test/extraquick.test cb254400bd42bfb777ff675356aabf3287978f79 @@ -1122,7 +1123,6 @@ F test/shell2.test e242a9912f44f4c23c3d1d802a83e934e84c853b F test/shell3.test 9b95ba643eaa228376f06a898fb410ee9b6e57c1 F test/shell4.test 89ad573879a745974ff2df20ff97c5d6ffffbd5d F test/shell5.test 50a732c1c2158b1cd62cf53975ce1ea7ce6b9dc9 -F test/shell6.test f37998b26dfde19beaaf06a4cb60c476f66a7b54affff3870a2a011402c13efc F test/shell7.test 07751911b294698e0c5df67bcbd29e7d2f0f2907 F test/shortread1.test bb591ef20f0fd9ed26d0d12e80eee6d7ac8897a3 F test/show_speedtest1_rtree.tcl 32e6c5f073d7426148a6936a0408f4b5b169aba5 @@ -1573,7 +1573,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 305e19f976ca064638a294e0817bf547ea745e1eb74746c5855514e6ced9c5fa -R 628a1adb0870c895045a02cfe74a8f4c +P bf10e68d9e4d5eae7ae6148a7ad64c9596f2ed8ccd36065adb09a1f9e7dae50b +R e14200231c0812aa1e853be6a898ba2f U dan -Z c1b7449477bbba31dce4f7f111235b67 +Z b04d01a3056a5795f1f1bb4407f0bf9d diff --git a/manifest.uuid b/manifest.uuid index 04abc2e7d4..6f644ebe90 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -bf10e68d9e4d5eae7ae6148a7ad64c9596f2ed8ccd36065adb09a1f9e7dae50b \ No newline at end of file +be0deff940bea4f653d644113f42529a32ff7039d1d168119233aaf000a22f40 \ No newline at end of file diff --git a/test/shell6.test b/test/expert1.test similarity index 93% rename from test/shell6.test rename to test/expert1.test index 2f7c251827..b5651040d8 100644 --- a/test/shell6.test +++ b/test/expert1.test @@ -16,20 +16,17 @@ # Test plan: # -# shell1-1.*: Basic command line option handling. -# shell1-2.*: Basic "dot" command token parsing. -# shell1-3.*: Basic test that "dot" command can be called. # set testdir [file dirname $argv0] source $testdir/tester.tcl -set testprefix shell6 +set testprefix expert1 if {$tcl_platform(platform)=="windows"} { - set CLI "sqlite3.exe" + set CMD "sqlite3_expert.exe" } else { - set CLI ".././sqlite3" + set CMD ".././sqlite3_expert" } -if {![file executable $CLI]} { +if {![file executable $CMD]} { finish_test return } @@ -42,7 +39,7 @@ proc squish {txt} { proc do_rec_test {tn sql res} { set res [squish [string trim $res]] set tst [subst -nocommands { - squish [lindex [catchcmd [list -rec test.db {$sql;}]] 1] + squish [string trim [exec $::CMD -verbose 0 -sql {$sql;} test.db]] }] uplevel [list do_test $tn $tst $res] } @@ -195,8 +192,8 @@ do_setup_rec_test 11.1 { } { SELECT * FROM t7 WHERE a=? OR b=? } { - CREATE INDEX t7_idx_00000061 ON t7(a); CREATE INDEX t7_idx_00000062 ON t7(b); + CREATE INDEX t7_idx_00000061 ON t7(a); 0|0|0|SEARCH TABLE t7 USING INDEX t7_idx_00000061 (a=?) 0|0|0|SEARCH TABLE t7 USING INDEX t7_idx_00000062 (b=?) }