MySQL 9.1.0
Source Code Documentation
|
Merge the blocks in the file. More...
#include <ddl0impl-merge.h>
Classes | |
struct | Context |
Context to use for merging the files/runs. More... | |
struct | Cursor |
Cursor for merging blocks from the same file. More... | |
struct | Output_file |
For writing out the merged rows. More... | |
Public Types | |
using | Ranges = std::vector< os_offset_t > |
Offsets of record lists to merge. More... | |
Public Member Functions | |
Merge_file_sort (Context *merge_ctx) noexcept | |
Constructor. More... | |
dberr_t | sort (Builder *builder, Merge_offsets &offsets) noexcept |
Merge the the blocks. More... | |
uint64_t | get_n_rows () const noexcept |
Static Public Attributes | |
static constexpr size_t | N_WAY_MERGE = 2 |
The design is generalized as an N way merge, however we stick with 2 for now. More... | |
Private Member Functions | |
dberr_t | merge_rows (Cursor &cursor, Output_file &output_file) noexcept |
Merge the rows. More... | |
dberr_t | merge_ranges (Cursor &cursor, Merge_offsets &offsets, Output_file &output_file, size_t buffer_size) noexcept |
Merge the blocks in the ranges. More... | |
Ranges | next_ranges (Merge_offsets &offsets) noexcept |
Move to the next ranges of pages to merge. More... | |
Private Attributes | |
Dup * | m_dup {} |
To check and report duplicates. More... | |
Context * | m_merge_ctx {} |
Meta data for merging blocks. More... | |
Merge_offsets | m_next_offsets {} |
Page numbers to merge for the next pass. More... | |
uint64_t | m_n_rows {} |
Number of rows in the sorted file. More... | |
Merge the blocks in the file.
using ddl::Merge_file_sort::Ranges = std::vector<os_offset_t> |
Offsets of record lists to merge.
Two adjacent entries make one list or range
|
inlineexplicitnoexcept |
Constructor.
[in,out] | merge_ctx | Data blocks merge meta data. |
|
inlinenoexcept |
|
privatenoexcept |
Merge the blocks in the ranges.
[in,out] | cursor | To iterate over the rows to merge. |
[in,out] | offsets | Starting offsets of record lists to merge. |
[in,out] | output_file | Output file to write the merged rows. |
[in] | buffer_size | IO buffer size for reads. |
|
privatenoexcept |
Merge the rows.
[in,out] | cursor | To iterate over the rows to merge. |
[in,out] | output_file | Output file to write the merged rows. |
|
privatenoexcept |
Move to the next ranges of pages to merge.
[in,out] | offsets | Current offsets to start the merge from. |
|
noexcept |
Merge the the blocks.
[in,out] | builder | Builder instance used for building index. |
[in,out] | offsets | Offsets from where to start the merge. |
|
private |
To check and report duplicates.
|
private |
Meta data for merging blocks.
|
private |
Number of rows in the sorted file.
|
private |
Page numbers to merge for the next pass.
|
staticconstexpr |
The design is generalized as an N way merge, however we stick with 2 for now.