Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | 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. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | fts4-incr-merge |
Files: | files | file ages | folders |
SHA1: |
04aea0245e4183fef3664609f5a6353b |
User & Date: | drh 2012-03-27 14:54:44.486 |
Context
2012-03-27
| ||
15:00 | Remove the fts3merge.test script in favour of changing the fts4merge.test script so that it runs tests using both fts4 and fts3. Fix some problems with incr-merge and FTS3 tables. (check-in: 5c447e226a user: dan tags: fts4-incr-merge) | |
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) | |
Changes
Changes to ext/fts3/tool/fts3view.c.
︙ | ︙ | |||
413 414 415 416 417 418 419 420 421 422 423 424 425 426 | static void printTreeLine(sqlite3_int64 iLower, sqlite3_int64 iUpper){ printf(" tree %9lld", iLower); if( iUpper>iLower ){ printf(" thru %9lld (%lld blocks)", iUpper, iUpper-iLower+1); } printf("\n"); } /* ** Show a map of segments derived from the %_segdir table. */ static void showSegdirMap(sqlite3 *db, const char *zTab){ int mxIndex, iIndex; sqlite3_stmt *pStmt = 0; | > > > > > > > > > > > > > > > > | 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 | static void printTreeLine(sqlite3_int64 iLower, sqlite3_int64 iUpper){ printf(" tree %9lld", iLower); if( iUpper>iLower ){ printf(" thru %9lld (%lld blocks)", iUpper, iUpper-iLower+1); } printf("\n"); } /* ** Check to see if the block of a %_segments entry is NULL. */ static int isNullSegment(sqlite3 *db, const char *zTab, sqlite3_int64 iBlockId){ sqlite3_stmt *pStmt; int rc = 1; pStmt = prepare(db, "SELECT block IS NULL FROM '%q_segments'" " WHERE blockid=%lld", zTab, iBlockId); if( sqlite3_step(pStmt)==SQLITE_ROW ){ rc = sqlite3_column_int(pStmt, 0); } sqlite3_finalize(pStmt); return rc; } /* ** Show a map of segments derived from the %_segdir table. */ static void showSegdirMap(sqlite3 *db, const char *zTab){ int mxIndex, iIndex; sqlite3_stmt *pStmt = 0; |
︙ | ︙ | |||
455 456 457 458 459 460 461 462 463 464 465 466 467 | prevLevel = -1; while( sqlite3_step(pStmt)==SQLITE_ROW ){ int iLevel = sqlite3_column_int(pStmt, 0)%1024; int iIdx = sqlite3_column_int(pStmt, 1); sqlite3_int64 iStart = sqlite3_column_int64(pStmt, 2); sqlite3_int64 iLEnd = sqlite3_column_int64(pStmt, 3); sqlite3_int64 iEnd = sqlite3_column_int64(pStmt, 4); if( iLevel!=prevLevel ){ printf("level %2d idx %2d", iLevel, iIdx); prevLevel = iLevel; }else{ printf(" idx %2d", iIdx); } | > > | > > > > > > > | > > | 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 | prevLevel = -1; while( sqlite3_step(pStmt)==SQLITE_ROW ){ int iLevel = sqlite3_column_int(pStmt, 0)%1024; int iIdx = sqlite3_column_int(pStmt, 1); sqlite3_int64 iStart = sqlite3_column_int64(pStmt, 2); sqlite3_int64 iLEnd = sqlite3_column_int64(pStmt, 3); sqlite3_int64 iEnd = sqlite3_column_int64(pStmt, 4); char rtag[20]; if( iLevel!=prevLevel ){ printf("level %2d idx %2d", iLevel, iIdx); prevLevel = iLevel; }else{ printf(" idx %2d", iIdx); } sqlite3_snprintf(sizeof(rtag), rtag, "r%lld", sqlite3_column_int64(pStmt,5)); printf(" root %9s\n", rtag); if( iLEnd>iStart ){ sqlite3_int64 iLower, iPrev, iX; if( iLEnd+1<=iEnd ){ sqlite3_bind_int64(pStmt2, 1, iLEnd+1); sqlite3_bind_int64(pStmt2, 2, iEnd); iLower = -1; while( sqlite3_step(pStmt2)==SQLITE_ROW ){ iX = sqlite3_column_int64(pStmt2, 0); if( iLower<0 ){ iLower = iPrev = iX; }else if( iX==iPrev+1 ){ iPrev = iX; }else{ printTreeLine(iLower, iPrev); iLower = iPrev = iX; } } sqlite3_reset(pStmt2); if( iLower>=0 ){ if( iLower==iPrev && iLower==iEnd && isNullSegment(db,zTab,iLower) ){ printf(" null %9lld\n", iLower); }else{ printTreeLine(iLower, iPrev); } } } printf(" leaves %9lld thru %9lld (%lld blocks)\n", iStart, iLEnd, iLEnd - iStart + 1); } } sqlite3_reset(pStmt); } |
︙ | ︙ |