xapian-core
1.4.27
|
#include <glass_check.h>
Static Public Member Functions | |
static GlassTableCheck * | check (const char *tablename, const std::string &path, int fd, off_t offset_, const GlassVersion &version_file, int opts, std::ostream *out) |
Static Public Member Functions inherited from GlassTable | |
static void | throw_database_closed () |
Throw an exception indicating that the database is closed. More... | |
Private Member Functions | |
GlassTableCheck (const char *tablename_, const std::string &path_, bool readonly_, std::ostream *out_) | |
GlassTableCheck (const char *tablename_, int fd, off_t offset_, bool readonly_, std::ostream *out_) | |
void | block_check (Glass::Cursor *C_, int j, int opts, GlassFreeListChecker &flcheck) |
int | block_usage (const uint8_t *p) const |
void | report_block (int m, int n, const uint8_t *p) const |
GlassTableCheck::report_block(m, n, p) prints the block at p, block number n, indented by m spaces. More... | |
void | report_block_full (int m, int n, const uint8_t *p) const |
void | report_cursor (int N, const Glass::Cursor *C_) const |
void | print_key (const uint8_t *p, int c, int j) const |
void | print_tag (const uint8_t *p, int c, int j) const |
void | print_spaces (int n) const |
void | print_bytes (int n, const uint8_t *p) const |
Private Attributes | |
std::ostream * | out |
Additional Inherited Members | |
Public Member Functions inherited from GlassTable | |
GlassTable (const char *tablename_, const std::string &path_, bool readonly_, bool lazy=false) | |
Create a new Btree object. More... | |
GlassTable (const char *tablename_, int fd, off_t offset_, bool readonly_, bool lazy=false) | |
~GlassTable () | |
Close the Btree. More... | |
void | close (bool permanent=false) |
Close the Btree. More... | |
bool | readahead_key (const string &key) const |
bool | exists () const |
Determine whether the btree exists on disk. More... | |
void | open (int flags_, const RootInfo &root_info, glass_revision_number_t rev) |
Open the btree. More... | |
bool | is_open () const |
Return true if this table is open. More... | |
bool | is_writable () const |
Return true if this table is writable. More... | |
void | flush_db () |
Flush any outstanding changes to the DB file of the table. More... | |
void | commit (glass_revision_number_t revision, RootInfo *root_info) |
Commit any outstanding changes to the table. More... | |
bool | sync () |
void | cancel (const RootInfo &root_info, glass_revision_number_t rev) |
Cancel any outstanding changes. More... | |
bool | get_exact_entry (const std::string &key, std::string &tag) const |
Read an entry from the table, if and only if it is exactly that being asked for. More... | |
bool | key_exists (const std::string &key) const |
Check if a key exists in the Btree. More... | |
bool | read_tag (Glass::Cursor *C_, std::string *tag, bool keep_compressed) const |
Read the tag value for the key pointed to by cursor C_. More... | |
void | add (const std::string &key, const std::string &tag, bool already_compressed=false) |
Add a key/tag pair to the table, replacing any existing pair with the same key. More... | |
bool | del (const std::string &key) |
Delete an entry from the table. More... | |
int | get_flags () const |
void | create_and_open (int flags_, const RootInfo &root_info) |
Create a new empty btree structure on disk and open it at the initial revision. More... | |
void | set_full_compaction (bool parity) |
glass_revision_number_t | get_open_revision_number () const |
Get the revision number at which this table is currently open. More... | |
glass_tablesize_t | get_entry_count () const |
Return a count of the number of entries in the table. More... | |
bool | empty () const |
Return true if there are no entries in the table. More... | |
GlassCursor * | cursor_get () const |
Get a cursor for reading from the table. More... | |
bool | is_modified () const |
Determine whether the object contains uncommitted modifications. More... | |
void | set_max_item_size (size_t block_capacity) |
Set the maximum item size given the block capacity. More... | |
void | set_changes (GlassChanges *changes) |
Set the GlassChanges object to write changed blocks to. More... | |
string | get_path () const |
Protected Member Functions inherited from GlassTable | |
bool | find (Glass::Cursor *) const |
find(C_) searches for the key of B->kt in the B-tree. More... | |
int | delete_kt () |
void | read_block (uint4 n, uint8_t *p) const |
read_block(n, p) reads block n of the DB file to address p. More... | |
void | write_block (uint4 n, const uint8_t *p, bool appending=false) const |
write_block(n, p, appending) writes block n in the DB file from address p. More... | |
void | set_overwritten () const |
void | block_to_cursor (Glass::Cursor *C_, int j, uint4 n) const |
void | alter () |
Btree::alter(); is called when the B-tree is to be altered. More... | |
void | compact (uint8_t *p) |
compact(p) compact the block at p by shuffling all the items up to the end. More... | |
void | enter_key_above_leaf (Glass::LeafItem previtem, Glass::LeafItem newitem) |
enter_key_above_leaf(previtem, newitem) is called after a leaf block split. More... | |
void | enter_key_above_branch (int j, Glass::BItem newitem) |
enter_key_above_branch(j, newkey) is called after a branch block split. More... | |
int | mid_point (uint8_t *p) const |
mid_point(p) finds the directory entry in c that determines the approximate mid point of the data in the block at p. More... | |
void | add_item_to_leaf (uint8_t *p, Glass::LeafItem kt, int c) |
add_item_to_leaf(p, kt_, c) adds item kt_ to the leaf block at p. More... | |
void | add_item_to_branch (uint8_t *p, Glass::BItem kt, int c) |
add_item_to_branch(p, kt_, c) adds item kt_ to the branch block at p. More... | |
void | add_leaf_item (Glass::LeafItem kt) |
GlassTable::add_leaf_item(kt_) adds item kt_ to the leaf block. More... | |
void | add_branch_item (Glass::BItem kt, int j) |
GlassTable::add_item(kt_, j) adds item kt_ to the block at cursor level C[j]. More... | |
void | delete_leaf_item (bool repeatedly) |
GlassTable::delete_leaf_item(repeatedly) is (almost) the converse of add_leaf_item. More... | |
void | delete_branch_item (int j) |
GlassTable::delete_branch_item(j, repeatedly) is (almost) the converse of add_branch_item. More... | |
int | add_kt (bool found) |
add_kt(found) adds the item (key-tag pair) at B->kt into the B-tree, using cursor C. More... | |
void | read_root () |
void | split_root (uint4 split_n) |
Btree needs to gain a new level to insert more items: so split root block and construct a new one. More... | |
void | form_key (const std::string &key) const |
bool | single_file () const |
bool | prev (Glass::Cursor *C_, int j) const |
bool | next (Glass::Cursor *C_, int j) const |
bool | prev_default (Glass::Cursor *C_, int j) const |
bool | next_default (Glass::Cursor *C_, int j) const |
bool | prev_for_sequential (Glass::Cursor *C_, int dummy) const |
bool | next_for_sequential (Glass::Cursor *C_, int dummy) const |
Static Protected Member Functions inherited from GlassTable | |
static int | find_in_leaf (const uint8_t *p, Glass::LeafItem item, int c, bool &exact) |
find_in_leaf(p, key, c, exact) searches for the key in the leaf block at p. More... | |
static int | find_in_branch (const uint8_t *p, Glass::LeafItem item, int c) |
static int | find_in_branch (const uint8_t *p, Glass::BItem item, int c) |
static uint4 | block_given_by (const uint8_t *p, int c) |
block_given_by(p, c) finds the item at block address p, directory offset c, and returns its tag value as an integer. More... | |
Protected Attributes inherited from GlassTable | |
const char * | tablename |
The name of the table (used when writing changesets). More... | |
glass_revision_number_t | revision_number |
revision number of the opened B-tree. More... | |
glass_tablesize_t | item_count |
keeps a count of the number of items in the B-tree. More... | |
unsigned int | block_size |
block size of the B tree in bytes More... | |
int | flags |
Flags like DB_NO_SYNC and DB_DANGEROUS. More... | |
bool | faked_root_block |
true if the root block is faked (not written to disk). More... | |
bool | sequential |
true iff the data has been written in a single write in sequential order. More... | |
int | handle |
File descriptor of the table. More... | |
int | level |
number of levels, counting from 0 More... | |
uint4 | root |
the root block of the B-tree More... | |
Glass::LeafItem_wr | kt |
buffer of size block_size for making up key-tag items More... | |
uint8_t * | buffer |
buffer of size block_size for reforming blocks More... | |
GlassFreeList | free_list |
List of free blocks. More... | |
std::string | name |
The path name of the B tree. More... | |
int | seq_count |
count of the number of successive instances of purely sequential addition, starting at SEQ_START_POINT (neg) and going up to zero. More... | |
uint4 | changed_n |
the last block to be changed by an addition More... | |
int | changed_c |
directory offset corresponding to last block to be changed by an addition More... | |
size_t | max_item_size |
maximum size of an item (key-tag pair) More... | |
bool | Btree_modified |
Set to true the first time the B-tree is modified. More... | |
bool | full_compaction |
set to true when full compaction is to be achieved More... | |
bool | writable |
Set to true when the database is opened to write. More... | |
bool | cursor_created_since_last_modification |
Flag for tracking when cursors need to rebuild. More... | |
unsigned long | cursor_version |
Version count for tracking when cursors need to rebuild. More... | |
GlassChanges * | changes_obj |
The GlassChanges object to write block changes to. More... | |
Glass::Cursor | C [GLASS_BTREE_CURSOR_LEVELS] |
uint8_t * | split_p |
Buffer used when splitting a block. More... | |
uint4 | compress_min |
Minimum size tag to try compressing (0 for no compression). More... | |
CompressionStream | comp_stream |
bool | lazy |
If true, don't create the table until it's needed. More... | |
uint4 | last_readahead |
Last block readahead_key() preread. More... | |
off_t | offset |
offset to start of table in file. More... | |
Definition at line 36 of file glass_check.h.
|
inlineprivate |
Definition at line 45 of file glass_check.h.
|
inlineprivate |
Definition at line 49 of file glass_check.h.
References block_check(), block_usage(), print_bytes(), print_key(), print_spaces(), print_tag(), report_block(), report_block_full(), and report_cursor().
|
private |
Definition at line 156 of file glass_check.cc.
References Glass::Cursor::c, Glass::compare(), Glass::D2, Xapian::DBCHECK_FULL_TREE, Xapian::DBCHECK_SHORT_TREE, Glass::DIR_END(), Glass::DIR_START, failure(), Glass::LeafItem_base< T >::get_address(), Glass::BItem_base< T >::get_address(), Glass::GET_LEVEL(), Glass::Cursor::get_n(), Glass::Cursor::get_p(), GlassFreeListChecker::mark_used(), Glass::MAX_FREE(), Glass::REVISION(), Glass::LeafItem_base< T >::size(), Glass::BItem_base< T >::size(), and Glass::TOTAL_FREE().
Referenced by GlassTableCheck().
|
private |
Definition at line 109 of file glass_check.cc.
References Glass::DIR_END(), and Glass::TOTAL_FREE().
Referenced by GlassTableCheck().
|
static |
Definition at line 263 of file glass_check.cc.
References C, GlassFreeListChecker::count_set_bits(), Xapian::DBCHECK_SHOW_FREELIST, Xapian::DBCHECK_SHOW_STATS, Glass::DOCDATA, failure(), Glass::Cursor::get_n(), GlassVersion::get_revision(), GlassVersion::get_root(), GlassFreeListChecker::mark_used(), Glass::POSITION, Glass::POSTLIST, Glass::SPELLING, Xapian::Internal::str(), Glass::SYNONYM, and Glass::TERMLIST.
Referenced by check_glass_table().
|
private |
Definition at line 45 of file glass_check.cc.
Referenced by GlassTableCheck().
|
private |
Definition at line 50 of file glass_check.cc.
References Glass::LeafItem_base< T >::component_of(), description_append(), Glass::LeafItem_base< T >::key(), Glass::BItem_base< T >::key(), Glass::LeafItem_base< T >::last_component(), Glass::Key::length(), and Glass::Key::read().
Referenced by GlassTableCheck().
|
private |
Definition at line 40 of file glass_check.cc.
Referenced by GlassTableCheck().
|
private |
Definition at line 76 of file glass_check.cc.
References Glass::LeafItem_base< T >::append_chunk(), Glass::BItem_base< T >::block_given_by(), and description_append().
Referenced by GlassTableCheck().
|
private |
GlassTableCheck::report_block(m, n, p) prints the block at p, block number n, indented by m spaces.
Definition at line 119 of file glass_check.cc.
References Glass::D2, Glass::DIR_END(), Glass::DIR_START, failure(), Glass::GET_LEVEL(), and Glass::REVISION().
Referenced by GlassTableCheck().
|
private |
Definition at line 91 of file glass_check.cc.
References Glass::D2, Glass::DIR_END(), Glass::DIR_START, Glass::GET_LEVEL(), and Glass::REVISION().
Referenced by GlassTableCheck().
|
private |
Definition at line 362 of file glass_check.cc.
References Glass::Cursor::c, Glass::Cursor::get_n(), and Glass::Cursor::rewrite.
Referenced by GlassTableCheck().
|
private |
Definition at line 65 of file glass_check.h.