12#ifndef joedb_db_encoded_file_Writable_Database_declared
13#define joedb_db_encoded_file_Writable_Database_declared
31 friend class detail::Client_Data;
41 void check_single_row();
55 bool perform_initialization,
140 int64_t field_value_of_size,
141 int64_t field_value_of_offset
145 set_data(result, field_value_of_data);
146 set_size(result, field_value_of_size);
159 for (
size_t i = size; i > 0;)
171 std::exception_ptr exception;
174 catch (...) {exception = std::current_exception();}
178 std::rethrow_exception(exception);
189 std::exception_ptr exception;
192 catch (...) {exception = std::current_exception();}
196 std::rethrow_exception(exception);
207 std::exception_ptr exception;
210 catch (...) {exception = std::current_exception();}
214 std::rethrow_exception(exception);
virtual std::string read_blob_data(Blob blob) const
const Buffered_File & get_file() const
Blob write_blob_data(const std::string &data) final
void insert_vector(Table_Id table_id, Record_Id record_id, size_t size) final
int64_t ahead_of_checkpoint() const noexcept
void delete_from(Table_Id table_id, Record_Id record_id) final
void insert_into(Table_Id table_id, Record_Id record_id) final
void checkpoint(Commit_Level commit_level) final
void default_checkpoint()
Handle concurrent access to a joedb::Buffered_File using a joedb::Connection.
Store all the tables of the database.
void internal_delete_buffer(Record_Id record_id)
void internal_update_buffer__size(Record_Id record_id, int64_t field_value_of_size)
void internal_update_vector_buffer__data(Record_Id record_id, size_t size, const joedb::Blob *value)
detail::data_of_buffer storage_of_buffer
void internal_insert_buffer(Record_Id record_id)
void timestamp(int64_t timestamp) override
void internal_update_buffer__offset(Record_Id record_id, int64_t field_value_of_offset)
void internal_update_buffer__data(Record_Id record_id, joedb::Blob field_value_of_data)
void internal_update_vector_buffer__offset(Record_Id record_id, size_t size, const int64_t *value)
void comment(const std::string &comment) override
void internal_vector_insert_buffer(Record_Id record_id, size_t size)
void internal_update_vector_buffer__size(Record_Id record_id, size_t size, const int64_t *value)
Write simultaneously to the database and the file (ignore schema changes)
A writable Database constructed from a writable joedb::Buffered_File.
int64_t ahead_of_checkpoint() const
void clear_buffer_table()
void set_data(id_of_buffer record, joedb::Blob field_value_of_data)
id_of_buffer new_vector_of_buffer(size_t size)
void update_vector_of_size(id_of_buffer record, size_t size, F f)
void delete_vector_of_buffer(id_of_buffer v, size_t size)
void checkpoint_no_commit()
id_of_buffer new_buffer()
std::string read_blob_data(joedb::Blob blob) const
void set_size(id_of_buffer record, int64_t field_value_of_size)
void delete_buffer(id_of_buffer record)
void update_vector_of_data(id_of_buffer record, size_t size, F f)
void set_offset(id_of_buffer record, int64_t field_value_of_offset)
void write_comment(const std::string &comment)
void checkpoint(joedb::Commit_Level commit_level) final
void checkpoint_half_commit()
void checkpoint_full_commit()
const joedb::Readonly_Journal & get_journal() const
joedb::Blob write_blob_data(const std::string &data) final
id_of_buffer new_buffer(joedb::Blob field_value_of_data, int64_t field_value_of_size, int64_t field_value_of_offset)
void update_vector_of_offset(id_of_buffer record, size_t size, F f)
Strongly-typed wrapper around an integer representing a row of the buffer table.
constexpr size_t get_id() const
constexpr Record_Id get_record_id() const
Automatically generated by joedbc.