32#ifndef ddl0impl_file_reader_h
33#define ddl0impl_file_reader_h
44using Range = std::pair<os_offset_t, os_offset_t>;
132 using Bounds = std::pair<const byte *, const byte *>;
Captures ownership and manages lifetime of an already opened OS file descriptor.
Definition: ddl0ddl.h:161
bool is_open() const
Definition: ddl0ddl.h:179
A utility class which, if inherited from, prevents the descendant class from being copied,...
Definition: ut0class_life_cycle.h:41
dberr_t
Definition: db0err.h:39
DDL buffer infrastructure.
The general architecture is that the work is done in two phases, roughly the read and write phase.
Definition: btr0load.cc:42
std::pair< os_offset_t, os_offset_t > Range
Represents the chunk in bytes : first element represents the beginning offset of the chunk and,...
Definition: ddl0impl-file-reader.h:44
byte mrec_t
Merge record in Aligned_buffer.
Definition: ddl0ddl.h:78
std::pair< byte *, os_offset_t > IO_buffer
Block size for DDL I/O operations.
Definition: ddl0impl.h:47
size_t buffer_size(const ConstBufferSequence &buffers) noexcept
Definition: buffer.h:315
Definition: gcs_xcom_synode.h:64
This file contains a set of libraries providing overloads for regular dynamic allocation routines whi...
Definition: aligned_alloc.h:48
std::vector< T, ut::allocator< T > > vector
Specialization of vector which uses allocator.
Definition: ut0new.h:2875
void delete_arr(T *ptr) noexcept
Releases storage which has been dynamically allocated through any of the ut::new_arr*() variants.
Definition: ut0new.h:1110
std::conditional_t< !std::is_array< T >::value, std::unique_ptr< T, detail::Aligned_deleter< T > >, std::conditional_t< detail::is_unbounded_array_v< T >, std::unique_ptr< T, detail::Aligned_array_deleter< std::remove_extent_t< T > > >, void > > unique_ptr_aligned
The following is a common type that is returned by all the ut::make_unique_aligned (non-aligned) spec...
Definition: ut0new.h:2573
For loading indexes.
Definition: ddl0impl-builder.h:48
Read rows from the temporary file.
Definition: ddl0impl-file-reader.h:48
std::vector< ulint, ut::allocator< ulint > > Offsets
Definition: ddl0impl-file-reader.h:117
uint64_t m_n_rows_read
Number of rows read from the file.
Definition: ddl0impl-file-reader.h:156
Bounds m_bounds
File buffer bounds.
Definition: ddl0impl-file-reader.h:141
dberr_t seek() noexcept
Read the page in the file buffer from the start offset, and reset the cursor to the beginning of the ...
Definition: ddl0file-reader.cc:90
size_t m_buffer_size
IO buffer size in bytes.
Definition: ddl0impl-file-reader.h:147
File_reader(const Unique_os_file_descriptor &file, dict_index_t *index, size_t buffer_size, const Range &range) noexcept
Constructor.
Definition: ddl0impl-file-reader.h:54
uint64_t get_n_rows_read() const noexcept
Definition: ddl0impl-file-reader.h:98
const byte * m_ptr
Pointer current offset within file buffer.
Definition: ddl0impl-file-reader.h:138
const Unique_os_file_descriptor & m_file
File handle to read from.
Definition: ddl0impl-file-reader.h:129
dberr_t read(const Range &range) noexcept
Set the start and end offsets to read from, to avoid the possibility of overlapping reads from the ot...
Definition: ddl0file-reader.cc:105
byte * m_aux_buf
Auxiliary buffer for records that span across pages.
Definition: ddl0impl-file-reader.h:144
dict_index_t * m_index
Index that the records belong to.
Definition: ddl0impl-file-reader.h:120
friend File_cursor
Definition: ddl0impl-file-reader.h:158
const mrec_t * m_mrec
Pointer to current row.
Definition: ddl0impl-file-reader.h:123
dberr_t next() noexcept
Advance the "cursor".
Definition: ddl0file-reader.cc:125
dberr_t get_tuple(Builder *builder, mem_heap_t *heap, dtuple_t *&dtuple) noexcept
The current row as a tuple.
Definition: ddl0builder.cc:238
IO_buffer m_io_buffer
File buffer for reading.
Definition: ddl0impl-file-reader.h:153
Offsets m_field_offsets
Columns offsets.
Definition: ddl0impl-file-reader.h:126
~File_reader() noexcept
Destructor.
Definition: ddl0impl-file-reader.h:67
dberr_t read_next() noexcept
Advance page number to the next and read in.
Definition: ddl0file-reader.cc:120
Range m_range
Definition: ddl0impl-file-reader.h:135
ut::unique_ptr_aligned< byte[]> m_aligned_buffer
Aligned IO buffer.
Definition: ddl0impl-file-reader.h:150
bool end_of_range() const noexcept
Definition: ddl0impl-file-reader.h:93
std::pair< const byte *, const byte * > Bounds
Definition: ddl0impl-file-reader.h:132
dberr_t prepare() noexcept
Prepare the file for reading.
Definition: ddl0file-reader.cc:39
Data structure for an index.
Definition: dict0mem.h:1046
Structure for an SQL data tuple of fields (logical record)
Definition: data0data.h:694
The info structure stored at the beginning of a heap block.
Definition: mem0mem.h:302
Definition: gen_lex_token.cc:149
unsigned long int ulint
Definition: univ.i:406
#define ut_a(EXPR)
Abort execution if EXPR does not evaluate to nonzero.
Definition: ut0dbg.h:57