]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Enhance showfts5.tcl so that it can optionally display the number of terms in each...
authordan <dan@noemail.net>
Fri, 4 Sep 2015 11:13:00 +0000 (11:13 +0000)
committerdan <dan@noemail.net>
Fri, 4 Sep 2015 11:13:00 +0000 (11:13 +0000)
FossilOrigin-Name: d648ddd93de039820f5abe064c7bc1318cd9d6b1

ext/fts5/fts5_index.c
ext/fts5/test/fts5aa.test
ext/fts5/test/fts5ah.test
ext/fts5/tool/showfts5.tcl
manifest
manifest.uuid

index 7bb744773ccf75bb73cf753f3d3fba5b57b21fc0..5bf4feba93d18ebfd7b8629e9d588a1639486e45 100644 (file)
@@ -5104,13 +5104,13 @@ static void fts5DebugRowid(int *pRc, Fts5Buffer *pBuf, i64 iKey){
 
   if( iSegid==0 ){
     if( iKey==FTS5_AVERAGES_ROWID ){
-      sqlite3Fts5BufferAppendPrintf(pRc, pBuf, "(averages) ");
+      sqlite3Fts5BufferAppendPrintf(pRc, pBuf, "{averages} ");
     }else{
-      sqlite3Fts5BufferAppendPrintf(pRc, pBuf, "(structure)");
+      sqlite3Fts5BufferAppendPrintf(pRc, pBuf, "{structure}");
     }
   }
   else{
-    sqlite3Fts5BufferAppendPrintf(pRc, pBuf, "(%ssegid=%d h=%d pgno=%d)",
+    sqlite3Fts5BufferAppendPrintf(pRc, pBuf, "{%ssegid=%d h=%d pgno=%d}",
         bDlidx ? "dlidx " : "", iSegid, iHeight, iPgno
     );
   }
index 5f3a9d9e1d4f0795baef7de9e383c0b345995a04..e0ff6a613253845afcd23f2088c05e26e203b27c 100644 (file)
@@ -51,7 +51,7 @@ do_execsql_test 2.1 {
 
 do_test 2.2 {
   execsql { SELECT fts5_decode(id, block) FROM t1_data WHERE id==10 }
-} {/{\(structure\) {lvl=0 nMerge=0 nSeg=1 {id=[0123456789]* h=0 leaves=1..1}}}/}
+} {/{{structure} {lvl=0 nMerge=0 nSeg=1 {id=[0123456789]* h=0 leaves=1..1}}}/}
 
 foreach w {a b c d e f} {
   do_execsql_test 2.3.$w.asc {
index 3c8ad253d191dd9b2ead3d349b481f674ddba702..6d7e39f79302bafd94ef68cc8aacc3cbee6998d0 100644 (file)
@@ -90,13 +90,13 @@ foreach {tn q res} "
 
   do_test 1.6.$tn.1 {
     set n [execsql_reads $q]
-    puts -nonewline "(n=$n nReadX=$nReadX)"
+    #puts -nonewline "(n=$n nReadX=$nReadX)"
     expr {$n < ($nReadX / 8)}
   } {1}
 
   do_test 1.6.$tn.2 {
     set n [execsql_reads "$q ORDER BY rowid DESC"]
-    puts -nonewline "(n=$n nReadX=$nReadX)"
+    #puts -nonewline "(n=$n nReadX=$nReadX)"
     expr {$n < ($nReadX / 8)}
   } {1}
 
index 846902b3be48f57099fb5977a71b7471de931815..d9af5f38eb667ab8cbdf28a02d3c5aea15a7f838 100644 (file)
@@ -5,15 +5,53 @@
 # Process command line arguments.
 #
 proc usage {} {
-  puts stderr "usage: $::argv0 database table"
+  puts stderr "usage: $::argv0 ?OPTIONS? database table"
+  puts stderr ""
+  puts stderr "  -nterm                (count number of terms in each segment)"
   puts stderr ""
   exit 1
 }
-if {[llength $argv]!=2} usage
-set database [lindex $argv 0]
-set tbl [lindex $argv 1]
+
+set O(nterm) 0
+
+if {[llength $argv]<2} usage
+foreach a [lrange $argv 0 end-2] {
+  switch -- $a {
+    -nterm {
+      set O(nterm) 1
+    }
+
+    default {
+      usage
+    }
+  }
+}
+
+set database [lindex $argv end-1]
+set tbl [lindex $argv end]
 
 
+#-------------------------------------------------------------------------
+# Count the number of terms in each segment of fts5 table $tbl. Store the
+# counts in the array variable in the parent context named by parameter
+# $arrayname, indexed by segment-id. Example:
+#
+#   count_terms fts_tbl A
+#   foreach {k v} [array get A] { puts "segid=$k nTerm=$v" }
+#
+proc count_terms {tbl arrayname} {
+  upvar A $arrayname
+  array unset A
+  db eval "SELECT fts5_decode(rowid, block) AS d FROM ${tbl}_data" {
+    set desc [lindex $d 0]
+    if {[regexp {^segid=([0-9]*)} $desc -> id]} {
+      foreach i [lrange $d 1 end] {
+        if {[string match {term=*} $i]} { incr A($id) }
+      }
+    }
+  }
+}
+
 
 #-------------------------------------------------------------------------
 # Start of main program.
@@ -21,11 +59,21 @@ set tbl [lindex $argv 1]
 sqlite3 db $database
 catch { load_static_extension db fts5 }
 
+if {$O(nterm)} { count_terms $tbl A }
+
 db eval "SELECT fts5_decode(rowid, block) AS d FROM ${tbl}_data WHERE id=10" {
   foreach lvl [lrange $d 1 end] {
     puts [lrange $lvl 0 2]
+
     foreach seg [lrange $lvl 3 end] {
-      puts "        $seg"
+      if {$::O(nterm)} {
+        regexp {^id=([0-9]*)} $seg -> id
+        set nTerm 0
+        catch { set nTerm $A($id) }
+        puts [format "        % -28s    nTerm=%d" $seg $nTerm]
+      } else {
+        puts [format "        % -28s" $seg]
+      }
     }
   }
 }
index e7ca9c9cebf793ae66a646594f63c3fab56c16d7..b900ddf1c95eb462a730661725274af34abe23de 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Modify\sthe\sfts5\scustom\stokenizer\sinterface\sto\spermit\ssynonym\ssupport.\sThe\sfts5_api.iVersion\svalue\sis\snow\sset\sto\s2.\sExisting\sfts5\scustom\stokenizers\s(if\sthere\sare\ssuch\sthings)\swill\sneed\sto\sbe\supdated\sto\suse\sthe\snew\sapi\sversion.
-D 2015-09-04T10:31:51.624
+C Enhance\sshowfts5.tcl\sso\sthat\sit\scan\soptionally\sdisplay\sthe\snumber\sof\sterms\sin\seach\ssegment.
+D 2015-09-04T11:13:00.822
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in f85066ce844a28b671aaeeff320921cd0ce36239
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -112,7 +112,7 @@ F ext/fts5/fts5_buffer.c 80f9ba4431848cb857e3d2158f5280093dcd8015
 F ext/fts5/fts5_config.c 80b61fd2c6844b64a3e72a64572d50a812da9384
 F ext/fts5/fts5_expr.c 1c24e1a2ffb286bfe37e537a43b7fadabfe993d4
 F ext/fts5/fts5_hash.c 4bf4b99708848357b8a2b5819e509eb6d3df9246
-F ext/fts5/fts5_index.c febb68173333ae3248eb15928a18b21112d45135
+F ext/fts5/fts5_index.c 950e37028cc81ae21534819e79c73aea7efa6c8e
 F ext/fts5/fts5_main.c e9d0892424bb7f0a8b58613d4ff75cb650cf286e
 F ext/fts5/fts5_storage.c 120f7b143688b5b7710dacbd48cff211609b8059
 F ext/fts5/fts5_tcl.c 6da58d6e8f42a93c4486b5ba9b187a7f995dee37
@@ -124,14 +124,14 @@ F ext/fts5/fts5_vocab.c 4622e0b7d84a488a1585aaa56eb214ee67a988bc
 F ext/fts5/fts5parse.y 833db1101b78c0c47686ab1b84918e38c36e9452
 F ext/fts5/mkportersteps.tcl 5acf962d2e0074f701620bb5308155fa1e4a63ba
 F ext/fts5/test/fts5_common.tcl b6e6a40ef5d069c8e86ca4fbad491e1195485dbc
-F ext/fts5/test/fts5aa.test be961d10b0eff5e973c37b3b7a32a18cda87a77c
+F ext/fts5/test/fts5aa.test f558e1e5ccffa75d69e9a4814245d468ec6b6608
 F ext/fts5/test/fts5ab.test 6fe3a56731d15978afbb74ae51b355fc9310f2ad
 F ext/fts5/test/fts5ac.test 9737992d08c56bfd4803e933744d2d764e23795c
 F ext/fts5/test/fts5ad.test b2edee8b7de0c21d2c88f8a18c195034aad6952d
 F ext/fts5/test/fts5ae.test 0a9984fc3479f89f8c63d9848d6ed0c465dfcebe
 F ext/fts5/test/fts5af.test c2501ec2b61d6b179c305f5d2b8782ab3d4f832a
 F ext/fts5/test/fts5ag.test ec3e119b728196620a31507ef503c455a7a73505
-F ext/fts5/test/fts5ah.test b9e78fa986a7bd564ebadfb244de02c84d7ac3ae
+F ext/fts5/test/fts5ah.test e592c4978622dbc4de552cd0f9395df60ac5d54c
 F ext/fts5/test/fts5ai.test f20e53bbf0c55bc596f1fd47f2740dae028b8f37
 F ext/fts5/test/fts5aj.test 05b569f5c16ea3098fb1984eec5cf50dbdaae5d8
 F ext/fts5/test/fts5ak.test 7b8c5df96df599293f920b7e5521ebc79f647592
@@ -183,7 +183,7 @@ F ext/fts5/test/fts5version.test 205beb2a67d9496af64df959e6a19238f69b83e8
 F ext/fts5/test/fts5vocab.test cdf97b9678484e9bad5062edf9c9106e5c3b0c5c
 F ext/fts5/tool/loadfts5.tcl 95edf0b6b92a09f9ed85595038b1108127987556
 F ext/fts5/tool/mkfts5c.tcl 5745072c7de346e18c7f491e4c3281fe8a1cfe51
-F ext/fts5/tool/showfts5.tcl fb62e8eae6d862afdd22f367e286fb886d5e1ab6
+F ext/fts5/tool/showfts5.tcl 9eaf6c3df352f98a2ab5ce1921dd94128ab1381d
 F ext/icu/README.txt d9fbbad0c2f647c3fdf715fc9fd64af53aedfc43
 F ext/icu/icu.c b2732aef0b076e4276d9b39b5a33cec7a05e1413
 F ext/icu/sqliteicu.h 728867a802baa5a96de7495e9689a8e01715ef37
@@ -1382,7 +1382,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 05a3a2cd140587265b5427d23c93c5be1f39e199 443a5eb8e17fd4f0b83ecc5bba74848e2c8a968c
-R 3837e1c9ccb54eb6541c962b4dbcd417
+P 0b7e4ab8abde3ae32459233df115c433dd58d2c1
+R bc4ba10677c1404768969390b0481a23
 U dan
-Z 9252bca216b9264b05e49a4db9d079d2
+Z d0a91d26d23415f8f905dbc22cf63e6b
index 36dfbd374c2b2f903aac57c341d735b9ca58c38a..43a83fe0ddc43adde69578b6e399f1e2c425d7c2 100644 (file)
@@ -1 +1 @@
-0b7e4ab8abde3ae32459233df115c433dd58d2c1
\ No newline at end of file
+d648ddd93de039820f5abe064c7bc1318cd9d6b1
\ No newline at end of file