27#ifndef TEMPTABLE_CURSOR_H
28#define TEMPTABLE_CURSOR_H
49 const Hash_duplicates_container::const_iterator &iterator);
54 const Tree_container::const_iterator &iterator);
80 unsigned char *mysql_row,
82 size_t mysql_row_length) const;
110 const
Cursor &other) const;
116 const
Cursor &other) const;
145 : m_type(
Type::
HASH), m_is_positioned(true), m_hash_iterator(iterator) {}
148 : m_type(
Type::
TREE), m_is_positioned(true), m_tree_iterator(iterator) {}
177 unsigned char *mysql_row,
178 size_t mysql_row_length)
const {
258 return !(*
this == other);
A cursor for iterating over an Index.
Definition: cursor.h:41
Cursor()
Constructor.
Definition: cursor.h:142
Cursor & operator--()
Recede the cursor backwards.
Definition: cursor.h:232
bool m_is_positioned
Indicate whether the cursor is positioned.
Definition: cursor.h:131
bool operator==(const Cursor &other) const
Check if equal to another cursor.
Definition: cursor.h:246
void unposition()
Unposition the cursor.
Definition: cursor.h:152
Tree_container::const_iterator m_tree_iterator
Iterator that is used if m_type == Type::TREE.
Definition: cursor.h:137
Type
Type of the index the cursor iterates over.
Definition: cursor.h:120
const Hash_duplicates_container::const_iterator & hash_iterator() const
Get the underlying hash iterator.
Definition: cursor.h:191
Cursor & operator++()
Advance the cursor forward.
Definition: cursor.h:219
void export_row_to_mysql(const Columns &columns, unsigned char *mysql_row, size_t mysql_row_length) const
Export the row that is pointed to by this cursor in mysql write_row() format.
Definition: cursor.h:176
Type m_type
Type of the index the cursor iterates over.
Definition: cursor.h:128
Storage::Element * row() const
Get a pointer to the row of the current cursor position.
Definition: cursor.h:165
const Indexed_cells & indexed_cells() const
Get the indexed cells of the current cursor position.
Definition: cursor.h:154
Cursor & operator=(const Cursor &rhs)
Copy-assign from another cursor.
Definition: cursor.h:202
Cursor(const Cursor &)=default
bool is_positioned() const
Check if the cursor is positioned.
Definition: cursor.h:150
bool operator!=(const Cursor &other) const
Check if not equal to another cursor.
Definition: cursor.h:257
Hash_duplicates_container::const_iterator m_hash_iterator
Iterator that is used if m_type == Type::HASH.
Definition: cursor.h:134
const Tree_container::const_iterator & tree_iterator() const
Get the underlying tree iterator.
Definition: cursor.h:197
Cursor(Cursor &&) noexcept=default
Indexed cells represent one or more cells that are covered by an index.
Definition: indexed_cells.h:46
Storage container.
Definition: storage.h:43
void Element
Type used for elements.
Definition: storage.h:46
TempTable index containers declarations.
TempTable Indexed Cells declaration.
void my_abort()
Calls our own implementation of abort, if specified, or std's abort().
Definition: my_init.cc:258
Definition: allocator.h:45
std::multiset< Indexed_cells, Indexed_cells_less, Allocator< Indexed_cells > > Tree_container
The container used by tree unique and non-unique indexes.
Definition: containers.h:42
std::unordered_multiset< Indexed_cells, Indexed_cells_hash, Indexed_cells_equal_to, Allocator< Indexed_cells > > Hash_duplicates_container
The container used by hash non-unique indexes.
Definition: containers.h:48
std::vector< Column, Allocator< Column > > Columns
A type that designates all the columns of a table.
Definition: column.h:227
TempTable Column declaration.
TempTable Row declarations.