From: drh Date: Tue, 27 Mar 2012 13:51:31 +0000 (+0000) Subject: Enhance the fts3view tool with the big-segment command and fix a bug in the X-Git-Tag: mountain-lion~3^2~9^2~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1ecb59a1e5d110b265ec91c4dea92c874e1f6dbe;p=thirdparty%2Fsqlite.git Enhance the fts3view tool with the big-segment command and fix a bug in the display of doclists. FossilOrigin-Name: e9436d8038e5a0d1ba992a77d1064d4a55595f57 --- diff --git a/ext/fts3/tool/fts3view.c b/ext/fts3/tool/fts3view.c index 1ecb581171..9b33e15998 100644 --- a/ext/fts3/tool/fts3view.c +++ b/ext/fts3/tool/fts3view.c @@ -682,8 +682,8 @@ static void decodeDoclist( printf("\n"); break; }else{ - printf(" %lld", iPrevPos + iPos - 2); - iPrevPos = iPos - 2; + iPrevPos += iPos - 2; + printf(" %lld", iPrevPos); } } } @@ -725,6 +725,31 @@ static void showDoclist(sqlite3 *db, const char *zTab){ sqlite3_finalize(pStmt); } +/* +** Show the top N largest segments +*/ +static void listBigSegments(sqlite3 *db, const char *zTab){ + int nTop, i; + sqlite3_stmt *pStmt; + sqlite3_int64 sz; + sqlite3_int64 id; + + nTop = atoi(findOption("top", 1, "25")); + printf("The %d largest segments:\n", nTop); + pStmt = prepare(db, + "SELECT blockid, length(block) AS len FROM '%q_segments'" + " ORDER BY 2 DESC, 1" + " LIMIT %d", zTab, nTop); + i = 0; + while( sqlite3_step(pStmt)==SQLITE_ROW ){ + i++; + id = sqlite3_column_int64(pStmt, 0); + sz = sqlite3_column_int64(pStmt, 1); + printf(" %2d. %9lld size %lld\n", i, id, sz); + } + sqlite3_finalize(pStmt); +} + static void usage(const char *argv0){ @@ -732,6 +757,7 @@ static void usage(const char *argv0){ " or: %s DATABASE FTS3TABLE ARGS...\n", argv0, argv0); fprintf(stderr, "ARGS:\n" + " big-segments [--top N] show the largest segments\n" " doclist BLOCKID OFFSET SIZE [--raw] Decode a doclist\n" " schema FTS table schema\n" " segdir directory of segments\n" @@ -777,7 +803,9 @@ int main(int argc, char **argv){ zCmd = argv[3]; nExtra = argc-4; azExtra = argv+4; - if( strcmp(zCmd,"doclist")==0 ){ + if( strcmp(zCmd,"big-segments")==0 ){ + listBigSegments(db, zTab); + }else if( strcmp(zCmd,"doclist")==0 ){ if( argc<7 ) usage(argv[0]); showDoclist(db, zTab); }else if( strcmp(zCmd,"schema")==0 ){ diff --git a/manifest b/manifest index 068fa1017a..7da4e728a7 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Merge\sthe\sfts4-incr-merge-exp\sbranch\swith\sfts4-incr-merge. -D 2012-03-27T13:44:28.992 +C Enhance\sthe\sfts3view\stool\swith\sthe\sbig-segment\scommand\sand\sfix\sa\sbug\sin\sthe\ndisplay\sof\sdoclists. +D 2012-03-27T13:51:31.240 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 2f37e468503dbe79d35c9f6dffcf3fae1ae9ec20 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -81,7 +81,7 @@ F ext/fts3/fts3_tokenizer1.c 5c98225a53705e5ee34824087478cf477bdb7004 F ext/fts3/fts3_write.c a9990753ba132cd79b666c61ec58ae15eb032387 F ext/fts3/fts3speed.tcl b54caf6a18d38174f1a6e84219950d85e98bb1e9 F ext/fts3/mkfts3amal.tcl 252ecb7fe6467854f2aa237bf2c390b74e71f100 -F ext/fts3/tool/fts3view.c 71d6149a268e8375cd9e5c8224868fa7460614c3 +F ext/fts3/tool/fts3view.c 153b47ecb91856f8462fa8b8320762ad62ca965a F ext/icu/README.txt bf8461d8cdc6b8f514c080e4e10dc3b2bbdfefa9 F ext/icu/icu.c eb9ae1d79046bd7871aa97ee6da51eb770134b5a F ext/icu/sqliteicu.h 728867a802baa5a96de7495e9689a8e01715ef37 @@ -1000,7 +1000,7 @@ F tool/tostr.awk e75472c2f98dd76e06b8c9c1367f4ab07e122d06 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f F tool/warnings-clang.sh 9f406d66e750e8ac031c63a9ef3248aaa347ef2a F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381 -P fb8aacdd8fbdc946cb271cc589f76b806387937d 7ed9d2f24a650b424b97dfc19b8042c4cf09c82c -R a481c2564099a87723843f2e40a259a7 -U dan -Z cbd151378395e54c0cdc970e0e7f2163 +P eb00b95885023a8592693f0babbb0066207073b0 +R 6a5cd3e2138fd11a98667226e3dd3f73 +U drh +Z d39fd2dac9646b20152fd68106b6fe3c diff --git a/manifest.uuid b/manifest.uuid index b6310eca9a..daf1033c00 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -eb00b95885023a8592693f0babbb0066207073b0 \ No newline at end of file +e9436d8038e5a0d1ba992a77d1064d4a55595f57 \ No newline at end of file