xapian-core  1.4.26
Public Member Functions | Private Attributes | List of all members
ChertSynonymTable Class Reference

#include <chert_synonym.h>

+ Inheritance diagram for ChertSynonymTable:
+ Collaboration diagram for ChertSynonymTable:

Public Member Functions

 ChertSynonymTable (const std::string &dbdir, bool readonly)
 Create a new ChertSynonymTable object. More...
 
void merge_changes ()
 
void discard_changes ()
 
void add_synonym (const std::string &term, const std::string &synonym)
 Add a synonym for term. More...
 
void remove_synonym (const std::string &term, const std::string &synonym)
 Remove a synonym for term. More...
 
void clear_synonyms (const std::string &term)
 Remove all synonyms for term. More...
 
TermListopen_termlist (const std::string &term)
 Open synonym termlist for a term. More...
 
bool is_modified () const
 Override methods of ChertTable. More...
 
void flush_db ()
 Override methods of ChertTable. More...
 
void cancel ()
 Override methods of ChertTable. More...
 
- Public Member Functions inherited from ChertLazyTable
 ChertLazyTable (const char *name_, const std::string &path, bool readonly, int z_strategy)
 Create a new lazy table. More...
 
void create_and_open (unsigned int blocksize)
 Lazy version of ChertTable::create_and_open(). More...
 
- Public Member Functions inherited from ChertTable
 ChertTable (const char *tablename_, const std::string &path_, bool readonly_, int compress_strategy_=DONT_COMPRESS, bool lazy=false)
 Create a new Btree object. More...
 
 ~ChertTable ()
 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 ()
 Open the btree at the latest revision. More...
 
bool open (chert_revision_number_t revision_)
 Open the btree at a given revision. More...
 
bool is_open () const
 Return true if this table is open. More...
 
void flush_db ()
 Flush any outstanding changes to the DB file of the table. More...
 
void commit (chert_revision_number_t revision, int changes_fd=-1, const std::string *changes_tail=NULL)
 Commit any outstanding changes to the table. More...
 
void write_changed_blocks (int changes_fd)
 Append the list of blocks changed to a changeset file. More...
 
void cancel ()
 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 (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, 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...
 
void erase ()
 Erase this table from disk. More...
 
void set_block_size (unsigned int block_size_)
 Set the block size. More...
 
unsigned int get_block_size () const
 Get the block size. More...
 
void create_and_open (unsigned int blocksize)
 Create a new empty btree structure on disk and open it at the initial revision. More...
 
void set_full_compaction (bool parity)
 
chert_revision_number_t get_latest_revision_number () const
 Get the latest revision number stored in this table. More...
 
chert_revision_number_t get_open_revision_number () const
 Get the revision number at which this table is currently open. More...
 
chert_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...
 
ChertCursorcursor_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...
 
string get_path () const
 

Private Attributes

std::string last_term
 The last term which was updated. More...
 
std::set< std::string > last_synonyms
 The synonyms for the last term which was updated. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from ChertTable
static void throw_database_closed ()
 Throw an exception indicating that the database is closed. More...
 
- Protected Member Functions inherited from ChertTable
bool do_open_to_read (bool revision_supplied, chert_revision_number_t revision_)
 Perform the opening operation to read. More...
 
bool do_open_to_write (bool revision_supplied, chert_revision_number_t revision_, bool create_db=false)
 Perform the opening operation to write. More...
 
bool basic_open (bool revision_supplied, chert_revision_number_t revision)
 
bool find (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) const
 write_block(n, p) writes block n in the DB file from address p. More...
 
void set_overwritten () const
 
void block_to_cursor (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 (int j, Key prevkey, Key newkey)
 enter_key(j, prevkey, newkey) is called after a 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_block (uint8_t *p, Item_wr kt, int c)
 add_item_to_block(p, kt_, c) adds item kt_ to the block at p. More...
 
void add_item (Item_wr kt, int j)
 ChertTable::add_item(kt_, j) adds item kt_ to the block at cursor level C[j]. More...
 
void delete_item (int j, bool repeatedly)
 ChertTable::delete_item(j, repeatedly) is (almost) the converse of add_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
 
char other_base_letter () const
 
void lazy_alloc_deflate_zstream () const
 Allocate the zstream for deflating, if not already allocated. More...
 
void lazy_alloc_inflate_zstream () const
 Allocate the zstream for inflating, if not already allocated. More...
 
bool prev (Cursor *C_, int j) const
 
bool next (Cursor *C_, int j) const
 
bool prev_default (Cursor *C_, int j) const
 
bool next_default (Cursor *C_, int j) const
 
bool prev_for_sequential (Cursor *C_, int dummy) const
 
bool next_for_sequential (Cursor *C_, int dummy) const
 
- Static Protected Member Functions inherited from ChertTable
static int find_in_block (const uint8_t *p, Key key, bool leaf, int c)
 find_in_block(p, key, leaf, c) searches for the key in the block at p. More...
 
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 ChertTable
const char * tablename
 The name of the table (used when writing changesets). More...
 
chert_revision_number_t revision_number
 revision number of the opened B-tree. More...
 
chert_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...
 
chert_revision_number_t latest_revision_number
 Revision number of the other base, or zero if there is only one base file. More...
 
bool both_bases
 set to true if baseA and baseB both exist as valid bases. More...
 
char base_letter
 the value 'A' or 'B' of the current base 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...
 
Item_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...
 
ChertTable_base base
 For writing back as file baseA or baseB. 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...
 
Cursor C [BTREE_CURSOR_LEVELS]
 
uint8_t * split_p
 Buffer used when splitting a block. More...
 
int compress_strategy
 DONT_COMPRESS or Z_DEFAULT_STRATEGY, Z_FILTERED, Z_HUFFMAN_ONLY, Z_RLE. More...
 
z_stream * deflate_zstream
 Zlib state object for deflating. More...
 
z_stream * inflate_zstream
 Zlib state object for inflating. More...
 
bool lazy
 If true, don't create the table until it's needed. More...
 
uint4 last_readahead
 Last block readahead_key() preread. More...
 

Detailed Description

Definition at line 34 of file chert_synonym.h.

Constructor & Destructor Documentation

◆ ChertSynonymTable()

ChertSynonymTable::ChertSynonymTable ( const std::string &  dbdir,
bool  readonly 
)
inline

Create a new ChertSynonymTable object.

This method does not create or open the table on disk - you must call the create() or open() methods respectively!

Parameters
dbdirThe directory the chert database is stored in.
readonlytrue if we're opening read-only, else false.

Definition at line 50 of file chert_synonym.h.

References merge_changes().

Member Function Documentation

◆ add_synonym()

void ChertSynonymTable::add_synonym ( const std::string &  term,
const std::string &  synonym 
)

Add a synonym for term.

If the synonym has already been added, no action is taken.

Definition at line 66 of file chert_synonym.cc.

References MAGIC_XOR_VALUE.

Referenced by ChertWritableDatabase::add_synonym(), and discard_changes().

◆ cancel()

void ChertSynonymTable::cancel ( )
inline

Override methods of ChertTable.

NB: these aren't virtual, but we always call them on the subclass in cases where it matters.

Definition at line 103 of file chert_synonym.h.

References ChertTable::cancel(), and discard_changes().

Referenced by ChertDatabase::cancel().

◆ clear_synonyms()

void ChertSynonymTable::clear_synonyms ( const std::string &  term)

Remove all synonyms for term.

If term has no synonyms, no action is taken.

Definition at line 118 of file chert_synonym.cc.

Referenced by ChertWritableDatabase::clear_synonyms(), and discard_changes().

◆ discard_changes()

void ChertSynonymTable::discard_changes ( )
inline

Definition at line 58 of file chert_synonym.h.

References add_synonym(), clear_synonyms(), open_termlist(), and remove_synonym().

Referenced by cancel().

◆ flush_db()

void ChertSynonymTable::flush_db ( )
inline

Override methods of ChertTable.

NB: these aren't virtual, but we always call them on the subclass in cases where it matters.

Definition at line 98 of file chert_synonym.h.

References ChertTable::flush_db(), and merge_changes().

Referenced by ChertDatabase::set_revision_number().

◆ is_modified()

bool ChertSynonymTable::is_modified ( ) const
inline

Override methods of ChertTable.

NB: these aren't virtual, but we always call them on the subclass in cases where it matters.

Definition at line 94 of file chert_synonym.h.

References ChertTable::is_modified().

Referenced by ChertDatabase::apply(), and ChertWritableDatabase::has_uncommitted_changes().

◆ merge_changes()

void ChertSynonymTable::merge_changes ( )

◆ open_termlist()

TermList * ChertSynonymTable::open_termlist ( const std::string &  term)

Open synonym termlist for a term.

If term has no synonyms, NULL is returned.

Definition at line 134 of file chert_synonym.cc.

References MAGIC_XOR_VALUE.

Referenced by discard_changes(), and ChertDatabase::open_synonym_termlist().

◆ remove_synonym()

void ChertSynonymTable::remove_synonym ( const std::string &  term,
const std::string &  synonym 
)

Remove a synonym for term.

If the synonym doesn't exist, no action is taken.

Definition at line 92 of file chert_synonym.cc.

References MAGIC_XOR_VALUE.

Referenced by discard_changes(), and ChertWritableDatabase::remove_synonym().

Member Data Documentation

◆ last_synonyms

std::set<std::string> ChertSynonymTable::last_synonyms
mutableprivate

The synonyms for the last term which was updated.

Definition at line 39 of file chert_synonym.h.

◆ last_term

std::string ChertSynonymTable::last_term
mutableprivate

The last term which was updated.

Definition at line 36 of file chert_synonym.h.


The documentation for this class was generated from the following files: