]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Enhance the fts3view tool with the big-segment command and fix a bug in the
authordrh <drh@noemail.net>
Tue, 27 Mar 2012 13:51:31 +0000 (13:51 +0000)
committerdrh <drh@noemail.net>
Tue, 27 Mar 2012 13:51:31 +0000 (13:51 +0000)
display of doclists.

FossilOrigin-Name: e9436d8038e5a0d1ba992a77d1064d4a55595f57

ext/fts3/tool/fts3view.c
manifest
manifest.uuid

index 1ecb581171badd054467f650c477f6bf7fdb4199..9b33e159988d7b265ad7f8431ed844a9b59ba9d1 100644 (file)
@@ -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 ){
index 068fa1017a793c789b7e87b86ff9b755db97664f..7da4e728a7c31b9aa5169b822bf5b3b18752d181 100644 (file)
--- 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
index b6310eca9a41ca27de736c1994d7fcfce99ddfda..daf1033c004bd782711047dd581209ee091dade4 100644 (file)
@@ -1 +1 @@
-eb00b95885023a8592693f0babbb0066207073b0
\ No newline at end of file
+e9436d8038e5a0d1ba992a77d1064d4a55595f57
\ No newline at end of file