31#ifndef ddl0impl_buffer_h
32#define ddl0impl_buffer_h
69 void clear() noexcept;
77 [[nodiscard]]
bool is_fts() const noexcept {
96 [[nodiscard]]
bool empty() const noexcept {
return size() == 0; }
118 (
sizeof(std::remove_pointer<
decltype(
127 void deep_copy(
size_t n_fields,
size_t data_size)
noexcept;
140 using DTuples = std::vector<DTuple, ut::allocator<DTuple>>;
A utility class which, if inherited from, prevents the descendant class from being copied,...
Definition: ut0class_life_cycle.h:40
dberr_t
Definition: db0err.h:38
DDL implementation include file.
static ulint dict_index_is_unique(const dict_index_t *index)
Check whether the index is unique.
constexpr uint32_t DICT_FTS
FTS index; can't be combined with the other flags.
Definition: dict0mem.h:103
static void * mem_heap_alloc(mem_heap_t *heap, ulint n)
Allocates n bytes of memory from a memory heap.
static void mem_heap_free(mem_heap_t *heap)
Frees the space occupied by a memory heap.
uint16_t value_type
Definition: vt100.h:183
The general architecture is that the work is done in two phases, roughly the read and write phase.
Definition: btr0load.cc:41
std::pair< byte *, os_offset_t > IO_buffer
Block size for DDL I/O operations.
Definition: ddl0impl.h:46
uint64_t os_offset_t
File offset in bytes.
Definition: os0file.h:83
required string type
Definition: replication_group_member_actions.proto:33
Structure for reporting duplicate records.
Definition: ddl0ddl.h:131
Buffer for sorting in main memory.
Definition: ddl0impl-buffer.h:39
bool full() const noexcept
Definition: ddl0impl-buffer.h:93
dberr_t serialize(IO_buffer io_buffer, Function &&f) noexcept
Serialize the contents for storing to disk.
Definition: ddl0buffer.cc:116
bool is_fts() const noexcept
Definition: ddl0impl-buffer.h:77
bool will_fit(size_t n) const noexcept
Check if n bytes will fit in the buffer.
Definition: ddl0impl-buffer.h:115
Key_sort_buffer(dict_index_t *index, size_t size) noexcept
Constructor.
Definition: ddl0buffer.cc:80
size_t m_buffer_size
Buffer size.
Definition: ddl0impl-buffer.h:161
size_t size() const noexcept
Definition: ddl0impl-buffer.h:90
dfield_t * alloc(size_t n) noexcept
Allocate fields from the heap.
Definition: ddl0impl-buffer.h:107
std::vector< DTuple, ut::allocator< DTuple > > DTuples
Definition: ddl0impl-buffer.h:140
static int compare(const dfield_t *lhs, const dfield_t *rhs, Dup *dup) noexcept
Compare two merge data tuples.
Definition: ddl0buffer.cc:218
bool is_clustered() const noexcept
Definition: ddl0impl-buffer.h:72
size_t m_n_tuples
Number of data tuples.
Definition: ddl0impl-buffer.h:152
bool is_unique() const noexcept
Definition: ddl0impl-buffer.h:82
size_t m_total_size
Total amount of data bytes.
Definition: ddl0impl-buffer.h:149
std::function< dberr_t(IO_buffer io_buffer, os_offset_t &n)> Function
Callback for writing serialized data to to disk.
Definition: ddl0impl-buffer.h:48
mem_heap_t * heap() noexcept
Definition: ddl0impl-buffer.h:87
dict_index_t * m_index
The index the tuples belong to.
Definition: ddl0impl-buffer.h:146
void deep_copy(size_t n_fields, size_t data_size) noexcept
Deep copy the field data starting from the back.
Definition: ddl0buffer.cc:87
DTuples m_dtuples
Array of data tuples.
Definition: ddl0impl-buffer.h:158
dfield_t *& back() noexcept
Definition: ddl0impl-buffer.h:99
~Key_sort_buffer() noexcept
Destructor.
Definition: ddl0impl-buffer.h:56
size_t m_max_tuples
Maximum number of data tuples.
Definition: ddl0impl-buffer.h:155
mem_heap_t * m_heap
Memory heap where allocated.
Definition: ddl0impl-buffer.h:143
void sort(ddl::Dup *dup) noexcept
Sort the elements in m_dtuples.
Definition: ddl0buffer.cc:103
void clear() noexcept
Reset the sort buffer.
Definition: ddl0buffer.cc:97
bool empty() const noexcept
Definition: ddl0impl-buffer.h:96
Structure for an SQL data field.
Definition: data0data.h:604
Data structure for an index.
Definition: dict0mem.h:1045
unsigned type
index type (DICT_CLUSTERED, DICT_UNIQUE, DICT_IBUF, DICT_CORRUPT)
Definition: dict0mem.h:1072
bool is_clustered() const
Definition: dict0mem.h:1310
The info structure stored at the beginning of a heap block.
Definition: mem0mem.h:301
#define ut_a(EXPR)
Abort execution if EXPR does not evaluate to nonzero.
Definition: ut0dbg.h:56
int n
Definition: xcom_base.cc:508