xapian-core  1.4.19
Public Member Functions | Private Member Functions | Private Attributes | List of all members
GlassWritableDatabase Class Reference

A writable glass database. More...

#include <glass_database.h>

+ Inheritance diagram for GlassWritableDatabase:
+ Collaboration diagram for GlassWritableDatabase:

Public Member Functions

 GlassWritableDatabase (const string &dir, int flags, int block_size)
 Create and open a writable glass database. More...
 
 ~GlassWritableDatabase ()
 
bool has_uncommitted_changes () const
 Return true if there are uncommitted changes. More...
 
Xapian::termcount get_doclength (Xapian::docid did) const
 Virtual methods of Database::Internal. More...
 
Xapian::termcount get_unique_terms (Xapian::docid did) const
 Virtual methods of Database::Internal. More...
 
void get_freqs (const string &term, Xapian::doccount *termfreq_ptr, Xapian::termcount *collfreq_ptr) const
 Virtual methods of Database::Internal. More...
 
Xapian::doccount get_value_freq (Xapian::valueno slot) const
 Virtual methods of Database::Internal. More...
 
std::string get_value_lower_bound (Xapian::valueno slot) const
 Virtual methods of Database::Internal. More...
 
std::string get_value_upper_bound (Xapian::valueno slot) const
 Virtual methods of Database::Internal. More...
 
bool term_exists (const string &tname) const
 Virtual methods of Database::Internal. More...
 
bool has_positions () const
 Virtual methods of Database::Internal. More...
 
LeafPostListopen_post_list (const string &tname) const
 Virtual methods of Database::Internal. More...
 
ValueListopen_value_list (Xapian::valueno slot) const
 Virtual methods of Database::Internal. More...
 
void read_position_list (GlassPositionList *pos_list, Xapian::docid did, const string &term) const
 Virtual methods of Database::Internal. More...
 
Xapian::termcount positionlist_count (Xapian::docid did, const string &term) const
 Virtual methods of Database::Internal. More...
 
PositionListopen_position_list (Xapian::docid did, const string &term) const
 Virtual methods of Database::Internal. More...
 
TermListopen_allterms (const string &prefix) const
 Virtual methods of Database::Internal. More...
 
void add_spelling (const string &word, Xapian::termcount freqinc) const
 Virtual methods of Database::Internal. More...
 
void remove_spelling (const string &word, Xapian::termcount freqdec) const
 Virtual methods of Database::Internal. More...
 
TermListopen_spelling_wordlist () const
 Virtual methods of Database::Internal. More...
 
TermListopen_synonym_keylist (const string &prefix) const
 Virtual methods of Database::Internal. More...
 
void add_synonym (const string &word, const string &synonym) const
 Virtual methods of Database::Internal. More...
 
void remove_synonym (const string &word, const string &synonym) const
 Virtual methods of Database::Internal. More...
 
void clear_synonyms (const string &word) const
 Virtual methods of Database::Internal. More...
 
void set_metadata (const string &key, const string &value)
 Virtual methods of Database::Internal. More...
 
void invalidate_doc_object (Xapian::Document::Internal *obj) const
 Virtual methods of Database::Internal. More...
 
- Public Member Functions inherited from GlassDatabase
 GlassDatabase (const string &db_dir_, int flags=Xapian::DB_READONLY_, unsigned int block_size=0u)
 Create and open a glass database. More...
 
 GlassDatabase (int fd)
 
 ~GlassDatabase ()
 
GlassCursorget_postlist_cursor () const
 Get a postlist table cursor (used by GlassValueList). More...
 
glass_revision_number_t get_revision_number () const
 Get an object holding the revision number which the tables are opened at. More...
 
void throw_termlist_table_close_exception () const
 
int get_backend_info (string *path) const
 Get backend information about this database. More...
 
bool single_file () const
 
void get_used_docid_range (Xapian::docid &first, Xapian::docid &last) const
 Find lowest and highest docids actually in use. More...
 
bool locked () const
 Return true if the database is open for writing. More...
 
Xapian::doccount get_doccount () const
 Virtual methods of Database::Internal. More...
 
Xapian::docid get_lastdocid () const
 Virtual methods of Database::Internal. More...
 
Xapian::totallength get_total_length () const
 Virtual methods of Database::Internal. More...
 
Xapian::termcount get_doclength_lower_bound () const
 Virtual methods of Database::Internal. More...
 
Xapian::termcount get_doclength_upper_bound () const
 Virtual methods of Database::Internal. More...
 
Xapian::termcount get_wdf_upper_bound (const string &term) const
 Virtual methods of Database::Internal. More...
 
TermListopen_term_list (Xapian::docid did) const
 Virtual methods of Database::Internal. More...
 
TermListopen_spelling_termlist (const string &word) const
 Virtual methods of Database::Internal. More...
 
Xapian::doccount get_spelling_frequency (const string &word) const
 Virtual methods of Database::Internal. More...
 
TermListopen_synonym_termlist (const string &term) const
 Virtual methods of Database::Internal. More...
 
string get_metadata (const string &key) const
 Virtual methods of Database::Internal. More...
 
TermListopen_metadata_keylist (const std::string &prefix) const
 Virtual methods of Database::Internal. More...
 
void write_changesets_to_fd (int fd, const string &start_revision, bool need_whole_db, Xapian::ReplicationInfo *info)
 Virtual methods of Database::Internal. More...
 
string get_revision_info () const
 Virtual methods of Database::Internal. More...
 
string get_uuid () const
 Virtual methods of Database::Internal. More...
 
void request_document (Xapian::docid) const
 Virtual methods of Database::Internal. More...
 
void readahead_for_query (const Xapian::Query &query)
 Virtual methods of Database::Internal. More...
 
- Public Member Functions inherited from Xapian::Database::Internal
virtual ~Internal ()
 Destroy the database. More...
 
virtual void keep_alive ()
 Send a keep-alive signal to a remote database, to stop it from timing out. More...
 
void begin_transaction (bool flushed)
 Begin a transaction. More...
 
void commit_transaction ()
 Commit a transaction. More...
 
void cancel_transaction ()
 Cancel a transaction. More...
 
virtual void delete_document (const string &unique_term)
 Delete any documents indexed by a term from the database. More...
 
virtual Xapian::docid replace_document (const string &unique_term, const Xapian::Document &document)
 Replace any documents matching a term. More...
 
virtual Xapian::Document::Internalcollect_document (Xapian::docid did) const
 Request and later collect a document from the database. More...
 
- Public Member Functions inherited from Xapian::Internal::intrusive_base
 intrusive_base ()
 Construct with no references. More...
 

Private Member Functions

void check_flush_threshold ()
 Check if we should autoflush. More...
 
void flush_postlist_changes ()
 Flush any unflushed postlist changes, but don't commit them. More...
 
void close ()
 Close all the tables permanently. More...
 
void apply ()
 Apply changes. More...
 
void commit ()
 Implementation of virtual methods: see Database::Internal for details. More...
 
void cancel ()
 Cancel pending modifications to the database. More...
 
Xapian::docid add_document (const Xapian::Document &document)
 Implementation of virtual methods: see Database::Internal for details. More...
 
Xapian::docid add_document_ (Xapian::docid did, const Xapian::Document &document)
 Implementation of virtual methods: see Database::Internal for details. More...
 
void delete_document (Xapian::docid did)
 Implementation of virtual methods: see Database::Internal for details. More...
 
void replace_document (Xapian::docid did, const Xapian::Document &document)
 Implementation of virtual methods: see Database::Internal for details. More...
 
Xapian::Document::Internalopen_document (Xapian::docid did, bool lazy) const
 Implementation of virtual methods: see Database::Internal for details. More...
 

Private Attributes

Inverter inverter
 
map< Xapian::valueno, ValueStatsvalue_stats
 
Xapian::doccount change_count
 The number of documents added, deleted, or replaced since the last flush. More...
 
Xapian::doccount flush_threshold
 If change_count reaches this threshold we automatically flush. More...
 
Xapian::Document::Internalmodify_shortcut_document
 A pointer to the last document which was returned by open_document(), or NULL if there is no such valid document. More...
 
Xapian::docid modify_shortcut_docid
 The document ID for the last document returned by open_document(). More...
 

Additional Inherited Members

- Static Public Member Functions inherited from GlassDatabase
static void compact (Xapian::Compactor *compactor, const char *destdir, int fd, const std::vector< Xapian::Database::Internal *> &sources, const std::vector< Xapian::docid > &offset, size_t block_size, Xapian::Compactor::compaction_level compaction, unsigned flags, Xapian::docid last_docid)
 
- Public Attributes inherited from Xapian::Internal::intrusive_base
unsigned _refs
 Reference count. More...
 
- Protected Types inherited from Xapian::Database::Internal
enum  { TRANSACTION_UNIMPLEMENTED = -1, TRANSACTION_NONE = 0, TRANSACTION_UNFLUSHED = 1, TRANSACTION_FLUSHED = 2 }
 Transaction state. More...
 
- Protected Member Functions inherited from Xapian::Database::Internal
bool transaction_active () const
 
 Internal ()
 Create a database - called only by derived classes. More...
 
void dtor_called ()
 Internal method to perform cleanup when a writable database is destroyed with uncommitted changes. More...
 
- Protected Attributes inherited from Xapian::Database::Internal
enum Xapian::Database::Internal:: { ... }  transaction_state
 Transaction state. More...
 

Detailed Description

A writable glass database.

Definition at line 332 of file glass_database.h.

Constructor & Destructor Documentation

◆ GlassWritableDatabase()

GlassWritableDatabase::GlassWritableDatabase ( const string &  dir,
int  flags,
int  block_size 
)

Create and open a writable glass database.

Exceptions
Xapian::DatabaseOpeningErrorthrown if database can't be opened.
Xapian::DatabaseVersionErrorthrown if database is in an unsupported format. This implies that the database was created by an older or newer version of Xapian.
Parameters
dirdirectory holding glass tables

Definition at line 1018 of file glass_database.cc.

References flush_threshold, and LOGCALL_CTOR.

◆ ~GlassWritableDatabase()

GlassWritableDatabase::~GlassWritableDatabase ( )

Definition at line 1035 of file glass_database.cc.

References Xapian::Database::Internal::dtor_called(), and LOGCALL_DTOR.

Member Function Documentation

◆ add_document()

Xapian::docid GlassWritableDatabase::add_document ( const Xapian::Document document)
privatevirtual

Implementation of virtual methods: see Database::Internal for details.

Reimplemented from Xapian::Database::Internal.

Definition at line 1099 of file glass_database.cc.

References add_document_(), GlassVersion::get_last_docid(), GlassVersion::get_next_docid(), GLASS_MAX_DOCID, LOGCALL, RETURN, and GlassDatabase::version_file.

◆ add_document_()

Xapian::docid GlassWritableDatabase::add_document_ ( Xapian::docid  did,
const Xapian::Document document 
)
private

◆ add_spelling()

void GlassWritableDatabase::add_spelling ( const string &  word,
Xapian::termcount  freqinc 
) const
virtual

Virtual methods of Database::Internal.

Reimplemented from Xapian::Database::Internal.

Definition at line 1597 of file glass_database.cc.

References GlassSpellingTable::add_word(), and GlassDatabase::spelling_table.

◆ add_synonym()

void GlassWritableDatabase::add_synonym ( const string &  word,
const string &  synonym 
) const
virtual

Virtual methods of Database::Internal.

Reimplemented from Xapian::Database::Internal.

Definition at line 1625 of file glass_database.cc.

References GlassSynonymTable::add_synonym(), and GlassDatabase::synonym_table.

◆ apply()

void GlassWritableDatabase::apply ( )
private

◆ cancel()

void GlassWritableDatabase::cancel ( )
privatevirtual

Cancel pending modifications to the database.

Reimplemented from GlassDatabase.

Definition at line 1588 of file glass_database.cc.

References GlassDatabase::cancel(), change_count, Inverter::clear(), inverter, and value_stats.

Referenced by add_document_(), delete_document(), flush_postlist_changes(), and replace_document().

◆ check_flush_threshold()

void GlassWritableDatabase::check_flush_threshold ( )
private

Check if we should autoflush.

Called at the end of each document changing operation.

Definition at line 1051 of file glass_database.cc.

References apply(), change_count, flush_postlist_changes(), flush_threshold, and Xapian::Database::Internal::transaction_active().

Referenced by add_document_(), delete_document(), and replace_document().

◆ clear_synonyms()

void GlassWritableDatabase::clear_synonyms ( const string &  word) const
virtual

Virtual methods of Database::Internal.

Reimplemented from Xapian::Database::Internal.

Definition at line 1639 of file glass_database.cc.

References GlassSynonymTable::clear_synonyms(), and GlassDatabase::synonym_table.

◆ close()

void GlassWritableDatabase::close ( )
privatevirtual

Close all the tables permanently.

Reimplemented from GlassDatabase.

Definition at line 1081 of file glass_database.cc.

References GlassDatabase::close(), commit(), LOGCALL_VOID, and Xapian::Database::Internal::transaction_active().

◆ commit()

void GlassWritableDatabase::commit ( )
privatevirtual

Implementation of virtual methods: see Database::Internal for details.

Reimplemented from Xapian::Database::Internal.

Definition at line 1042 of file glass_database.cc.

References apply(), change_count, flush_postlist_changes(), and Xapian::Database::Internal::transaction_active().

Referenced by close().

◆ delete_document()

void GlassWritableDatabase::delete_document ( Xapian::docid  did)
privatevirtual

◆ flush_postlist_changes()

void GlassWritableDatabase::flush_postlist_changes ( )
private

◆ get_doclength()

Xapian::termcount GlassWritableDatabase::get_doclength ( Xapian::docid  did) const
virtual

Virtual methods of Database::Internal.

Reimplemented from GlassDatabase.

Definition at line 1398 of file glass_database.cc.

References Inverter::get_doclength(), GlassDatabase::get_doclength(), inverter, LOGCALL, and RETURN.

Referenced by delete_document().

◆ get_freqs()

void GlassWritableDatabase::get_freqs ( const string &  term,
Xapian::doccount termfreq_ptr,
Xapian::termcount collfreq_ptr 
) const
virtual

Virtual methods of Database::Internal.

Reimplemented from GlassDatabase.

Definition at line 1427 of file glass_database.cc.

References Assert, Inverter::get_deltas(), GlassDatabase::get_freqs(), inverter, and LOGCALL_VOID.

Referenced by term_exists().

◆ get_unique_terms()

Xapian::termcount GlassWritableDatabase::get_unique_terms ( Xapian::docid  did) const
virtual

Virtual methods of Database::Internal.

Reimplemented from GlassDatabase.

Definition at line 1408 of file glass_database.cc.

References Assert, GlassTermList::get_approx_size(), Inverter::get_doclength(), GlassDatabase::get_unique_terms(), inverter, LOGCALL, and RETURN.

◆ get_value_freq()

Xapian::doccount GlassWritableDatabase::get_value_freq ( Xapian::valueno  slot) const
virtual

Virtual methods of Database::Internal.

Reimplemented from GlassDatabase.

Definition at line 1444 of file glass_database.cc.

References GlassDatabase::get_value_freq(), LOGCALL, RETURN, and value_stats.

◆ get_value_lower_bound()

std::string GlassWritableDatabase::get_value_lower_bound ( Xapian::valueno  slot) const
virtual

Virtual methods of Database::Internal.

Reimplemented from GlassDatabase.

Definition at line 1454 of file glass_database.cc.

References GlassDatabase::get_value_lower_bound(), LOGCALL, RETURN, and value_stats.

◆ get_value_upper_bound()

std::string GlassWritableDatabase::get_value_upper_bound ( Xapian::valueno  slot) const
virtual

Virtual methods of Database::Internal.

Reimplemented from GlassDatabase.

Definition at line 1464 of file glass_database.cc.

References GlassDatabase::get_value_upper_bound(), LOGCALL, RETURN, and value_stats.

◆ has_positions()

bool GlassWritableDatabase::has_positions ( ) const
virtual

Virtual methods of Database::Internal.

Reimplemented from GlassDatabase.

Definition at line 1483 of file glass_database.cc.

References Inverter::has_positions(), inverter, and GlassDatabase::position_table.

◆ has_uncommitted_changes()

bool GlassWritableDatabase::has_uncommitted_changes ( ) const
virtual

◆ invalidate_doc_object()

void GlassWritableDatabase::invalidate_doc_object ( Xapian::Document::Internal obj) const
virtual

Virtual methods of Database::Internal.

Reimplemented from Xapian::Database::Internal.

Definition at line 1658 of file glass_database.cc.

References modify_shortcut_docid, and modify_shortcut_document.

◆ open_allterms()

TermList * GlassWritableDatabase::open_allterms ( const string &  prefix) const
virtual

Virtual methods of Database::Internal.

Reimplemented from GlassDatabase.

Definition at line 1568 of file glass_database.cc.

References change_count, Inverter::flush_post_lists(), inverter, LOGCALL, GlassDatabase::open_allterms(), GlassDatabase::postlist_table, and RETURN.

◆ open_document()

Xapian::Document::Internal * GlassWritableDatabase::open_document ( Xapian::docid  did,
bool  lazy 
) const
privatevirtual

Implementation of virtual methods: see Database::Internal for details.

Reimplemented from GlassDatabase.

Definition at line 1387 of file glass_database.cc.

References LOGCALL, modify_shortcut_docid, modify_shortcut_document, GlassDatabase::open_document(), and RETURN.

◆ open_position_list()

PositionList * GlassWritableDatabase::open_position_list ( Xapian::docid  did,
const string &  term 
) const
virtual

Virtual methods of Database::Internal.

Reimplemented from GlassDatabase.

Definition at line 1549 of file glass_database.cc.

References Assert, Inverter::get_positionlist(), inverter, and GlassDatabase::position_table.

◆ open_post_list()

LeafPostList * GlassWritableDatabase::open_post_list ( const string &  tname) const
virtual

◆ open_spelling_wordlist()

TermList * GlassWritableDatabase::open_spelling_wordlist ( ) const
virtual

Virtual methods of Database::Internal.

Reimplemented from GlassDatabase.

Definition at line 1611 of file glass_database.cc.

References GlassSpellingTable::merge_changes(), GlassDatabase::open_spelling_wordlist(), and GlassDatabase::spelling_table.

◆ open_synonym_keylist()

TermList * GlassWritableDatabase::open_synonym_keylist ( const string &  prefix) const
virtual

Virtual methods of Database::Internal.

Reimplemented from GlassDatabase.

Definition at line 1618 of file glass_database.cc.

References GlassSynonymTable::merge_changes(), GlassDatabase::open_synonym_keylist(), and GlassDatabase::synonym_table.

◆ open_value_list()

ValueList * GlassWritableDatabase::open_value_list ( Xapian::valueno  slot) const
virtual

Virtual methods of Database::Internal.

Reimplemented from GlassDatabase.

Definition at line 1510 of file glass_database.cc.

References change_count, LOGCALL, GlassValueManager::merge_changes(), GlassDatabase::open_value_list(), RETURN, and GlassDatabase::value_manager.

◆ positionlist_count()

Xapian::termcount GlassWritableDatabase::positionlist_count ( Xapian::docid  did,
const string &  term 
) const
virtual

◆ read_position_list()

void GlassWritableDatabase::read_position_list ( GlassPositionList pos_list,
Xapian::docid  did,
const string &  term 
) const
virtual

Virtual methods of Database::Internal.

Reimplemented from GlassDatabase.

Definition at line 1521 of file glass_database.cc.

References Assert, Inverter::get_positionlist(), inverter, GlassPositionList::read_data(), and GlassDatabase::read_position_list().

◆ remove_spelling()

void GlassWritableDatabase::remove_spelling ( const string &  word,
Xapian::termcount  freqdec 
) const
virtual

Virtual methods of Database::Internal.

Reimplemented from Xapian::Database::Internal.

Definition at line 1604 of file glass_database.cc.

References GlassSpellingTable::remove_word(), and GlassDatabase::spelling_table.

◆ remove_synonym()

void GlassWritableDatabase::remove_synonym ( const string &  word,
const string &  synonym 
) const
virtual

Virtual methods of Database::Internal.

Reimplemented from Xapian::Database::Internal.

Definition at line 1632 of file glass_database.cc.

References GlassSynonymTable::remove_synonym(), and GlassDatabase::synonym_table.

◆ replace_document()

void GlassWritableDatabase::replace_document ( Xapian::docid  did,
const Xapian::Document document 
)
privatevirtual

◆ set_metadata()

void GlassWritableDatabase::set_metadata ( const string &  key,
const string &  value 
)
virtual

Virtual methods of Database::Internal.

Reimplemented from Xapian::Database::Internal.

Definition at line 1645 of file glass_database.cc.

References GlassTable::add(), GlassTable::del(), LOGCALL_VOID, and GlassDatabase::postlist_table.

◆ term_exists()

bool GlassWritableDatabase::term_exists ( const string &  tname) const
virtual

Virtual methods of Database::Internal.

Reimplemented from GlassDatabase.

Definition at line 1474 of file glass_database.cc.

References get_freqs(), LOGCALL, and RETURN.

Member Data Documentation

◆ change_count

Xapian::doccount GlassWritableDatabase::change_count
mutableprivate

The number of documents added, deleted, or replaced since the last flush.

Definition at line 340 of file glass_database.h.

Referenced by cancel(), check_flush_threshold(), commit(), flush_postlist_changes(), has_uncommitted_changes(), open_allterms(), and open_value_list().

◆ flush_threshold

Xapian::doccount GlassWritableDatabase::flush_threshold
private

If change_count reaches this threshold we automatically flush.

Definition at line 343 of file glass_database.h.

Referenced by check_flush_threshold(), and GlassWritableDatabase().

◆ inverter

Inverter GlassWritableDatabase::inverter
mutableprivate

◆ modify_shortcut_docid

Xapian::docid GlassWritableDatabase::modify_shortcut_docid
mutableprivate

The document ID for the last document returned by open_document().

Definition at line 355 of file glass_database.h.

Referenced by delete_document(), invalidate_doc_object(), open_document(), and replace_document().

◆ modify_shortcut_document

Xapian::Document::Internal* GlassWritableDatabase::modify_shortcut_document
mutableprivate

A pointer to the last document which was returned by open_document(), or NULL if there is no such valid document.

This is used purely for comparing with a supplied document to help with optimising replace_document. When the document internals are deleted, this pointer gets set to NULL.

Definition at line 351 of file glass_database.h.

Referenced by delete_document(), invalidate_doc_object(), open_document(), and replace_document().

◆ value_stats

map<Xapian::valueno, ValueStats> GlassWritableDatabase::value_stats
mutableprivate

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