xapian-core
1.4.27
|
A backend designed for efficient indexing and retrieval, using compressed posting lists and a btree storage scheme. More...
#include <glass_database.h>
Public Member Functions | |
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 () | |
GlassCursor * | get_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... | |
virtual bool | has_uncommitted_changes () const |
Return true if there are uncommitted changes. 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 (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... | |
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... | |
bool | term_exists (const string &tname) const |
Virtual methods of Database::Internal. More... | |
bool | has_positions () const |
Virtual methods of Database::Internal. More... | |
LeafPostList * | open_post_list (const string &tname) const |
Virtual methods of Database::Internal. More... | |
ValueList * | open_value_list (Xapian::valueno slot) const |
Virtual methods of Database::Internal. More... | |
Xapian::Document::Internal * | open_document (Xapian::docid did, bool lazy) const |
Virtual methods of Database::Internal. More... | |
virtual void | read_position_list (GlassPositionList *pos_list, Xapian::docid did, const string &term) const |
Virtual methods of Database::Internal. More... | |
virtual Xapian::termcount | positionlist_count (Xapian::docid did, const string &term) const |
Virtual methods of Database::Internal. More... | |
PositionList * | open_position_list (Xapian::docid did, const string &term) const |
Virtual methods of Database::Internal. More... | |
TermList * | open_term_list (Xapian::docid did) const |
Virtual methods of Database::Internal. More... | |
TermList * | open_allterms (const string &prefix) const |
Virtual methods of Database::Internal. More... | |
TermList * | open_spelling_termlist (const string &word) const |
Virtual methods of Database::Internal. More... | |
TermList * | open_spelling_wordlist () const |
Virtual methods of Database::Internal. More... | |
Xapian::doccount | get_spelling_frequency (const string &word) const |
Virtual methods of Database::Internal. More... | |
TermList * | open_synonym_termlist (const string &term) const |
Virtual methods of Database::Internal. More... | |
TermList * | open_synonym_keylist (const string &prefix) const |
Virtual methods of Database::Internal. More... | |
string | get_metadata (const string &key) const |
Virtual methods of Database::Internal. More... | |
TermList * | open_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... | |
virtual void | add_spelling (const string &word, Xapian::termcount freqinc) const |
Add a word to the spelling dictionary. More... | |
virtual void | remove_spelling (const string &word, Xapian::termcount freqdec) const |
Remove a word from the spelling dictionary. More... | |
virtual void | add_synonym (const string &term, const string &synonym) const |
Add a synonym for a term. More... | |
virtual void | remove_synonym (const string &term, const string &synonym) const |
Remove a synonym for a term. More... | |
virtual void | clear_synonyms (const string &term) const |
Clear all synonyms for a term. More... | |
virtual void | set_metadata (const string &key, const string &value) |
Set the metadata associated with a given key. More... | |
virtual void | commit () |
Commit pending modifications to the database. 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 Xapian::docid | add_document (const Xapian::Document &document) |
Add a new document to the database. More... | |
virtual void | delete_document (Xapian::docid did) |
Delete a document in the database. More... | |
virtual void | delete_document (const string &unique_term) |
Delete any documents indexed by a term from the database. More... | |
virtual void | replace_document (Xapian::docid did, const Xapian::Document &document) |
Replace a given document in the database. More... | |
virtual Xapian::docid | replace_document (const string &unique_term, const Xapian::Document &document) |
Replace any documents matching a term. More... | |
virtual void | invalidate_doc_object (Xapian::Document::Internal *obj) const |
Notify the database that document is no longer valid. More... | |
virtual Xapian::Document::Internal * | collect_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... | |
Static Public Member Functions | |
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) |
Private Member Functions | |
bool | database_exists () |
Return true if a database exists at the path specified for this database. More... | |
void | create_and_open_tables (int flags, unsigned int blocksize) |
Create new tables, and open them. More... | |
bool | open_tables (int flags) |
Open all tables at most recent revision. More... | |
void | get_database_write_lock (int flags, bool creating) |
Get a write lock on the database, or throw an Xapian::DatabaseLockError if failure. More... | |
glass_revision_number_t | get_next_revision_number () const |
Get an object holding the next revision number which should be used in the tables. More... | |
void | set_revision_number (int flags, glass_revision_number_t new_revision) |
Set the revision number in the tables. More... | |
bool | reopen () |
Re-open tables to recover from an overwritten condition, or just get most up-to-date version. More... | |
void | close () |
Close all the tables permanently. More... | |
void | modifications_failed (glass_revision_number_t new_revision, const std::string &msg) |
Called if a modifications fail. More... | |
void | apply () |
Apply any outstanding changes to the tables. More... | |
void | cancel () |
Cancel any outstanding changes to the tables. More... | |
void | send_whole_database (RemoteConnection &conn, double end_time) |
Send a set of messages which transfer the whole database. More... | |
void | get_changeset_revisions (const string &path, glass_revision_number_t *startrev, glass_revision_number_t *endrev) const |
Get the revision stored in a changeset. More... | |
Private Attributes | |
std::string | db_dir |
Directory to store databases in. More... | |
bool | readonly |
Whether the database is readonly. More... | |
GlassVersion | version_file |
The file describing the Glass database. More... | |
GlassPostListTable | postlist_table |
Table storing posting lists. More... | |
GlassPositionListTable | position_table |
Table storing position lists. More... | |
GlassTermListTable | termlist_table |
Table storing term lists. More... | |
GlassValueManager | value_manager |
Value manager. More... | |
GlassSynonymTable | synonym_table |
Table storing synonym data. More... | |
GlassSpellingTable | spelling_table |
Table storing spelling correction data. More... | |
GlassDocDataTable | docdata_table |
Table storing document data. More... | |
FlintLock | lock |
Lock object. More... | |
GlassChanges | changes |
Replication changesets. More... | |
Friends | |
class | GlassWritableDatabase |
class | GlassTermList |
class | GlassPostList |
class | GlassAllTermsList |
class | GlassAllDocsPostList |
Additional Inherited Members | |
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... | |
A backend designed for efficient indexing and retrieval, using compressed posting lists and a btree storage scheme.
Definition at line 58 of file glass_database.h.
|
explicit |
Create and open a glass database.
Xapian::DatabaseCorruptError | is thrown if a problem is found with the database's format. |
Xapian::DatabaseOpeningError | thrown if database can't be opened. |
Xapian::DatabaseVersionError | thrown if database is in an unsupported format. This implies that the database was created by an older or newer version of Xapian. |
dbdir | directory holding glass tables |
block_size | Block size, in bytes, to use when creating tables. This is only important, and has the correct value, when the database is being created. |
Definition at line 98 of file glass_database.cc.
References create_and_open_tables(), database_exists(), Xapian::DB_CREATE, Xapian::DB_CREATE_OR_OVERWRITE, db_dir, Xapian::DB_OPEN, dir_exists(), get_database_write_lock(), GLASS_DEFAULT_BLOCKSIZE, LOGCALL_CTOR, open_tables(), and readonly.
|
explicit |
Definition at line 163 of file glass_database.cc.
References LOGCALL_CTOR, and open_tables().
GlassDatabase::~GlassDatabase | ( | ) |
Definition at line 181 of file glass_database.cc.
References LOGCALL_DTOR.
|
private |
Apply any outstanding changes to the tables.
If an error occurs during this operation, this will be signalled by an exception being thrown. In this case the contents of the tables on disk will be left in an unmodified state (though possibly with increased revision numbers), and the outstanding changes will be lost.
Definition at line 657 of file glass_database.cc.
References changes, docdata_table, Xapian::Error::get_description(), GlassTable::get_flags(), get_next_revision_number(), GlassSynonymTable::is_modified(), GlassSpellingTable::is_modified(), GlassValueManager::is_modified(), GlassTable::is_modified(), LOGCALL_VOID, modifications_failed(), position_table, postlist_table, GlassVersion::set_changes(), GlassTable::set_changes(), set_revision_number(), spelling_table, GlassChanges::start(), synonym_table, termlist_table, value_manager, and version_file.
Referenced by GlassWritableDatabase::apply().
|
privatevirtual |
Cancel any outstanding changes to the tables.
Reimplemented from Xapian::Database::Internal.
Reimplemented in GlassWritableDatabase.
Definition at line 695 of file glass_database.cc.
References GlassSynonymTable::cancel(), GlassSpellingTable::cancel(), GlassValueManager::cancel(), GlassVersion::cancel(), GlassTable::cancel(), Glass::DOCDATA, docdata_table, GlassVersion::get_revision(), GlassVersion::get_root(), GlassVersion::get_spelling_wordfreq_upper_bound(), LOGCALL_VOID, Glass::POSITION, position_table, Glass::POSTLIST, postlist_table, GlassSpellingTable::set_wordfreq_upper_bound(), Glass::SPELLING, spelling_table, Glass::SYNONYM, synonym_table, Glass::TERMLIST, termlist_table, value_manager, and version_file.
Referenced by GlassWritableDatabase::cancel(), and modifications_failed().
|
privatevirtual |
Close all the tables permanently.
Implements Xapian::Database::Internal.
Reimplemented in GlassWritableDatabase.
Definition at line 403 of file glass_database.cc.
References GlassTable::close(), docdata_table, lock, LOGCALL_VOID, position_table, postlist_table, FlintLock::release(), spelling_table, synonym_table, and termlist_table.
Referenced by GlassWritableDatabase::close(), and modifications_failed().
|
static |
Definition at line 777 of file glass_compact.cc.
References Assert, GlassTable::commit(), GlassTable::create_and_open(), Xapian::DB_DANGEROUS, Xapian::DBCOMPACT_MULTIPASS, Xapian::DBCOMPACT_SINGLE_FILE, Glass::DOCDATA, docdata_table, GlassTable::empty(), file_size(), GlassTable::flush_db(), Xapian::Compactor::FULLER, Glass::RootInfo::get_free_list(), GlassTable::get_path(), GLASS_DEFAULT_BLOCKSIZE, GLASS_TABLE_EXTENSION, GlassTable::is_modified(), FlintLock::lock(), GlassCompact::merge_docid_keyed(), GlassCompact::merge_positions(), GlassCompact::merge_postlists(), GlassCompact::merge_spellings(), GlassCompact::merge_synonyms(), GlassCompact::multimerge_postlists(), O_BINARY, O_CLOEXEC, Xapian::InMemory::open(), GlassTable::open(), GlassFreeList::pack(), Glass::POSITION, position_table, Glass::POSTLIST, postlist_table, FlintLock::release(), GlassFreeList::set_first_unused_block(), Glass::RootInfo::set_free_list(), GlassTable::set_full_compaction(), GlassTable::set_max_item_size(), Xapian::Compactor::set_status(), single_file(), Glass::SPELLING, spelling_table, Xapian::Compactor::STANDARD, Xapian::Internal::str(), FlintLock::SUCCESS, GlassTable::sync(), Glass::SYNONYM, synonym_table, Glass::TERMLIST, termlist_table, FlintLock::throw_databaselockerror(), and version_file.
Referenced by Xapian::Database::compact_(), and single_file().
|
private |
Create new tables, and open them.
Any existing tables will be removed first.
Definition at line 194 of file glass_database.cc.
References Assert, GlassVersion::create(), GlassTable::create_and_open(), database_exists(), Glass::DOCDATA, docdata_table, GlassVersion::get_revision(), GlassVersion::get_root(), LOGCALL_VOID, Glass::POSITION, position_table, Glass::POSTLIST, postlist_table, Glass::SPELLING, spelling_table, GlassVersion::sync(), Glass::SYNONYM, synonym_table, Glass::TERMLIST, termlist_table, version_file, and GlassVersion::write().
Referenced by GlassDatabase().
|
private |
Return true if a database exists at the path specified for this database.
Definition at line 187 of file glass_database.cc.
References GlassTable::exists(), LOGCALL, postlist_table, and RETURN.
Referenced by create_and_open_tables(), get_database_write_lock(), and GlassDatabase().
|
inlinevirtual |
Get backend information about this database.
path | If non-NULL, and set the pointed to string to the file path of this database (or if to some string describing the database in a backend-specified format if "path" isn't a concept which make sense). |
Implements Xapian::Database::Internal.
Definition at line 304 of file glass_database.h.
References BACKEND_GLASS, and db_dir.
|
private |
Get the revision stored in a changeset.
Definition at line 290 of file glass_database.cc.
References CHANGES_MAGIC_STRING, CHANGES_VERSION, CONST_STRLEN, io_read(), O_CLOEXEC, posixy_open, REASONABLE_CHANGESET_SIZE, and unpack_uint().
Referenced by write_changesets_to_fd().
|
private |
Get a write lock on the database, or throw an Xapian::DatabaseLockError if failure.
flags | Bit-wise or of zero or more Xapian::DB_* constants |
creating | true if the database is in the process of being created - if false, will throw a DatabaseOpening error if the lock can't be acquired and the database doesn't exist. |
Definition at line 416 of file glass_database.cc.
References database_exists(), db_dir, Xapian::DB_RETRY_LOCK, FlintLock::lock(), lock, LOGCALL_VOID, FlintLock::SUCCESS, FlintLock::throw_databaselockerror(), and FlintLock::UNKNOWN.
Referenced by GlassDatabase().
|
virtual |
Virtual methods of Database::Internal.
Implements Xapian::Database::Internal.
Definition at line 713 of file glass_database.cc.
References GlassVersion::get_doccount(), LOGCALL, RETURN, and version_file.
Referenced by GlassTermList::accumulate_stats(), get_postlist_cursor(), open_post_list(), and GlassWritableDatabase::open_post_list().
|
virtual |
Virtual methods of Database::Internal.
Implements Xapian::Database::Internal.
Reimplemented in GlassWritableDatabase.
Definition at line 734 of file glass_database.cc.
References Assert, GlassPostListTable::get_doclength(), LOGCALL, postlist_table, and RETURN.
Referenced by GlassPostList::get_doclength(), GlassWritableDatabase::get_doclength(), get_postlist_cursor(), and open_document().
|
virtual |
Virtual methods of Database::Internal.
Reimplemented from Xapian::Database::Internal.
Definition at line 783 of file glass_database.cc.
References GlassVersion::get_doclength_lower_bound(), and version_file.
Referenced by get_postlist_cursor().
|
virtual |
Virtual methods of Database::Internal.
Reimplemented from Xapian::Database::Internal.
Definition at line 789 of file glass_database.cc.
References GlassVersion::get_doclength_upper_bound(), and version_file.
Referenced by get_postlist_cursor().
|
virtual |
Virtual methods of Database::Internal.
Implements Xapian::Database::Internal.
Reimplemented in GlassWritableDatabase.
Definition at line 752 of file glass_database.cc.
References Assert, GlassPostListTable::get_freqs(), LOGCALL_VOID, and postlist_table.
Referenced by GlassWritableDatabase::get_freqs(), get_postlist_cursor(), and GlassTermList::get_termfreq().
|
virtual |
Virtual methods of Database::Internal.
Implements Xapian::Database::Internal.
Definition at line 720 of file glass_database.cc.
References GlassVersion::get_last_docid(), LOGCALL, RETURN, and version_file.
Referenced by get_postlist_cursor().
|
virtual |
Virtual methods of Database::Internal.
Reimplemented from Xapian::Database::Internal.
Definition at line 942 of file glass_database.cc.
References GlassTable::get_exact_entry(), LOGCALL, postlist_table, and RETURN.
Referenced by get_postlist_cursor().
|
private |
Get an object holding the next revision number which should be used in the tables.
Definition at line 280 of file glass_database.cc.
References GlassVersion::get_revision(), LOGCALL, RETURN, and version_file.
Referenced by apply().
|
inline |
Get a postlist table cursor (used by GlassValueList).
Definition at line 237 of file glass_database.h.
References GlassTable::cursor_get(), GlassPostList::did, get_doccount(), get_doclength(), get_doclength_lower_bound(), get_doclength_upper_bound(), get_freqs(), get_lastdocid(), get_metadata(), get_revision_info(), get_revision_number(), get_spelling_frequency(), get_total_length(), get_unique_terms(), get_uuid(), get_value_freq(), get_value_lower_bound(), get_value_upper_bound(), get_wdf_upper_bound(), has_positions(), open_allterms(), open_document(), open_metadata_keylist(), open_position_list(), open_post_list(), open_spelling_termlist(), open_spelling_wordlist(), open_synonym_keylist(), open_synonym_termlist(), open_term_list(), open_value_list(), positionlist_count(), query(), read_position_list(), readahead_for_query(), request_document(), LeafPostList::term, term_exists(), throw_termlist_table_close_exception(), and write_changesets_to_fd().
|
virtual |
Virtual methods of Database::Internal.
Reimplemented from Xapian::Database::Internal.
Definition at line 963 of file glass_database.cc.
References get_revision_number(), LOGCALL, pack_uint(), and RETURN.
Referenced by get_postlist_cursor().
glass_revision_number_t GlassDatabase::get_revision_number | ( | ) | const |
Get an object holding the revision number which the tables are opened at.
Definition at line 273 of file glass_database.cc.
References GlassVersion::get_revision(), LOGCALL, RETURN, and version_file.
Referenced by get_postlist_cursor(), get_revision_info(), send_whole_database(), and write_changesets_to_fd().
|
virtual |
Virtual methods of Database::Internal.
Reimplemented from Xapian::Database::Internal.
Definition at line 921 of file glass_database.cc.
References GlassSpellingTable::get_word_frequency(), and spelling_table.
Referenced by get_postlist_cursor().
|
virtual |
Virtual methods of Database::Internal.
Implements Xapian::Database::Internal.
Definition at line 727 of file glass_database.cc.
References GlassVersion::get_total_doclen(), LOGCALL, RETURN, and version_file.
Referenced by get_postlist_cursor().
|
virtual |
Virtual methods of Database::Internal.
Implements Xapian::Database::Internal.
Reimplemented in GlassWritableDatabase.
Definition at line 743 of file glass_database.cc.
References Assert, GlassTermList, LOGCALL, and RETURN.
Referenced by get_postlist_cursor(), GlassPostList::get_unique_terms(), and GlassWritableDatabase::get_unique_terms().
|
virtual |
Find lowest and highest docids actually in use.
Only used by compaction, so only needs to be implemented by backends which support compaction.
Reimplemented from Xapian::Database::Internal.
Definition at line 989 of file glass_database.cc.
References GlassVersion::get_doccount(), GlassVersion::get_last_docid(), GlassPostListTable::get_used_docid_range(), postlist_table, and version_file.
Referenced by single_file().
|
virtual |
Virtual methods of Database::Internal.
Reimplemented from Xapian::Database::Internal.
Definition at line 972 of file glass_database.cc.
References GlassVersion::get_uuid_string(), LOGCALL, RETURN, and version_file.
Referenced by get_postlist_cursor(), send_whole_database(), and write_changesets_to_fd().
|
virtual |
Virtual methods of Database::Internal.
Implements Xapian::Database::Internal.
Reimplemented in GlassWritableDatabase.
Definition at line 762 of file glass_database.cc.
References GlassValueManager::get_value_freq(), LOGCALL, RETURN, and value_manager.
Referenced by get_postlist_cursor(), and GlassWritableDatabase::get_value_freq().
|
virtual |
Virtual methods of Database::Internal.
Implements Xapian::Database::Internal.
Reimplemented in GlassWritableDatabase.
Definition at line 769 of file glass_database.cc.
References GlassValueManager::get_value_lower_bound(), LOGCALL, RETURN, and value_manager.
Referenced by get_postlist_cursor(), and GlassWritableDatabase::get_value_lower_bound().
|
virtual |
Virtual methods of Database::Internal.
Implements Xapian::Database::Internal.
Reimplemented in GlassWritableDatabase.
Definition at line 776 of file glass_database.cc.
References GlassValueManager::get_value_upper_bound(), LOGCALL, RETURN, and value_manager.
Referenced by get_postlist_cursor(), and GlassWritableDatabase::get_value_upper_bound().
|
virtual |
Virtual methods of Database::Internal.
Reimplemented from Xapian::Database::Internal.
Definition at line 795 of file glass_database.cc.
References Assert, GlassPostListTable::get_freqs(), GlassVersion::get_wdf_upper_bound(), postlist_table, and version_file.
Referenced by get_postlist_cursor().
|
virtual |
Virtual methods of Database::Internal.
Implements Xapian::Database::Internal.
Reimplemented in GlassWritableDatabase.
Definition at line 812 of file glass_database.cc.
References GlassTable::empty(), and position_table.
Referenced by get_postlist_cursor().
|
virtual |
Return true if there are uncommitted changes.
Reimplemented in GlassWritableDatabase.
Definition at line 1002 of file glass_database.cc.
Referenced by single_file().
|
virtual |
Return true if the database is open for writing.
If this is a WritableDatabase, always returns true.
For a Database, test if there's a writer holding the lock (or if we can't test for a lock without taking it on the current platform, throw Xapian::UnimplementedError).
Reimplemented from Xapian::Database::Internal.
Definition at line 1008 of file glass_database.cc.
References lock, and FlintLock::test().
Referenced by single_file().
|
private |
Called if a modifications fail.
msg | is a string description of the exception that was raised when the modifications failed. |
Definition at line 610 of file glass_database.cc.
References cancel(), changes, close(), Glass::DOCDATA, docdata_table, GlassTable::get_flags(), Xapian::Error::get_msg(), GlassVersion::get_revision(), GlassVersion::get_root(), GlassPostListTable::open(), GlassTable::open(), Glass::POSITION, position_table, Glass::POSTLIST, postlist_table, GlassVersion::read(), GlassValueManager::reset(), GlassVersion::set_changes(), GlassTable::set_changes(), set_revision_number(), Glass::SPELLING, spelling_table, GlassChanges::start(), Glass::SYNONYM, synonym_table, Glass::TERMLIST, termlist_table, value_manager, and version_file.
Referenced by apply().
|
virtual |
Virtual methods of Database::Internal.
Implements Xapian::Database::Internal.
Reimplemented in GlassWritableDatabase.
Definition at line 898 of file glass_database.cc.
References GlassAllTermsList, LOGCALL, and RETURN.
Referenced by get_postlist_cursor(), and GlassWritableDatabase::open_allterms().
|
virtual |
Virtual methods of Database::Internal.
Implements Xapian::Database::Internal.
Reimplemented in GlassWritableDatabase.
Definition at line 854 of file glass_database.cc.
References Assert, docdata_table, get_doclength(), LOGCALL, RETURN, and value_manager.
Referenced by get_postlist_cursor(), and GlassWritableDatabase::open_document().
|
virtual |
Virtual methods of Database::Internal.
Reimplemented from Xapian::Database::Internal.
Definition at line 953 of file glass_database.cc.
References GlassTable::cursor_get(), LOGCALL, postlist_table, and RETURN.
Referenced by get_postlist_cursor().
|
virtual |
Virtual methods of Database::Internal.
Implements Xapian::Database::Internal.
Reimplemented in GlassWritableDatabase.
Definition at line 883 of file glass_database.cc.
References Assert, and position_table.
Referenced by get_postlist_cursor(), GlassPostList::open_position_list(), and GlassTermList::positionlist_begin().
|
virtual |
Virtual methods of Database::Internal.
Implements Xapian::Database::Internal.
Reimplemented in GlassWritableDatabase.
Definition at line 818 of file glass_database.cc.
References get_doccount(), GlassVersion::get_last_docid(), GlassAllDocsPostList, GlassPostList, LOGCALL, RETURN, and version_file.
Referenced by get_postlist_cursor().
|
virtual |
Virtual methods of Database::Internal.
Reimplemented from Xapian::Database::Internal.
Definition at line 906 of file glass_database.cc.
References GlassSpellingTable::open_termlist(), and spelling_table.
Referenced by get_postlist_cursor().
|
virtual |
Virtual methods of Database::Internal.
Reimplemented from Xapian::Database::Internal.
Reimplemented in GlassWritableDatabase.
Definition at line 912 of file glass_database.cc.
References GlassTable::cursor_get(), and spelling_table.
Referenced by get_postlist_cursor(), and GlassWritableDatabase::open_spelling_wordlist().
|
virtual |
Virtual methods of Database::Internal.
Reimplemented from Xapian::Database::Internal.
Reimplemented in GlassWritableDatabase.
Definition at line 933 of file glass_database.cc.
References GlassTable::cursor_get(), and synonym_table.
Referenced by get_postlist_cursor(), and GlassWritableDatabase::open_synonym_keylist().
|
virtual |
Virtual methods of Database::Internal.
Reimplemented from Xapian::Database::Internal.
Definition at line 927 of file glass_database.cc.
References GlassSynonymTable::open_termlist(), and synonym_table.
Referenced by get_postlist_cursor().
|
private |
Open all tables at most recent revision.
Xapian::DatabaseCorruptError | is thrown if a problem is found with the database's format. |
Definition at line 221 of file glass_database.cc.
References changes, Glass::DOCDATA, docdata_table, GlassVersion::get_oldest_changeset(), GlassVersion::get_revision(), GlassVersion::get_root(), GlassVersion::get_spelling_wordfreq_upper_bound(), GlassTable::is_open(), LOGCALL, GlassPostListTable::open(), GlassTable::open(), Glass::POSITION, position_table, Glass::POSTLIST, postlist_table, GlassVersion::read(), readonly, GlassValueManager::reset(), RETURN, Xapian::revision(), GlassVersion::set_changes(), GlassTable::set_changes(), GlassChanges::set_oldest_changeset(), GlassSpellingTable::set_wordfreq_upper_bound(), Glass::SPELLING, spelling_table, GlassChanges::start(), Glass::SYNONYM, synonym_table, Glass::TERMLIST, termlist_table, GlassTable::throw_database_closed(), value_manager, and version_file.
Referenced by GlassDatabase(), and reopen().
|
virtual |
Virtual methods of Database::Internal.
Implements Xapian::Database::Internal.
Definition at line 843 of file glass_database.cc.
References Assert, GlassTermList, GlassTable::is_open(), LOGCALL, RETURN, termlist_table, and throw_termlist_table_close_exception().
Referenced by get_postlist_cursor().
|
virtual |
Virtual methods of Database::Internal.
Reimplemented from Xapian::Database::Internal.
Reimplemented in GlassWritableDatabase.
Definition at line 835 of file glass_database.cc.
References LOGCALL, and RETURN.
Referenced by get_postlist_cursor(), and GlassWritableDatabase::open_value_list().
|
virtual |
Virtual methods of Database::Internal.
Reimplemented in GlassWritableDatabase.
Definition at line 877 of file glass_database.cc.
References position_table, and GlassPositionListTable::positionlist_count().
Referenced by get_postlist_cursor(), GlassTermList::positionlist_count(), and GlassWritableDatabase::positionlist_count().
|
virtual |
Virtual methods of Database::Internal.
Reimplemented in GlassWritableDatabase.
Definition at line 868 of file glass_database.cc.
References Assert, position_table, and GlassPositionList::read_data().
Referenced by get_postlist_cursor(), GlassPostList::read_position_list(), and GlassWritableDatabase::read_position_list().
|
virtual |
Virtual methods of Database::Internal.
Reimplemented from Xapian::Database::Internal.
Definition at line 384 of file glass_database.cc.
References Xapian::Query::get_unique_terms_begin(), GlassPostListTable::make_key(), postlist_table, and GlassTable::readahead_key().
Referenced by get_postlist_cursor().
|
privatevirtual |
Re-open tables to recover from an overwritten condition, or just get most up-to-date version.
Reimplemented from Xapian::Database::Internal.
Definition at line 395 of file glass_database.cc.
References GlassTable::get_flags(), LOGCALL, open_tables(), postlist_table, readonly, and RETURN.
Referenced by write_changesets_to_fd().
|
virtual |
Virtual methods of Database::Internal.
Reimplemented from Xapian::Database::Internal.
Definition at line 378 of file glass_database.cc.
References docdata_table, and GlassDocDataTable::readahead_for_document().
Referenced by get_postlist_cursor().
|
private |
Send a set of messages which transfer the whole database.
Definition at line 437 of file glass_database.cc.
References db_dir, encode_length(), get_revision_number(), get_uuid(), GLASS_TABLE_EXTENSION, LOGCALL_VOID, O_CLOEXEC, pack_uint(), posixy_open, REPL_REPLY_DB_FILEDATA, REPL_REPLY_DB_FILENAME, REPL_REPLY_DB_HEADER, RemoteConnection::send_file(), and RemoteConnection::send_message().
Referenced by write_changesets_to_fd().
|
private |
Set the revision number in the tables.
This updates the disk tables so that the currently open revision becomes the specified revision number.
new_revision | The new revision number to store. This must be greater than the current revision number. FIXME: If we support rewinding to a previous revision, maybe this needs to be greater than any previously used revision. |
Definition at line 332 of file glass_database.cc.
References changes, GlassChanges::commit(), GlassTable::commit(), Glass::DOCDATA, docdata_table, GlassSynonymTable::flush_db(), GlassSpellingTable::flush_db(), GlassTable::flush_db(), GlassVersion::get_revision(), LOGCALL_VOID, GlassValueManager::merge_changes(), Glass::POSITION, position_table, Glass::POSTLIST, postlist_table, GlassVersion::root_to_set(), GlassVersion::set_spelling_wordfreq_upper_bound(), Glass::SPELLING, spelling_table, Xapian::Internal::str(), GlassVersion::sync(), GlassTable::sync(), Glass::SYNONYM, synonym_table, Glass::TERMLIST, termlist_table, value_manager, version_file, and GlassVersion::write().
Referenced by apply(), and modifications_failed().
|
inline |
Definition at line 309 of file glass_database.h.
References compact(), get_used_docid_range(), has_uncommitted_changes(), locked(), and GlassVersion::single_file().
Referenced by compact().
|
virtual |
Virtual methods of Database::Internal.
Implements Xapian::Database::Internal.
Reimplemented in GlassWritableDatabase.
Definition at line 804 of file glass_database.cc.
References Assert, LOGCALL, postlist_table, RETURN, and GlassPostListTable::term_exists().
Referenced by get_postlist_cursor().
void GlassDatabase::throw_termlist_table_close_exception | ( | ) | const |
Definition at line 979 of file glass_database.cc.
References GlassTable::is_open(), postlist_table, and GlassTable::throw_database_closed().
Referenced by GlassWritableDatabase::delete_document(), get_postlist_cursor(), open_term_list(), and GlassWritableDatabase::replace_document().
|
virtual |
Virtual methods of Database::Internal.
Reimplemented from Xapian::Database::Internal.
Definition at line 479 of file glass_database.cc.
References Xapian::ReplicationInfo::changed, Xapian::ReplicationInfo::changeset_count, db_dir, Xapian::ReplicationInfo::fullcopy_count, get_changeset_revisions(), get_revision_number(), get_uuid(), LOGCALL_VOID, MAX_DB_COPIES_PER_CONVERSATION, O_CLOEXEC, pack_uint(), posixy_open, reopen(), REPL_REPLY_CHANGESET, REPL_REPLY_DB_FOOTER, REPL_REPLY_END_OF_CHANGES, REPL_REPLY_FAIL, RemoteConnection::send_file(), RemoteConnection::send_message(), send_whole_database(), Xapian::Internal::str(), and unpack_uint().
Referenced by get_postlist_cursor().
|
friend |
Definition at line 63 of file glass_database.h.
Referenced by open_post_list(), and GlassWritableDatabase::open_post_list().
|
friend |
Definition at line 62 of file glass_database.h.
Referenced by open_allterms().
|
friend |
Definition at line 61 of file glass_database.h.
Referenced by open_post_list(), and GlassWritableDatabase::open_post_list().
|
friend |
Definition at line 60 of file glass_database.h.
Referenced by get_unique_terms(), and open_term_list().
|
friend |
Definition at line 59 of file glass_database.h.
|
private |
Replication changesets.
Definition at line 115 of file glass_database.h.
Referenced by apply(), GlassWritableDatabase::flush_postlist_changes(), modifications_failed(), open_tables(), and set_revision_number().
|
private |
Directory to store databases in.
Definition at line 68 of file glass_database.h.
Referenced by get_backend_info(), get_database_write_lock(), GlassDatabase(), send_whole_database(), and write_changesets_to_fd().
|
private |
Table storing document data.
Definition at line 109 of file glass_database.h.
Referenced by GlassWritableDatabase::add_document_(), apply(), cancel(), close(), compact(), create_and_open_tables(), GlassWritableDatabase::delete_document(), GlassWritableDatabase::has_uncommitted_changes(), modifications_failed(), open_document(), open_tables(), GlassWritableDatabase::replace_document(), request_document(), and set_revision_number().
|
private |
Lock object.
Definition at line 112 of file glass_database.h.
Referenced by close(), get_database_write_lock(), and locked().
|
mutableprivate |
Table storing position lists.
Definition at line 90 of file glass_database.h.
Referenced by GlassWritableDatabase::add_document_(), apply(), cancel(), close(), compact(), create_and_open_tables(), GlassWritableDatabase::flush_postlist_changes(), has_positions(), GlassWritableDatabase::has_positions(), GlassWritableDatabase::has_uncommitted_changes(), modifications_failed(), open_position_list(), GlassWritableDatabase::open_position_list(), open_tables(), positionlist_count(), GlassWritableDatabase::positionlist_count(), read_position_list(), GlassWritableDatabase::replace_document(), and set_revision_number().
|
mutableprivate |
Table storing posting lists.
Whenever an update is performed, this table is the first to be updated: therefore, its most recent revision number is the most recent anywhere in the database.
Definition at line 86 of file glass_database.h.
Referenced by apply(), cancel(), close(), compact(), create_and_open_tables(), database_exists(), GlassWritableDatabase::flush_postlist_changes(), get_doclength(), get_freqs(), get_metadata(), get_used_docid_range(), get_wdf_upper_bound(), GlassWritableDatabase::has_uncommitted_changes(), modifications_failed(), GlassAllTermsList::next(), GlassWritableDatabase::open_allterms(), open_metadata_keylist(), GlassPostList::open_nearby_postlist(), GlassWritableDatabase::open_post_list(), open_tables(), readahead_for_query(), reopen(), GlassWritableDatabase::replace_document(), GlassWritableDatabase::set_metadata(), set_revision_number(), GlassAllTermsList::skip_to(), term_exists(), and throw_termlist_table_close_exception().
|
private |
Whether the database is readonly.
Definition at line 72 of file glass_database.h.
Referenced by GlassDatabase(), open_tables(), and reopen().
|
mutableprivate |
Table storing spelling correction data.
Definition at line 105 of file glass_database.h.
Referenced by GlassWritableDatabase::add_spelling(), apply(), cancel(), close(), compact(), create_and_open_tables(), get_spelling_frequency(), GlassWritableDatabase::has_uncommitted_changes(), modifications_failed(), open_spelling_termlist(), open_spelling_wordlist(), GlassWritableDatabase::open_spelling_wordlist(), open_tables(), GlassWritableDatabase::remove_spelling(), and set_revision_number().
|
mutableprivate |
Table storing synonym data.
Definition at line 101 of file glass_database.h.
Referenced by GlassWritableDatabase::add_synonym(), apply(), cancel(), GlassWritableDatabase::clear_synonyms(), close(), compact(), create_and_open_tables(), GlassWritableDatabase::has_uncommitted_changes(), modifications_failed(), open_synonym_keylist(), GlassWritableDatabase::open_synonym_keylist(), open_synonym_termlist(), open_tables(), GlassWritableDatabase::remove_synonym(), and set_revision_number().
|
private |
Table storing term lists.
Definition at line 94 of file glass_database.h.
Referenced by GlassWritableDatabase::add_document_(), apply(), cancel(), close(), compact(), create_and_open_tables(), GlassWritableDatabase::delete_document(), GlassTermList::GlassTermList(), GlassWritableDatabase::has_uncommitted_changes(), modifications_failed(), open_tables(), open_term_list(), GlassWritableDatabase::replace_document(), and set_revision_number().
|
mutableprivate |
Value manager.
Definition at line 97 of file glass_database.h.
Referenced by GlassWritableDatabase::add_document_(), apply(), GlassWritableDatabase::apply(), cancel(), GlassWritableDatabase::delete_document(), get_value_freq(), get_value_lower_bound(), get_value_upper_bound(), GlassWritableDatabase::has_uncommitted_changes(), modifications_failed(), open_document(), open_tables(), GlassWritableDatabase::open_value_list(), GlassWritableDatabase::replace_document(), and set_revision_number().
|
private |
The file describing the Glass database.
This file has information about the format of the database which can't easily be stored in any of the individual tables.
Definition at line 78 of file glass_database.h.
Referenced by GlassWritableDatabase::add_document(), GlassWritableDatabase::add_document_(), apply(), cancel(), compact(), create_and_open_tables(), GlassWritableDatabase::delete_document(), GlassWritableDatabase::flush_postlist_changes(), get_doccount(), get_doclength_lower_bound(), get_doclength_upper_bound(), get_lastdocid(), get_next_revision_number(), get_revision_number(), get_total_length(), get_used_docid_range(), get_uuid(), get_wdf_upper_bound(), modifications_failed(), open_post_list(), GlassWritableDatabase::open_post_list(), open_tables(), GlassWritableDatabase::replace_document(), and set_revision_number().