129#ifndef TEMPTABLE_HANDLER_H
130#define TEMPTABLE_HANDLER_H
195 int close()
override;
215 uchar *mysql_row)
override;
249 const uchar *mysql_search_cells,
251 uint mysql_search_cells_len_bytes,
260 uchar *mysql_row)
override;
298 const uchar *mysql_search_cells,
300 uint mysql_search_cells_len_bytes)
override;
306 uchar *mysql_row)
override;
315 const uchar *)
override;
321 uchar *mysql_row)
override;
327 const uchar *mysql_row_old,
329 uchar *mysql_row_new)
override;
336 const uchar *mysql_row)
override;
373 bool)
const override;
482 int reset()
override;
522 const Field &mysql_field)
const;
570 switch (mysql_field.
type()) {
virtual enum_field_types type() const =0
Using this class is fraught with peril, and you need to be very careful when doing so.
Definition: sql_string.h:169
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:36
The handler class is the interface for dynamically loadable storage engines.
Definition: handler.h:4666
TABLE_SHARE * table_share
Definition: handler.h:4674
ulonglong Table_flags
Definition: handler.h:4670
TABLE * table
Definition: handler.h:4675
virtual ha_rows estimate_rows_upper_bound()
Return upper bound of current number of records in the table (max.
Definition: handler.h:5666
Memory-block abstraction whose purpose is to serve as a building block for custom memory-allocator im...
Definition: block.h:163
A cursor for iterating over an Index.
Definition: cursor.h:41
Temptable engine handler.
Definition: handler.h:143
void update_create_info(HA_CREATE_INFO *) override
Not implemented.
Definition: handler.cc:1057
double scan_time() override
Scan time.
Definition: handler.cc:935
~Handler() override=default
Destructor.
int optimize(THD *, HA_CHECK_OPT *) override
Not implemented.
Definition: handler.cc:1027
int index_next(uchar *mysql_row) override
Advance the index cursor and read the row at that position.
Definition: handler.cc:526
ha_key_alg get_default_index_algorithm() const override
Get the default index algorithm.
Definition: handler.cc:883
int records(ha_rows *) override
Not implemented.
Definition: handler.cc:1051
void unlock_row() override
Not implemented.
Definition: handler.cc:1001
handler * clone(const char *, MEM_ROOT *) override
Not implemented.
Definition: handler.cc:1003
int disable_indexes(uint mode) override
Disable indexes.
Definition: handler.cc:957
bool check_if_incompatible_data(HA_CREATE_INFO *, uint) override
Not implemented.
Definition: handler.cc:1091
int enable_indexes(uint mode) override
Enable indexes.
Definition: handler.cc:976
int info(uint flag) override
Refresh table stats.
Definition: handler.cc:789
Block * m_shared_block
Pointer to the non-owned shared-block of memory to be re-used by all Allocator instances or copies ma...
Definition: handler.h:529
bool is_field_type_fixed_size(const Field &mysql_field) const
Checks if field has a fixed size.
Definition: handler.h:569
Table_flags table_flags() const override
Get the table flags.
Definition: handler.cc:827
size_t m_index_read_number_of_cells
Number of cells to compare in index_next() after index_read() has positioned m_index_cursor.
Definition: handler.h:557
int reset() override
Not implemented.
Definition: handler.cc:1045
NextCondition
A condition used by index_next_conditional() to control whether to fetch the next row or not.
Definition: handler.h:275
@ NO
No condition - fetch the next row unconditionally.
@ ONLY_IF_SAME
Fetch the next row only if it is the same as the current one.
int index_read_last(uchar *mysql_row, const uchar *mysql_search_cells, uint mysql_search_cells_len_bytes) override
Read the last row that matches mysql_search_cells (in index order).
Definition: handler.cc:621
int close() override
Close the opened table.
Definition: handler.cc:270
int delete_row(const uchar *mysql_row) override
Delete the row where the handler is currently positioned.
Definition: handler.cc:737
bool is_index_algorithm_supported(ha_key_alg algorithm) const override
Check whether an index algorithm is supported.
Definition: handler.cc:888
int analyze(THD *, HA_CHECK_OPT *) override
Not implemented.
Definition: handler.cc:1021
Storage::Iterator m_rnd_iterator
Iterator used by rnd_init(), rnd_next() and rnd_end() methods.
Definition: handler.h:534
int index_end() override
End an index scan.
Definition: handler.cc:668
int delete_table(const char *table_name, const dd::Table *) override
Delete a table.
Definition: handler.cc:205
void init_table_handle_for_HANDLER() override
Not implemented.
Definition: handler.cc:1069
int create(const char *table_name, TABLE *mysql_table, HA_CREATE_INFO *, dd::Table *) override
Create an in-memory table.
Definition: handler.cc:150
int index_last(uchar *) override
Not implemented.
Definition: handler.cc:1015
int cmp_ref(const uchar *, const uchar *) const override
Not implemented.
Definition: handler.cc:1085
uint max_supported_key_part_length(HA_CREATE_INFO *create_info) const override
Get the maximum supported indexed columns length.
Definition: handler.cc:903
Table * m_opened_table
Currently opened table, or nullptr if none is opened.
Definition: handler.h:525
int start_stmt(THD *, thr_lock_type) override
Not implemented.
Definition: handler.cc:1039
int delete_all_rows() override
Delete all rows in the table.
Definition: handler.cc:784
uint max_supported_key_length() const override
Get the maximum supported index length in bytes.
Definition: handler.cc:893
int rnd_next(uchar *mysql_row) override
Advance the cursor to the next row in insertion order and retrieve it.
Definition: handler.cc:304
int index_prev(uchar *mysql_row) override
Step to the previous row in index order.
Definition: handler.cc:634
bool primary_key_is_clustered() const override
Not implemented.
Definition: handler.cc:1080
int rename_table(const char *, const char *, const dd::Table *, dd::Table *) override
Not implemented.
Definition: handler.cc:1062
int write_row(uchar *mysql_row) override
Insert a new row to the currently opened table.
Definition: handler.cc:702
int index_first(uchar *) override
Not implemented.
Definition: handler.cc:1009
int index_init(uint index_no, bool) override
Set the index to be used by subsequent index_*() calls.
Definition: handler.cc:395
THR_LOCK_DATA ** store_lock(THD *, THR_LOCK_DATA **, thr_lock_type) override
Not implemented.
Definition: handler.cc:930
int open(const char *table_name, int, uint, const dd::Table *) override
Open an existing table.
Definition: handler.cc:240
int rnd_pos(uchar *mysql_row, uchar *position) override
Fetch the record pointed by position.
Definition: handler.cc:359
Handler(handlerton *hton, TABLE_SHARE *table_share)
Constructor.
Definition: handler.cc:113
int rnd_init(bool) override
Begin a table scan.
Definition: handler.cc:290
bool get_error_message(int, String *) override
Not implemented.
Definition: handler.cc:1074
const char * table_type() const override
Get the name of the storage engine.
Definition: handler.cc:822
longlong get_memory_buffer_size() const override
Get the limit on the memory usage.
Definition: handler.cc:813
size_t m_deleted_rows
Number of deleted rows by this handler object.
Definition: handler.h:560
Cursor m_index_cursor
Cursor used by index_*() methods.
Definition: handler.h:544
void opened_table_validate()
Definition: handler.h:563
int index_read(uchar *mysql_row, const uchar *mysql_search_cells, uint mysql_search_cells_len_bytes, ha_rkey_function find_flag) override
Read a row from the currently opened table using the index set with index_init().
Definition: handler.cc:415
int update_row(const uchar *mysql_row_old, uchar *mysql_row_new) override
Update a row.
Definition: handler.cc:714
double read_time(uint, uint, ha_rows rows) override
Read time.
Definition: handler.cc:946
void position(const uchar *) override
Store position to current row inside the handler.
Definition: handler.cc:684
bool m_rnd_iterator_is_positioned
Flag that denotes whether m_rnd_iterator is positioned.
Definition: handler.h:539
int rnd_end() override
End a table scan.
Definition: handler.cc:381
ulong index_flags(uint index_no, uint, bool) const override
Get the flags for a given index.
Definition: handler.cc:847
int index_next_same(uchar *mysql_row, const uchar *, uint) override
Advance the index cursor and read the row at that position if its indexed cells are the same as in th...
Definition: handler.cc:538
Result index_next_conditional(uchar *mysql_row, NextCondition condition)
Advance the index cursor and read the row at that position, conditionally.
Definition: handler.cc:551
int truncate(dd::Table *) override
Delete all rows in the table.
Definition: handler.cc:765
int external_lock(THD *, int) override
Not implemented.
Definition: handler.cc:995
int check(THD *, HA_CHECK_OPT *) override
Not implemented.
Definition: handler.cc:1033
Iterator over a Storage object.
Definition: storage.h:51
const TABLE_SHARE * mysql_table_share() const
Definition: table.h:181
@ MYSQL_TYPE_VARCHAR
Definition: field_types.h:71
@ MYSQL_TYPE_LONG_BLOB
Definition: field_types.h:86
@ MYSQL_TYPE_BLOB
Definition: field_types.h:87
@ MYSQL_TYPE_VECTOR
Definition: field_types.h:77
@ MYSQL_TYPE_JSON
Definition: field_types.h:80
@ MYSQL_TYPE_TINY_BLOB
Definition: field_types.h:84
@ MYSQL_TYPE_GEOMETRY
Definition: field_types.h:90
@ MYSQL_TYPE_MEDIUM_BLOB
Definition: field_types.h:85
static int flag
Definition: hp_test1.cc:40
ha_key_alg
Definition: my_base.h:98
ha_rkey_function
Definition: my_base.h:78
my_off_t ha_rows
Definition: my_base.h:1217
unsigned char uchar
Definition: my_inttypes.h:52
long long int longlong
Definition: my_inttypes.h:55
const char * table_name
Definition: rules_table_service.cc:56
mode
Definition: file_handle.h:61
Definition: allocator.h:48
Result
Definition: result.h:34
void close_connection(THD *thd)
Helper function that performs the temptable related cleanup.
Definition: handler.cc:97
TempTable Table declarations.
Definition: handler.h:3879
Struct to hold information about the table that should be created.
Definition: handler.h:3272
The MEM_ROOT is a simple arena, where allocations are carved out of larger blocks.
Definition: my_alloc.h:83
This structure is shared between different table objects.
Definition: table.h:716
TABLE_SHARE * s
Definition: table.h:1434
Definition: thr_lock.h:124
handlerton is a singleton structure - one instance per storage engine - to provide access to storage ...
Definition: handler.h:2784
thr_lock_type
Definition: thr_lock.h:51