23#ifndef PARSE_TREE_PARTITIONS_INCLUDED
24#define PARSE_TREE_PARTITIONS_INCLUDED
43template <
typename Element_type>
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:850
Definition: sql_list.h:433
A typesafe replacement for DYNAMIC_ARRAY.
Definition: mem_root_array.h:425
Node for the PARTITION clause of CREATE/ALTER TABLE.
Definition: parse_tree_partitions.h:385
const POS pos
Definition: parse_tree_partitions.h:388
PT_part_values *const opt_part_values
Definition: parse_tree_partitions.h:391
Mem_root_array< PT_partition_option * > * opt_part_options
Definition: parse_tree_partitions.h:393
Mem_root_array< PT_subpartition * > * opt_sub_partitions
Definition: parse_tree_partitions.h:394
const LEX_STRING name
Definition: parse_tree_partitions.h:389
partition_type type
Definition: parse_tree_partitions.h:390
const POS values_pos
Definition: parse_tree_partitions.h:392
Parse_tree_part_node super
Definition: parse_tree_partitions.h:386
PT_part_definition(const POS &pos, const LEX_STRING &name, partition_type type, PT_part_values *const opt_part_values, const POS &values_pos, Mem_root_array< PT_partition_option * > *opt_part_options, Mem_root_array< PT_subpartition * > *opt_sub_partitions, const POS &sub_partitions_pos)
Definition: parse_tree_partitions.h:398
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:201
const POS sub_partitions_pos
Definition: parse_tree_partitions.h:395
Node for the PARTITION BY [LINEAR] HASH type clause.
Definition: parse_tree_partitions.h:504
const bool is_linear
Definition: parse_tree_partitions.h:507
Item * expr
Definition: parse_tree_partitions.h:509
const POS expr_pos
Definition: parse_tree_partitions.h:508
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:416
PT_part_type_def super
Definition: parse_tree_partitions.h:505
PT_part_type_def_hash(bool is_linear, const POS &expr_pos, Item *expr)
Definition: parse_tree_partitions.h:512
Node for the PARTITION BY [LINEAR] KEY type clause.
Definition: parse_tree_partitions.h:484
PT_part_type_def super
Definition: parse_tree_partitions.h:485
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:401
const bool is_linear
Definition: parse_tree_partitions.h:487
const enum_key_algorithm key_algo
Definition: parse_tree_partitions.h:488
PT_part_type_def_key(bool is_linear, enum_key_algorithm key_algo, List< char > *opt_columns)
Definition: parse_tree_partitions.h:492
List< char > *const opt_columns
Definition: parse_tree_partitions.h:489
Node for the PARTITION BY LIST COLUMNS (<ident list>) type clause.
Definition: parse_tree_partitions.h:576
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:461
List< char > *const columns
Definition: parse_tree_partitions.h:579
PT_part_type_def_list_columns(List< char > *columns)
Definition: parse_tree_partitions.h:582
PT_part_type_def super
Definition: parse_tree_partitions.h:577
Node for the PARTITION BY LIST (<expression>) type clause.
Definition: parse_tree_partitions.h:558
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:450
PT_part_type_def super
Definition: parse_tree_partitions.h:559
const POS expr_pos
Definition: parse_tree_partitions.h:561
PT_part_type_def_list_expr(const POS &expr_pos, Item *expr)
Definition: parse_tree_partitions.h:565
Item * expr
Definition: parse_tree_partitions.h:562
Node for the PARTITION BY RANGE COLUMNS (<ident list>) type clause.
Definition: parse_tree_partitions.h:541
List< char > *const columns
Definition: parse_tree_partitions.h:544
PT_part_type_def_range_columns(List< char > *columns)
Definition: parse_tree_partitions.h:547
PT_part_type_def super
Definition: parse_tree_partitions.h:542
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:439
Node for the PARTITION BY RANGE (<expression>) type clause.
Definition: parse_tree_partitions.h:523
PT_part_type_def_range_expr(const POS &expr_pos, Item *expr)
Definition: parse_tree_partitions.h:530
Item * expr
Definition: parse_tree_partitions.h:527
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:428
PT_part_type_def super
Definition: parse_tree_partitions.h:524
const POS expr_pos
Definition: parse_tree_partitions.h:526
Definition: parse_tree_partitions.h:471
bool itemize_part_expr(Partition_parse_context *pc, const POS &pos, Item **item)
Definition: parse_tree_partitions.cc:383
bool set_part_field_list(Partition_parse_context *pc, List< char > *list)
Definition: parse_tree_partitions.cc:371
Node for the partitioning expression in CREATE/ALTER TABLE
Definition: parse_tree_partitions.h:303
Item * expr
Definition: parse_tree_partitions.h:307
PT_part_value_item_expr(const POS &pos, Item *expr)
Definition: parse_tree_partitions.h:310
const POS pos
Definition: parse_tree_partitions.h:306
PT_part_value_item super
Definition: parse_tree_partitions.h:304
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:116
Node for a list of partitioning values in VALUES clauses.
Definition: parse_tree_partitions.h:328
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:130
PT_part_values super
Definition: parse_tree_partitions.h:329
PT_part_value_item_list_paren(Mem_root_array< PT_part_value_item * > *values, const POS &paren_pos)
Definition: parse_tree_partitions.h:335
Mem_root_array< PT_part_value_item * > * values
Definition: parse_tree_partitions.h:331
const POS paren_pos
Definition: parse_tree_partitions.h:332
Node for the MAX_VALUE partition value in CREATE/ALTER TABLE
Definition: parse_tree_partitions.h:287
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:104
PT_part_value_item super
Definition: parse_tree_partitions.h:288
const POS pos
Definition: parse_tree_partitions.h:290
PT_part_value_item_max(const POS &pos)
Definition: parse_tree_partitions.h:293
Base class for partition value nodes: MAX_VALUE values or expressions.
Definition: parse_tree_partitions.h:280
Node for a list of partitioning values in the VALUES IN clause.
Definition: parse_tree_partitions.h:347
PT_part_values super
Definition: parse_tree_partitions.h:348
PT_part_values_in_item(const POS &pos, PT_part_value_item_list_paren *item)
Definition: parse_tree_partitions.h:354
const POS pos
Definition: parse_tree_partitions.h:350
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:162
PT_part_value_item_list_paren * item
Definition: parse_tree_partitions.h:351
Node for a list of partitioning values in the VALUES IN clause.
Definition: parse_tree_partitions.h:366
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:187
Mem_root_array< PT_part_value_item_list_paren * > * list
Definition: parse_tree_partitions.h:370
PT_part_values super
Definition: parse_tree_partitions.h:367
PT_part_values_in_list(const POS &pos, Mem_root_array< PT_part_value_item_list_paren * > *list)
Definition: parse_tree_partitions.h:373
const POS pos
Definition: parse_tree_partitions.h:369
Base class for VALUES partitioning clauses.
Definition: parse_tree_partitions.h:321
Node for the DATA DIRECTORY [=] <string> partition option.
Definition: parse_tree_partitions.h:134
PT_partition_option super
Definition: parse_tree_partitions.h:135
const char * data_directory
Definition: parse_tree_partitions.h:137
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.h:143
PT_partition_data_directory(const char *data_directory)
Definition: parse_tree_partitions.h:140
Node for the [STORAGE] ENGINE [=] <identifier|string> partition option.
Definition: parse_tree_partitions.h:219
PT_partition_engine(const LEX_CSTRING &name)
Definition: parse_tree_partitions.h:225
const LEX_CSTRING name
Definition: parse_tree_partitions.h:223
PT_partition_option super
Definition: parse_tree_partitions.h:220
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.h:227
Node for the INDEX DIRECTORY [=] <string> partition option.
Definition: parse_tree_partitions.h:112
PT_partition_option super
Definition: parse_tree_partitions.h:113
PT_partition_index_directory(const char *index_directory)
Definition: parse_tree_partitions.h:118
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.h:121
const char * index_directory
Definition: parse_tree_partitions.h:115
Node for the MAX_ROWS [=] <integer> partition option.
Definition: parse_tree_partitions.h:177
PT_partition_option super
Definition: parse_tree_partitions.h:178
ha_rows max_rows
Definition: parse_tree_partitions.h:180
PT_partition_max_rows(ha_rows max_rows)
Definition: parse_tree_partitions.h:183
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.h:185
Node for the MIN_ROWS [=] <integer> partition option.
Definition: parse_tree_partitions.h:156
PT_partition_option super
Definition: parse_tree_partitions.h:157
ha_rows min_rows
Definition: parse_tree_partitions.h:159
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.h:164
PT_partition_min_rows(ha_rows min_rows)
Definition: parse_tree_partitions.h:162
Node for the NODEGROUP [=] <integer> partition option.
Definition: parse_tree_partitions.h:198
uint16 nodegroup
Definition: parse_tree_partitions.h:201
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.h:206
PT_partition_nodegroup(uint16 nodegroup)
Definition: parse_tree_partitions.h:204
PT_partition_option super
Definition: parse_tree_partitions.h:199
Base class for all partition options.
Definition: parse_tree_partitions.h:84
Node for the TABLESPACE [=] <identifier> partition option.
Definition: parse_tree_partitions.h:240
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.h:249
PT_partition_tablespace(const char *tablespace)
Definition: parse_tree_partitions.h:246
const char * tablespace
Definition: parse_tree_partitions.h:243
PT_partition_option super
Definition: parse_tree_partitions.h:241
Node for the PARTITION definition clause.
Definition: parse_tree_partitions.h:593
Mem_root_array< PT_part_definition * > * part_defs
Definition: parse_tree_partitions.h:600
partition_info part_info
Definition: parse_tree_partitions.h:603
PT_sub_partition *const opt_sub_part
Definition: parse_tree_partitions.h:598
const POS part_defs_pos
Definition: parse_tree_partitions.h:599
bool contextualize(Parse_context *pc) override
Definition: parse_tree_partitions.cc:471
Parse_tree_node super
Definition: parse_tree_partitions.h:594
PT_part_type_def *const part_type_def
Definition: parse_tree_partitions.h:596
PT_partition(PT_part_type_def *part_type_def, uint opt_num_parts, PT_sub_partition *opt_sub_part, const POS &part_defs_pos, Mem_root_array< PT_part_definition * > *part_defs)
Definition: parse_tree_partitions.h:606
const uint opt_num_parts
Definition: parse_tree_partitions.h:597
Node for the SUBRAPTITION BY HASH definition clause.
Definition: parse_tree_partitions.h:428
Item * hash
Definition: parse_tree_partitions.h:433
const uint opt_num_subparts
Definition: parse_tree_partitions.h:434
PT_sub_partition_by_hash(bool is_linear, const POS &hash_pos, Item *hash, uint opt_num_subparts)
Definition: parse_tree_partitions.h:437
PT_sub_partition super
Definition: parse_tree_partitions.h:429
const POS hash_pos
Definition: parse_tree_partitions.h:432
const bool is_linear
Definition: parse_tree_partitions.h:431
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:319
Node for the SUBRAPTITION BY KEY definition clause.
Definition: parse_tree_partitions.h:452
const bool is_linear
Definition: parse_tree_partitions.h:455
enum_key_algorithm key_algo
Definition: parse_tree_partitions.h:456
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:346
PT_sub_partition_by_key(bool is_linear, enum_key_algorithm key_algo, List< char > *field_names, const uint opt_num_subparts)
Definition: parse_tree_partitions.h:461
const uint opt_num_subparts
Definition: parse_tree_partitions.h:458
PT_sub_partition super
Definition: parse_tree_partitions.h:453
List< char > * field_names
Definition: parse_tree_partitions.h:457
Base class for all subpartitioning clause nodes.
Definition: parse_tree_partitions.h:421
Node for the SUBRAPTITION clause of CREATE/ALTER TABLE
Definition: parse_tree_partitions.h:262
const POS pos
Definition: parse_tree_partitions.h:263
const char * name
Definition: parse_tree_partitions.h:264
PT_subpartition(const POS &pos, const char *name, Mem_root_array< PT_partition_option * > *options)
Definition: parse_tree_partitions.h:268
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:52
const Mem_root_array< PT_partition_option * > * options
Definition: parse_tree_partitions.h:265
Base class for parse tree nodes (excluding the Parse_tree_root hierarchy)
Definition: parse_tree_node_base.h:138
virtual bool contextualize(Context *pc)
Do all context-sensitive things and mark the node as contextualized.
Definition: parse_tree_node_base.h:186
Definition: partition_info.h:179
partition_element *const current_partition
Definition: partition_info.h:182
partition_info *const part_info
Definition: partition_info.h:181
partition_element *const curr_part_elem
Definition: partition_info.h:183
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:33
Definition: partition_element.h:107
const char * index_file_name
Definition: partition_element.h:120
char * part_comment
Definition: partition_element.h:118
handlerton * engine_type
Definition: partition_element.h:121
ha_rows part_min_rows
Definition: partition_element.h:114
ha_rows part_max_rows
Definition: partition_element.h:113
uint16 nodegroup_id
Definition: partition_element.h:123
const char * data_file_name
Definition: partition_element.h:119
const char * tablespace_name
Definition: partition_element.h:117
Definition: partition_info.h:208
Fido Client Authentication nullptr
Definition: fido_client_plugin.cc:221
Parse_tree_node_tmpl< Partition_parse_context > Parse_tree_part_node
Base class for all Partition_parse_context-dependent nodes.
Definition: parse_tree_partitions.h:77
This file includes constants used by all storage engines.
my_off_t ha_rows
Definition: my_base.h:1139
Some integer typedefs for easier portability.
uint16_t uint16
Definition: my_inttypes.h:64
Definition: options.cc:48
std::list< T, ut::allocator< T > > list
Specialization of list which uses ut_allocator.
Definition: ut0new.h:2876
bool resolve_engine(THD *thd, const LEX_CSTRING &name, bool is_temp_table, bool strict, handlerton **ret)
Resolve engine by its name.
Definition: parse_tree_helpers.cc:288
partition_type
An enum and a struct to handle partitioning and subpartitioning.
Definition: partition_element.h:32
enum_key_algorithm
PARTITION BY KEY ALGORITHM=N Which algorithm to use for hashing the fields.
Definition: partition_info.h:173
Definition: mysql_lex_string.h:39
Definition: mysql_lex_string.h:34
Environment data for the contextualization phase.
Definition: parse_tree_node_base.h:120
THD *const thd
Current thread handler.
Definition: parse_tree_node_base.h:121
Parse context for partitioning-specific parse tree nodes.
Definition: parse_tree_partitions.h:54
const bool is_add_or_reorganize_partition
True for "ALTER TABLE ADD PARTITION" and "ALTER TABLE REORGANIZE PARTITION" statements,...
Definition: parse_tree_partitions.h:69
Partition_parse_context(THD *const thd, partition_info *part_info, partition_element *current_partition, partition_element *curr_part_elem, bool is_add_or_reorganize_partition)
Definition: parse_tree_partitions.cc:43
Partition_parse_context(THD *thd_arg, partition_info *part_info_arg, bool is_add_or_reorganize_partition)
Definition: parse_tree_partitions.h:60
Bison "location" class.
Definition: parse_location.h:42
unsigned int uint
Definition: uca-dump.cc:29