Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Enhance the fts3view tool with the big-segment command and fix a bug in the display of doclists. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | fts4-incr-merge |
Files: | files | file ages | folders |
SHA1: |
e9436d8038e5a0d1ba992a77d1064d4a |
User & Date: | drh 2012-03-27 13:51:31.240 |
Context
2012-03-27
| ||
14:54 | In the fts3view utility, label the blank segments used to mark the end of a segment sequence for a level/idx as "null". Improve the alignment of root segment names. (check-in: 04aea0245e user: drh tags: fts4-incr-merge) | |
13:51 | Enhance the fts3view tool with the big-segment command and fix a bug in the display of doclists. (check-in: e9436d8038 user: drh tags: fts4-incr-merge) | |
13:44 | Merge the fts4-incr-merge-exp branch with fts4-incr-merge. (check-in: eb00b95885 user: dan tags: fts4-incr-merge) | |
Changes
Changes to ext/fts3/tool/fts3view.c.
︙ | ︙ | |||
678 679 680 681 682 683 684 | i += getVarint(aData+i, &iCol); printf(" col%lld", iCol); iPrevPos = 0; }else if( iPos==0 ){ printf("\n"); break; }else{ | > | < | 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 | i += getVarint(aData+i, &iCol); printf(" col%lld", iCol); iPrevPos = 0; }else if( iPos==0 ){ printf("\n"); break; }else{ iPrevPos += iPos - 2; printf(" %lld", iPrevPos); } } } } /* |
︙ | ︙ | |||
721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 | printBlob(aData+offset, nData); }else{ decodeDoclist(aData+offset, nData); } sqlite3_finalize(pStmt); } static void usage(const char *argv0){ fprintf(stderr, "Usage: %s DATABASE\n" " or: %s DATABASE FTS3TABLE ARGS...\n", argv0, argv0); fprintf(stderr, "ARGS:\n" " doclist BLOCKID OFFSET SIZE [--raw] Decode a doclist\n" " schema FTS table schema\n" " segdir directory of segments\n" " segment BLOCKID [--raw] content of a segment\n" " segment-stats info on segment sizes\n" " stat the %%_stat table\n" " vocabulary [--top N] document vocabulary\n" | > > > > > > > > > > > > > > > > > > > > > > > > > > | 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 | printBlob(aData+offset, nData); }else{ decodeDoclist(aData+offset, nData); } 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){ fprintf(stderr, "Usage: %s DATABASE\n" " 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" " segment BLOCKID [--raw] content of a segment\n" " segment-stats info on segment sizes\n" " stat the %%_stat table\n" " vocabulary [--top N] document vocabulary\n" |
︙ | ︙ | |||
773 774 775 776 777 778 779 | return 0; } if( argc<4 ) usage(argv[0]); zTab = argv[2]; zCmd = argv[3]; nExtra = argc-4; azExtra = argv+4; | > > | | 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 | return 0; } if( argc<4 ) usage(argv[0]); zTab = argv[2]; zCmd = argv[3]; nExtra = argc-4; azExtra = argv+4; 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 ){ showSchema(db, zTab); }else if( strcmp(zCmd,"segdir")==0 ){ showSegdirMap(db, zTab); }else if( strcmp(zCmd,"segment")==0 ){ |
︙ | ︙ |