24#ifndef PARSE_TREE_PARTITIONS_INCLUDED
25#define PARSE_TREE_PARTITIONS_INCLUDED
44template <
typename Element_type>
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:853
Definition: sql_list.h:434
A typesafe replacement for DYNAMIC_ARRAY.
Definition: mem_root_array.h:426
Node for the PARTITION clause of CREATE/ALTER TABLE.
Definition: parse_tree_partitions.h:386
const POS pos
Definition: parse_tree_partitions.h:389
PT_part_values *const opt_part_values
Definition: parse_tree_partitions.h:392
Mem_root_array< PT_partition_option * > * opt_part_options
Definition: parse_tree_partitions.h:394
Mem_root_array< PT_subpartition * > * opt_sub_partitions
Definition: parse_tree_partitions.h:395
const LEX_STRING name
Definition: parse_tree_partitions.h:390
partition_type type
Definition: parse_tree_partitions.h:391
const POS values_pos
Definition: parse_tree_partitions.h:393
Parse_tree_part_node super
Definition: parse_tree_partitions.h:387
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:399
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:202
const POS sub_partitions_pos
Definition: parse_tree_partitions.h:396
Node for the PARTITION BY [LINEAR] HASH type clause.
Definition: parse_tree_partitions.h:505
const bool is_linear
Definition: parse_tree_partitions.h:508
Item * expr
Definition: parse_tree_partitions.h:510
const POS expr_pos
Definition: parse_tree_partitions.h:509
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:420
PT_part_type_def super
Definition: parse_tree_partitions.h:506
PT_part_type_def_hash(bool is_linear, const POS &expr_pos, Item *expr)
Definition: parse_tree_partitions.h:513
Node for the PARTITION BY [LINEAR] KEY type clause.
Definition: parse_tree_partitions.h:485
PT_part_type_def super
Definition: parse_tree_partitions.h:486
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:405
const bool is_linear
Definition: parse_tree_partitions.h:488
const enum_key_algorithm key_algo
Definition: parse_tree_partitions.h:489
PT_part_type_def_key(bool is_linear, enum_key_algorithm key_algo, List< char > *opt_columns)
Definition: parse_tree_partitions.h:493
List< char > *const opt_columns
Definition: parse_tree_partitions.h:490
Node for the PARTITION BY LIST COLUMNS (<ident list>) type clause.
Definition: parse_tree_partitions.h:577
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:465
List< char > *const columns
Definition: parse_tree_partitions.h:580
PT_part_type_def_list_columns(List< char > *columns)
Definition: parse_tree_partitions.h:583
PT_part_type_def super
Definition: parse_tree_partitions.h:578
Node for the PARTITION BY LIST (<expression>) type clause.
Definition: parse_tree_partitions.h:559
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:454
PT_part_type_def super
Definition: parse_tree_partitions.h:560
const POS expr_pos
Definition: parse_tree_partitions.h:562
PT_part_type_def_list_expr(const POS &expr_pos, Item *expr)
Definition: parse_tree_partitions.h:566
Item * expr
Definition: parse_tree_partitions.h:563
Node for the PARTITION BY RANGE COLUMNS (<ident list>) type clause.
Definition: parse_tree_partitions.h:542
List< char > *const columns
Definition: parse_tree_partitions.h:545
PT_part_type_def_range_columns(List< char > *columns)
Definition: parse_tree_partitions.h:548
PT_part_type_def super
Definition: parse_tree_partitions.h:543
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:443
Node for the PARTITION BY RANGE (<expression>) type clause.
Definition: parse_tree_partitions.h:524
PT_part_type_def_range_expr(const POS &expr_pos, Item *expr)
Definition: parse_tree_partitions.h:531
Item * expr
Definition: parse_tree_partitions.h:528
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:432
PT_part_type_def super
Definition: parse_tree_partitions.h:525
const POS expr_pos
Definition: parse_tree_partitions.h:527
Definition: parse_tree_partitions.h:472
bool itemize_part_expr(Partition_parse_context *pc, const POS &pos, Item **item)
Definition: parse_tree_partitions.cc:384
bool set_part_field_list(Partition_parse_context *pc, List< char > *list)
Definition: parse_tree_partitions.cc:372
Node for the partitioning expression in CREATE/ALTER TABLE
Definition: parse_tree_partitions.h:304
Item * expr
Definition: parse_tree_partitions.h:308
PT_part_value_item_expr(const POS &pos, Item *expr)
Definition: parse_tree_partitions.h:311
const POS pos
Definition: parse_tree_partitions.h:307
PT_part_value_item super
Definition: parse_tree_partitions.h:305
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:117
Node for a list of partitioning values in VALUES clauses.
Definition: parse_tree_partitions.h:329
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:131
PT_part_values super
Definition: parse_tree_partitions.h:330
PT_part_value_item_list_paren(Mem_root_array< PT_part_value_item * > *values, const POS &paren_pos)
Definition: parse_tree_partitions.h:336
Mem_root_array< PT_part_value_item * > * values
Definition: parse_tree_partitions.h:332
const POS paren_pos
Definition: parse_tree_partitions.h:333
Node for the MAX_VALUE partition value in CREATE/ALTER TABLE
Definition: parse_tree_partitions.h:288
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:105
PT_part_value_item super
Definition: parse_tree_partitions.h:289
const POS pos
Definition: parse_tree_partitions.h:291
PT_part_value_item_max(const POS &pos)
Definition: parse_tree_partitions.h:294
Base class for partition value nodes: MAX_VALUE values or expressions.
Definition: parse_tree_partitions.h:281
Node for a list of partitioning values in the VALUES IN clause.
Definition: parse_tree_partitions.h:348
PT_part_values super
Definition: parse_tree_partitions.h:349
PT_part_values_in_item(const POS &pos, PT_part_value_item_list_paren *item)
Definition: parse_tree_partitions.h:355
const POS pos
Definition: parse_tree_partitions.h:351
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:163
PT_part_value_item_list_paren * item
Definition: parse_tree_partitions.h:352
Node for a list of partitioning values in the VALUES IN clause.
Definition: parse_tree_partitions.h:367
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:188
Mem_root_array< PT_part_value_item_list_paren * > * list
Definition: parse_tree_partitions.h:371
PT_part_values super
Definition: parse_tree_partitions.h:368
PT_part_values_in_list(const POS &pos, Mem_root_array< PT_part_value_item_list_paren * > *list)
Definition: parse_tree_partitions.h:374
const POS pos
Definition: parse_tree_partitions.h:370
Base class for VALUES partitioning clauses.
Definition: parse_tree_partitions.h:322
Node for the DATA DIRECTORY [=] <string> partition option.
Definition: parse_tree_partitions.h:135
PT_partition_option super
Definition: parse_tree_partitions.h:136
const char * data_directory
Definition: parse_tree_partitions.h:138
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.h:144
PT_partition_data_directory(const char *data_directory)
Definition: parse_tree_partitions.h:141
Node for the [STORAGE] ENGINE [=] <identifier|string> partition option.
Definition: parse_tree_partitions.h:220
PT_partition_engine(const LEX_CSTRING &name)
Definition: parse_tree_partitions.h:226
const LEX_CSTRING name
Definition: parse_tree_partitions.h:224
PT_partition_option super
Definition: parse_tree_partitions.h:221
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.h:228
Node for the INDEX DIRECTORY [=] <string> partition option.
Definition: parse_tree_partitions.h:113
PT_partition_option super
Definition: parse_tree_partitions.h:114
PT_partition_index_directory(const char *index_directory)
Definition: parse_tree_partitions.h:119
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.h:122
const char * index_directory
Definition: parse_tree_partitions.h:116
Node for the MAX_ROWS [=] <integer> partition option.
Definition: parse_tree_partitions.h:178
PT_partition_option super
Definition: parse_tree_partitions.h:179
ha_rows max_rows
Definition: parse_tree_partitions.h:181
PT_partition_max_rows(ha_rows max_rows)
Definition: parse_tree_partitions.h:184
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.h:186
Node for the MIN_ROWS [=] <integer> partition option.
Definition: parse_tree_partitions.h:157
PT_partition_option super
Definition: parse_tree_partitions.h:158
ha_rows min_rows
Definition: parse_tree_partitions.h:160
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.h:165
PT_partition_min_rows(ha_rows min_rows)
Definition: parse_tree_partitions.h:163
Node for the NODEGROUP [=] <integer> partition option.
Definition: parse_tree_partitions.h:199
uint16 nodegroup
Definition: parse_tree_partitions.h:202
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.h:207
PT_partition_nodegroup(uint16 nodegroup)
Definition: parse_tree_partitions.h:205
PT_partition_option super
Definition: parse_tree_partitions.h:200
Base class for all partition options.
Definition: parse_tree_partitions.h:85
Node for the TABLESPACE [=] <identifier> partition option.
Definition: parse_tree_partitions.h:241
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.h:250
PT_partition_tablespace(const char *tablespace)
Definition: parse_tree_partitions.h:247
const char * tablespace
Definition: parse_tree_partitions.h:244
PT_partition_option super
Definition: parse_tree_partitions.h:242
Node for the PARTITION definition clause.
Definition: parse_tree_partitions.h:594
Mem_root_array< PT_part_definition * > * part_defs
Definition: parse_tree_partitions.h:601
partition_info part_info
Definition: parse_tree_partitions.h:604
PT_sub_partition *const opt_sub_part
Definition: parse_tree_partitions.h:599
const POS part_defs_pos
Definition: parse_tree_partitions.h:600
bool contextualize(Parse_context *pc) override
Definition: parse_tree_partitions.cc:475
Parse_tree_node super
Definition: parse_tree_partitions.h:595
PT_part_type_def *const part_type_def
Definition: parse_tree_partitions.h:597
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:607
const uint opt_num_parts
Definition: parse_tree_partitions.h:598
Node for the SUBRAPTITION BY HASH definition clause.
Definition: parse_tree_partitions.h:429
Item * hash
Definition: parse_tree_partitions.h:434
const uint opt_num_subparts
Definition: parse_tree_partitions.h:435
PT_sub_partition_by_hash(bool is_linear, const POS &hash_pos, Item *hash, uint opt_num_subparts)
Definition: parse_tree_partitions.h:438
PT_sub_partition super
Definition: parse_tree_partitions.h:430
const POS hash_pos
Definition: parse_tree_partitions.h:433
const bool is_linear
Definition: parse_tree_partitions.h:432
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:320
Node for the SUBRAPTITION BY KEY definition clause.
Definition: parse_tree_partitions.h:453
const bool is_linear
Definition: parse_tree_partitions.h:456
enum_key_algorithm key_algo
Definition: parse_tree_partitions.h:457
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:347
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:462
const uint opt_num_subparts
Definition: parse_tree_partitions.h:459
PT_sub_partition super
Definition: parse_tree_partitions.h:454
List< char > * field_names
Definition: parse_tree_partitions.h:458
Base class for all subpartitioning clause nodes.
Definition: parse_tree_partitions.h:422
Node for the SUBRAPTITION clause of CREATE/ALTER TABLE
Definition: parse_tree_partitions.h:263
const POS pos
Definition: parse_tree_partitions.h:264
const char * name
Definition: parse_tree_partitions.h:265
PT_subpartition(const POS &pos, const char *name, Mem_root_array< PT_partition_option * > *options)
Definition: parse_tree_partitions.h:269
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.cc:53
const Mem_root_array< PT_partition_option * > * options
Definition: parse_tree_partitions.h:266
Base class for parse tree nodes (excluding the Parse_tree_root hierarchy)
Definition: parse_tree_node_base.h:139
virtual bool contextualize(Context *pc)
Do all context-sensitive things and mark the node as contextualized.
Definition: parse_tree_node_base.h:187
Definition: partition_info.h:180
partition_element *const current_partition
Definition: partition_info.h:183
partition_info *const part_info
Definition: partition_info.h:182
partition_element *const curr_part_elem
Definition: partition_info.h:184
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:34
Definition: partition_element.h:108
const char * index_file_name
Definition: partition_element.h:121
char * part_comment
Definition: partition_element.h:119
handlerton * engine_type
Definition: partition_element.h:122
ha_rows part_min_rows
Definition: partition_element.h:115
ha_rows part_max_rows
Definition: partition_element.h:114
uint16 nodegroup_id
Definition: partition_element.h:124
const char * data_file_name
Definition: partition_element.h:120
const char * tablespace_name
Definition: partition_element.h:118
Definition: partition_info.h:209
Fido Client Authentication nullptr
Definition: fido_client_plugin.cc:222
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:78
This file includes constants used by all storage engines.
my_off_t ha_rows
Definition: my_base.h:1140
Some integer typedefs for easier portability.
uint16_t uint16
Definition: my_inttypes.h:65
Definition: options.cc:49
std::list< T, ut::allocator< T > > list
Specialization of list which uses ut_allocator.
Definition: ut0new.h:2879
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:289
partition_type
An enum and a struct to handle partitioning and subpartitioning.
Definition: partition_element.h:33
enum_key_algorithm
PARTITION BY KEY ALGORITHM=N Which algorithm to use for hashing the fields.
Definition: partition_info.h:174
Definition: mysql_lex_string.h:40
Definition: mysql_lex_string.h:35
Environment data for the contextualization phase.
Definition: parse_tree_node_base.h:121
THD *const thd
Current thread handler.
Definition: parse_tree_node_base.h:122
Parse context for partitioning-specific parse tree nodes.
Definition: parse_tree_partitions.h:55
const bool is_add_or_reorganize_partition
True for "ALTER TABLE ADD PARTITION" and "ALTER TABLE REORGANIZE PARTITION" statements,...
Definition: parse_tree_partitions.h:70
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:44
Partition_parse_context(THD *thd_arg, partition_info *part_info_arg, bool is_add_or_reorganize_partition)
Definition: parse_tree_partitions.h:61
Bison "location" class.
Definition: parse_location.h:43
unsigned int uint
Definition: uca9-dump.cc:75