xapian-core  1.4.21
Public Member Functions | Static Public Member Functions | List of all members
GlassDocDataTable Class Reference

#include <glass_docdata.h>

+ Inheritance diagram for GlassDocDataTable:
+ Collaboration diagram for GlassDocDataTable:

Public Member Functions

 GlassDocDataTable (const std::string &dbdir, bool readonly)
 Create a new GlassDocDataTable object. More...
 
 GlassDocDataTable (int fd, off_t offset_, bool readonly)
 
std::string get_document_data (Xapian::docid did) const
 Get the document data for document did. More...
 
void add_document_data (Xapian::docid did, const std::string &data)
 Set the document data for document did. More...
 
void replace_document_data (Xapian::docid did, const std::string &data)
 Replace the document data for document did. More...
 
bool delete_document_data (Xapian::docid did)
 Delete the document data for document did. More...
 
void readahead_for_document (Xapian::docid did) const
 
- Public Member Functions inherited from GlassLazyTable
 GlassLazyTable (const char *name_, const std::string &path, bool readonly)
 Create a new lazy table. More...
 
 GlassLazyTable (const char *name_, int fd, off_t offset_, bool readonly)
 
- 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, 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...
 
GlassCursorcursor_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
 

Static Public Member Functions

static std::string make_key (Xapian::docid did)
 
- Static Public Member Functions inherited from GlassTable
static void throw_database_closed ()
 Throw an exception indicating that the database is closed. More...
 

Additional Inherited Members

- 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...
 
GlassChangeschanges_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...
 

Detailed Description

Definition at line 31 of file glass_docdata.h.

Constructor & Destructor Documentation

◆ GlassDocDataTable() [1/2]

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

Create a new GlassDocDataTable 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 glass database is stored in.
readonlytrue if we're opening read-only, else false.

Definition at line 47 of file glass_docdata.h.

◆ GlassDocDataTable() [2/2]

GlassDocDataTable::GlassDocDataTable ( int  fd,
off_t  offset_,
bool  readonly 
)
inline

Definition at line 50 of file glass_docdata.h.

Member Function Documentation

◆ add_document_data()

void GlassDocDataTable::add_document_data ( Xapian::docid  did,
const std::string &  data 
)
inline

Set the document data for document did.

If the document might already exist, use replace_document_data() instead.

Parameters
didThe docid to set the document data for.
dataThe document data to set.

Definition at line 74 of file glass_docdata.h.

References GlassTable::add(), and make_key().

◆ delete_document_data()

bool GlassDocDataTable::delete_document_data ( Xapian::docid  did)
inline

Delete the document data for document did.

Parameters
didThe docid to delete the document data for.
Returns
true if document data was actually removed (false means either there's no such document, or the document has no data).

Definition at line 103 of file glass_docdata.h.

References GlassTable::del(), and make_key().

Referenced by GlassWritableDatabase::delete_document(), and replace_document_data().

◆ get_document_data()

std::string GlassDocDataTable::get_document_data ( Xapian::docid  did) const
inline

Get the document data for document did.

If the document doesn't exist, the empty string is returned.

Parameters
didThe docid to set the document data for.

Definition at line 59 of file glass_docdata.h.

References GlassTable::get_exact_entry(), and make_key().

Referenced by GlassDocument::do_get_data().

◆ make_key()

static std::string GlassDocDataTable::make_key ( Xapian::docid  did)
inlinestatic

◆ readahead_for_document()

void GlassDocDataTable::readahead_for_document ( Xapian::docid  did) const
inline

Definition at line 105 of file glass_docdata.h.

References make_key(), and GlassTable::readahead_key().

Referenced by GlassDatabase::request_document().

◆ replace_document_data()

void GlassDocDataTable::replace_document_data ( Xapian::docid  did,
const std::string &  data 
)
inline

Replace the document data for document did.

Any existing data is replaced.

Parameters
didThe docid to replace the document data for.
dataThe document data to set.

Definition at line 87 of file glass_docdata.h.

References GlassTable::add(), delete_document_data(), and make_key().

Referenced by GlassWritableDatabase::add_document_(), and GlassWritableDatabase::replace_document().


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