32#ifndef ddl0impl_merge_h
33#define ddl0impl_merge_h
71 using Ranges = std::vector<os_offset_t>;
93 Output_file &output_file)
noexcept;
102 Output_file &output_file,
Class used to report ALTER TABLE progress via performance_schema.
Definition: ut0stage.h:81
dberr_t
Definition: db0err.h:39
For scanning the temporary file.
The general architecture is that the work is done in two phases, roughly the read and write phase.
Definition: btr0load.cc:42
std::deque< os_offset_t, ut::allocator< os_offset_t > > Merge_offsets
Start offsets in the file, from where to merge records.
Definition: ddl0impl.h:64
size_t buffer_size(const ConstBufferSequence &buffers) noexcept
Definition: buffer.h:313
For loading indexes.
Definition: ddl0impl-builder.h:48
Cursor for reading the data.
Definition: ddl0impl-cursor.h:41
Structure for reporting duplicate records.
Definition: ddl0ddl.h:132
Context to use for merging the files/runs.
Definition: ddl0impl-merge.h:55
Alter_stage * m_stage
PFS progress monitoring.
Definition: ddl0impl-merge.h:66
size_t m_n_threads
Number of scan threads used, for memory buffer calculation.
Definition: ddl0impl-merge.h:63
Dup * m_dup
For reporting duplicates, it has the index instance too.
Definition: ddl0impl-merge.h:60
ddl::file_t * m_file
File to sort.
Definition: ddl0impl-merge.h:57
Cursor for merging blocks from the same file.
Definition: ddl0merge.cc:41
For writing out the merged rows.
Definition: ddl0merge.cc:96
Merge the blocks in the file.
Definition: ddl0impl-merge.h:45
std::vector< os_offset_t > Ranges
Offsets of record lists to merge.
Definition: ddl0impl-merge.h:71
uint64_t m_n_rows
Number of rows in the sorted file.
Definition: ddl0impl-merge.h:121
dberr_t merge_rows(Cursor &cursor, Output_file &output_file) noexcept
Merge the rows.
Definition: ddl0merge.cc:397
Dup * m_dup
To check and report duplicates.
Definition: ddl0impl-merge.h:112
Merge_file_sort(Context *merge_ctx) noexcept
Constructor.
Definition: ddl0impl-merge.h:75
Context * m_merge_ctx
Meta data for merging blocks.
Definition: ddl0impl-merge.h:115
Ranges next_ranges(Merge_offsets &offsets) noexcept
Move to the next ranges of pages to merge.
Definition: ddl0merge.cc:380
Merge_offsets m_next_offsets
Page numbers to merge for the next pass.
Definition: ddl0impl-merge.h:118
static constexpr size_t N_WAY_MERGE
The design is generalized as an N way merge, however we stick with 2 for now.
Definition: ddl0impl-merge.h:52
dberr_t merge_ranges(Cursor &cursor, Merge_offsets &offsets, Output_file &output_file, size_t buffer_size) noexcept
Merge the blocks in the ranges.
Definition: ddl0merge.cc:424
dberr_t sort(Builder *builder, Merge_offsets &offsets) noexcept
Merge the the blocks.
Definition: ddl0merge.cc:463
uint64_t get_n_rows() const noexcept
Definition: ddl0impl-merge.h:85
Information about temporary files used in merge sort.
Definition: ddl0impl.h:67