/* ** Print the content of a segment or of the root of a segdir. The segment ** or root is identified by azExtra[0]. If the first character of azExtra[0] ** is 'r' then the remainder is the integer rowid of the %_segdir entry. ** If the first character of azExtra[0] is not 'r' then, then all of ** azExtra[0] is an integer which is the block number. ** ** If the --raw option is present in azExtra, then a hex dump is provided. ** Otherwise a decoding is shown. */ static void showSegment(sqlite3 *db, const char *zTab) { const unsigned char *aData; int nData; sqlite3_stmt *pStmt; pStmt = prepareToGetSegment(db, zTab, azExtra[0]); if( sqlite3_step(pStmt)!=SQLITE_ROW ) { sqlite3_finalize(pStmt); return; } nData = sqlite3_column_bytes(pStmt, 0); aData = sqlite3_column_blob(pStmt, 0); printf("Segment %s of size %d bytes:\n", azExtra[0], nData); if( findOption("raw", 0, 0)!=0 ) { printBlob(aData, nData); } else { decodeSegment(aData, nData); } sqlite3_finalize(pStmt); }
/* ** Print the content of a doclist. The segment or segdir-root is ** identified by azExtra[0]. If the first character of azExtra[0] ** is 'r' then the remainder is the integer rowid of the %_segdir entry. ** If the first character of azExtra[0] is not 'r' then, then all of ** azExtra[0] is an integer which is the block number. The offset ** into the segment is identified by azExtra[1]. The size of the doclist ** is azExtra[2]. ** ** If the --raw option is present in azExtra, then a hex dump is provided. ** Otherwise a decoding is shown. */ static void showDoclist(sqlite3 *db, const char *zTab){ const unsigned char *aData; sqlite3_int64 offset, nData; sqlite3_stmt *pStmt; offset = atoi64(azExtra[1]); nData = atoi64(azExtra[2]); pStmt = prepareToGetSegment(db, zTab, azExtra[0]); if( sqlite3_step(pStmt)!=SQLITE_ROW ){ sqlite3_finalize(pStmt); return; } aData = sqlite3_column_blob(pStmt, 0); printf("Doclist at %s offset %lld of size %lld bytes:\n", azExtra[0], offset, nData); if( findOption("raw", 0, 0)!=0 ){ printBlob(aData+offset, nData); }else{ decodeDoclist(aData+offset, nData); } sqlite3_finalize(pStmt); }