CUBRID Engine
latest
|
#include <record_descriptor.hpp>
Public Member Functions | |
record_descriptor (const cubmem::block_allocator &alloc=cubmem::PRIVATE_BLOCK_ALLOCATOR) | |
~record_descriptor (void) | |
record_descriptor (const char *data, std::size_t size) | |
record_descriptor (const recdes &rec, const cubmem::block_allocator &alloc=cubmem::PRIVATE_BLOCK_ALLOCATOR) | |
record_descriptor (record_descriptor &&other) | |
void | set_recdes (const recdes &rec) |
int | peek (cubthread::entry *thread_p, PAGE_PTR page, PGSLOTID slotid) |
int | copy (cubthread::entry *thread_p, PAGE_PTR page, PGSLOTID slotid) |
int | get (cubthread::entry *thread_p, PAGE_PTR page, PGSLOTID slotid, record_get_mode mode) |
const recdes & | get_recdes (void) const |
const char * | get_data (void) const |
std::size_t | get_size (void) const |
char * | get_data_for_modify (void) |
void | set_data (const char *data, std::size_t size) |
template<typename T > | |
void | set_data_to_object (const T &t) |
void | set_record_length (std::size_t length) |
void | set_type (std::int16_t type) |
void | modify_data (std::size_t offset, std::size_t old_size, std::size_t new_size, const char *new_data) |
void | delete_data (std::size_t offset, std::size_t data_size) |
void | insert_data (std::size_t offset, std::size_t new_size, const char *new_data) |
void | move_data (std::size_t dest_offset, std::size_t source_offset) |
void | pack (cubpacking::packer &packer) const override |
void | unpack (cubpacking::unpacker &unpacker) override |
std::size_t | get_packed_size (cubpacking::packer &packer, std::size_t curr_offset) const override |
void | resize_buffer (std::size_t size) |
void | set_external_buffer (char *buf, std::size_t buf_size) |
template<std::size_t S> | |
void | set_external_buffer (cubmem::stack_block< S > &membuf) |
void | release_buffer (char *&data, std::size_t &size) |
Public Member Functions inherited from cubpacking::packable_object | |
virtual | ~packable_object () |
virtual bool | is_equal (const packable_object *other) |
Private Types | |
enum | data_source { data_source::INVALID, data_source::PEEKED, data_source::COPIED, data_source::NEW, data_source::IMMUTABLE } |
Private Member Functions | |
void | check_changes_are_permitted (void) const |
bool | is_mutable () const |
void | update_source_after_get (record_get_mode mode) |
Private Attributes | |
recdes | m_recdes |
cubmem::extensible_block | m_own_data |
data_source | m_data_source |
Definition at line 60 of file record_descriptor.hpp.
|
strongprivate |
Enumerator | |
---|---|
INVALID | |
PEEKED | |
COPIED | |
NEW | |
IMMUTABLE |
Definition at line 144 of file record_descriptor.hpp.
record_descriptor::record_descriptor | ( | const cubmem::block_allocator & | alloc = cubmem::PRIVATE_BLOCK_ALLOCATOR | ) |
Definition at line 45 of file record_descriptor.cpp.
References recdes::area_size, recdes::data, recdes::length, m_recdes, NULL, REC_HOME, and recdes::type.
record_descriptor::~record_descriptor | ( | void | ) |
Definition at line 80 of file record_descriptor.cpp.
record_descriptor::record_descriptor | ( | const char * | data, |
std::size_t | size | ||
) |
Definition at line 74 of file record_descriptor.cpp.
References set_data().
record_descriptor::record_descriptor | ( | const recdes & | rec, |
const cubmem::block_allocator & | alloc = cubmem::PRIVATE_BLOCK_ALLOCATOR |
||
) |
Definition at line 56 of file record_descriptor.cpp.
References set_recdes().
record_descriptor::record_descriptor | ( | record_descriptor && | other | ) |
Definition at line 63 of file record_descriptor.cpp.
References INVALID, m_data_source, m_own_data, m_recdes, NULL, and REC_UNKNOWN.
|
private |
Definition at line 313 of file record_descriptor.cpp.
References assert, and is_mutable().
Referenced by delete_data(), get_data_for_modify(), modify_data(), move_data(), set_record_length(), and set_type().
int record_descriptor::copy | ( | cubthread::entry * | thread_p, |
PAGE_PTR | page, | ||
PGSLOTID | slotid | ||
) |
Definition at line 110 of file record_descriptor.cpp.
References COPY_RECORD.
void record_descriptor::delete_data | ( | std::size_t | offset, |
std::size_t | data_size | ||
) |
Definition at line 298 of file record_descriptor.cpp.
References check_changes_are_permitted(), and move_data().
int record_descriptor::get | ( | cubthread::entry * | thread_p, |
PAGE_PTR | page, | ||
PGSLOTID | slotid, | ||
record_get_mode | mode | ||
) |
Definition at line 116 of file record_descriptor.cpp.
References assert, COPY_RECORD, ER_FAILED, recdes::length, m_recdes, mode, NO_ERROR, resize_buffer(), S_DOESNT_FIT, S_SUCCESS, spage_get_record(), and update_source_after_get().
const char * record_descriptor::get_data | ( | void | ) | const |
Definition at line 196 of file record_descriptor.cpp.
References assert, recdes::data, INVALID, m_data_source, and m_recdes.
char * record_descriptor::get_data_for_modify | ( | void | ) |
Definition at line 211 of file record_descriptor.cpp.
References check_changes_are_permitted(), recdes::data, and m_recdes.
Referenced by heap_attrinfo_transform_to_disk_internal().
|
overridevirtual |
Implements cubpacking::packable_object.
Definition at line 344 of file record_descriptor.cpp.
References recdes::data, cubpacking::packer::get_packed_buffer_size(), cubpacking::packer::get_packed_short_size(), recdes::length, and m_recdes.
Definition at line 189 of file record_descriptor.cpp.
References assert, INVALID, m_data_source, and m_recdes.
Referenced by locator_allocate_copy_area_by_attr_info(), and serial_update_serial_object().
std::size_t record_descriptor::get_size | ( | void | ) | const |
Definition at line 203 of file record_descriptor.cpp.
References assert, INVALID, recdes::length, m_data_source, and m_recdes.
Referenced by locator_allocate_copy_area_by_attr_info(), move_data(), and serial_update_serial_object().
void record_descriptor::insert_data | ( | std::size_t | offset, |
std::size_t | new_size, | ||
const char * | new_data | ||
) |
Definition at line 307 of file record_descriptor.cpp.
References modify_data().
|
private |
Definition at line 319 of file record_descriptor.cpp.
References COPIED, m_data_source, and NEW.
Referenced by check_changes_are_permitted(), and resize_buffer().
void record_descriptor::modify_data | ( | std::size_t | offset, |
std::size_t | old_size, | ||
std::size_t | new_size, | ||
const char * | new_data | ||
) |
Definition at line 285 of file record_descriptor.cpp.
References check_changes_are_permitted(), recdes::data, m_recdes, and move_data().
Referenced by insert_data().
void record_descriptor::move_data | ( | std::size_t | dest_offset, |
std::size_t | source_offset | ||
) |
Definition at line 252 of file record_descriptor.cpp.
References assert, check_changes_are_permitted(), recdes::data, get_size(), recdes::length, m_recdes, and resize_buffer().
Referenced by delete_data(), and modify_data().
|
overridevirtual |
Implements cubpacking::packable_object.
Definition at line 325 of file record_descriptor.cpp.
References recdes::data, recdes::length, m_recdes, cubpacking::packer::pack_buffer_with_length(), cubpacking::packer::pack_short(), and recdes::type.
int record_descriptor::peek | ( | cubthread::entry * | thread_p, |
PAGE_PTR | page, | ||
PGSLOTID | slotid | ||
) |
Definition at line 104 of file record_descriptor.cpp.
References PEEK_RECORD.
void record_descriptor::release_buffer | ( | char *& | data, |
std::size_t & | size | ||
) |
Definition at line 353 of file record_descriptor.cpp.
References cubmem::extensible_block::get_size(), m_own_data, and cubmem::extensible_block::release_ptr().
Referenced by locator_allocate_copy_area_by_attr_info().
void record_descriptor::resize_buffer | ( | std::size_t | size | ) |
Definition at line 149 of file record_descriptor.cpp.
References recdes::area_size, assert, recdes::data, cubmem::extensible_block::extend_to(), cubmem::extensible_block::get_ptr(), INVALID, is_mutable(), m_data_source, m_own_data, m_recdes, and NEW.
Referenced by get(), heap_attrinfo_transform_to_disk_internal(), move_data(), and unpack().
void record_descriptor::set_data | ( | const char * | data, |
std::size_t | size | ||
) |
Definition at line 219 of file record_descriptor.cpp.
References recdes::data, IMMUTABLE, recdes::length, m_data_source, and m_recdes.
Referenced by record_descriptor().
void record_descriptor::set_data_to_object | ( | const T & | t | ) |
Definition at line 175 of file record_descriptor.hpp.
void record_descriptor::set_external_buffer | ( | char * | buf, |
std::size_t | buf_size | ||
) |
Definition at line 243 of file record_descriptor.cpp.
References recdes::area_size, recdes::data, cubmem::extensible_block::freemem(), m_data_source, m_own_data, m_recdes, and NEW.
Referenced by locator_allocate_copy_area_by_attr_info(), and serial_update_serial_object().
void record_descriptor::set_external_buffer | ( | cubmem::stack_block< S > & | membuf | ) |
Definition at line 165 of file record_descriptor.hpp.
References cubmem::stack_block< S >::get_ptr(), and cubmem::stack_block< S >::SIZE.
Definition at line 85 of file record_descriptor.cpp.
References recdes::area_size, assert, COPIED, recdes::data, cubmem::extensible_block::extend_to(), cubmem::extensible_block::get_ptr(), INVALID, recdes::length, m_data_source, m_own_data, m_recdes, and recdes::type.
Referenced by record_descriptor().
void record_descriptor::set_record_length | ( | std::size_t | length | ) |
Definition at line 228 of file record_descriptor.cpp.
References recdes::area_size, assert, check_changes_are_permitted(), recdes::length, and m_recdes.
Referenced by heap_attrinfo_transform_to_disk_internal().
void record_descriptor::set_type | ( | std::int16_t | type | ) |
Definition at line 236 of file record_descriptor.cpp.
References check_changes_are_permitted(), m_recdes, and recdes::type.
Referenced by serial_update_serial_object().
|
overridevirtual |
Implements cubpacking::packable_object.
Definition at line 332 of file record_descriptor.cpp.
References COPIED, recdes::data, recdes::length, m_data_source, m_recdes, cubpacking::unpacker::peek_unpack_buffer_length(), resize_buffer(), recdes::type, cubpacking::unpacker::unpack_buffer_with_length(), and cubpacking::unpacker::unpack_short().
|
private |
Definition at line 171 of file record_descriptor.cpp.
References assert, COPIED, COPY_RECORD, INVALID, m_data_source, PEEK_RECORD, and PEEKED.
Referenced by get().
|
private |
Definition at line 156 of file record_descriptor.hpp.
Referenced by get_data(), get_recdes(), get_size(), is_mutable(), record_descriptor(), resize_buffer(), set_data(), set_external_buffer(), set_recdes(), unpack(), and update_source_after_get().
|
private |
Definition at line 154 of file record_descriptor.hpp.
Referenced by record_descriptor(), release_buffer(), resize_buffer(), set_external_buffer(), and set_recdes().
|
private |
Definition at line 153 of file record_descriptor.hpp.
Referenced by get(), get_data(), get_data_for_modify(), get_packed_size(), get_recdes(), get_size(), modify_data(), move_data(), pack(), record_descriptor(), resize_buffer(), set_data(), set_external_buffer(), set_recdes(), set_record_length(), set_type(), and unpack().