MySQL  8.0.27
Source Code Documentation
parse_tree_partitions.h
Go to the documentation of this file.
1 /* Copyright (c) 2016, 2021, Oracle and/or its affiliates.
2 
3  This program is free software; you can redistribute it and/or modify
4  it under the terms of the GNU General Public License, version 2.0,
5  as published by the Free Software Foundation.
6 
7  This program is also distributed with certain software (including
8  but not limited to OpenSSL) that is licensed under separate terms,
9  as designated in a particular file or component or in included license
10  documentation. The authors of MySQL hereby grant you an additional
11  permission to link the program and your derivative works with the
12  separately licensed software that they have included with MySQL.
13 
14  This program is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  GNU General Public License, version 2.0, for more details.
18 
19  You should have received a copy of the GNU General Public License
20  along with this program; if not, write to the Free Software
21  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
22 
23 #ifndef PARSE_TREE_PARTITIONS_INCLUDED
24 #define PARSE_TREE_PARTITIONS_INCLUDED
25 
26 #include <sys/types.h> // TODO: replace with cstdint
27 
28 #include "lex_string.h"
29 #include "my_base.h"
30 #include "my_inttypes.h" // TODO: replace with cstdint
31 #include "sql/parse_location.h"
32 #include "sql/parse_tree_helpers.h"
34 #include "sql/partition_element.h"
35 #include "sql/partition_info.h"
36 
37 class Item;
38 class THD;
39 
40 template <class T>
41 class List;
42 
43 template <typename Element_type>
44 class Mem_root_array;
45 
46 /**
47  Parse context for partitioning-specific parse tree nodes.
48 
49  For internal use in the contextualization code.
50 
51  @ingroup ptn_partitioning
52 */
54  public Parser_partition_info {
59 
60  Partition_parse_context(THD *thd_arg, partition_info *part_info_arg,
62  : Partition_parse_context(thd_arg, part_info_arg, nullptr, nullptr,
64 
65  /**
66  True for "ALTER TABLE ADD PARTITION" and "ALTER TABLE REORGANIZE PARTITION"
67  statements, otherwise false.
68  */
70 };
71 
72 /**
73  Base class for all Partition_parse_context-dependent nodes
74 
75  @ingroup ptn_partitioning
76 */
78 
79 /**
80  Base class for all partition options
81 
82  @ingroup ptn_part_options
83 */
85 
86 /**
87  Node for the @SQL{COMMENT [=] @<string@>} partition option
88 
89  @ingroup ptn_part_options
90 */
93 
94  char *comment;
95 
96  public:
98 
100  if (super::contextualize(pc)) return true;
101 
103  return false;
104  }
105 };
106 
107 /**
108  Node for the @SQL{INDEX DIRECTORY [=] @<string@>} partition option
109 
110  @ingroup ptn_part_options
111 */
114 
115  const char *index_directory;
116 
117  public:
120 
122  if (super::contextualize(pc)) return true;
123 
125  return false;
126  }
127 };
128 
129 /**
130  Node for the @SQL{DATA DIRECTORY [=] @<string@>} partition option
131 
132  @ingroup ptn_part_options
133 */
136 
137  const char *data_directory;
138 
139  public:
142 
144  if (super::contextualize(pc)) return true;
145 
147  return false;
148  }
149 };
150 
151 /**
152  Node for the @SQL{MIN_ROWS [=] @<integer@>} partition option
153 
154  @ingroup ptn_part_options
155 */
158 
160 
161  public:
163 
165  if (super::contextualize(pc)) return true;
166 
168  return false;
169  }
170 };
171 
172 /**
173  Node for the @SQL{MAX_ROWS [=] @<integer@>} partition option
174 
175  @ingroup ptn_part_options
176 */
179 
181 
182  public:
184 
186  if (super::contextualize(pc)) return true;
187 
189  return false;
190  }
191 };
192 
193 /**
194  Node for the @SQL{NODEGROUP [=] @<integer@>} partition option
195 
196  @ingroup ptn_part_options
197 */
200 
202 
203  public:
205 
207  if (super::contextualize(pc)) return true;
208 
210  return false;
211  }
212 };
213 
214 /**
215  Node for the @SQL{[STORAGE] ENGINE [=] @<identifier|string@>} partition option
216 
217  @ingroup ptn_part_options
218 */
221 
222  public:
224 
226 
228  if (super::contextualize(pc)) return true;
229 
230  return resolve_engine(pc->thd, name, false, // partition can't be temporary
231  false, &pc->curr_part_elem->engine_type);
232  }
233 };
234 
235 /**
236  Node for the @SQL{TABLESPACE [=] @<identifier@>} partition option
237 
238  @ingroup ptn_part_options
239 */
242 
243  const char *tablespace;
244 
245  public:
246  explicit PT_partition_tablespace(const char *tablespace)
247  : tablespace(tablespace) {}
248 
250  if (super::contextualize(pc)) return true;
251 
253  return false;
254  }
255 };
256 
257 /**
258  Node for the @SQL{SUBRAPTITION} clause of @SQL{CREATE/ALTER TABLE}
259 
260  @ingroup ptn_partitioning
261 */
263  const POS pos;
264  const char *name;
266 
267  public:
268  PT_subpartition(const POS &pos, const char *name,
270  : pos(pos), name(name), options(options) {}
271 
272  bool contextualize(Partition_parse_context *pc) override;
273 };
274 
275 /**
276  Base class for partition value nodes: @SQL{MAX_VALUE} values or expressions
277 
278  @ingroup ptn_partitioning
279 */
281 
282 /**
283  Node for the @SQL{MAX_VALUE} partition value in @SQL{CREATE/ALTER TABLE}
284 
285  @ingroup ptn_partitioning
286 */
289 
290  const POS pos;
291 
292  public:
293  explicit PT_part_value_item_max(const POS &pos) : pos(pos) {}
294 
295  bool contextualize(Partition_parse_context *pc) override;
296 };
297 
298 /**
299  Node for the partitioning expression in @SQL{CREATE/ALTER TABLE}
300 
301  @ingroup ptn_partitioning
302 */
305 
306  const POS pos;
308 
309  public:
311  : pos(pos), expr(expr) {}
312 
313  bool contextualize(Partition_parse_context *pc) override;
314 };
315 
316 /**
317  Base class for @SQL{VALUES} partitioning clauses
318 
319  @ingroup ptn_partitioning
320 */
322 
323 /**
324  Node for a list of partitioning values in @SQL{VALUES} clauses
325 
326  @ingroup ptn_partitioning
327 */
330 
332  const POS paren_pos;
333 
334  public:
338 
339  bool contextualize(Partition_parse_context *pc) override;
340 };
341 
342 /**
343  Node for a list of partitioning values in the @SQL{VALUES IN} clause
344 
345  @ingroup ptn_partitioning
346 */
349 
350  const POS pos;
352 
353  public:
354  explicit PT_part_values_in_item(const POS &pos,
356  : pos(pos), item(item) {}
357 
358  bool contextualize(Partition_parse_context *pc) override;
359 };
360 
361 /**
362  Node for a list of partitioning values in the @SQL{VALUES IN} clause
363 
364  @ingroup ptn_partitioning
365 */
368 
369  const POS pos;
371 
372  public:
375  : pos(pos), list(list) {}
376 
377  bool contextualize(Partition_parse_context *pc) override;
378 };
379 
380 /**
381  Node for the @SQL{PARTITION} clause of CREATE/ALTER TABLE
382 
383  @ingroup ptn_partitioning
384 */
387 
388  const POS pos;
396 
397  public:
400  const POS &values_pos,
403  const POS &sub_partitions_pos)
404  : pos(pos),
405  name(name),
406  type(type),
412 
413  bool contextualize(Partition_parse_context *pc) override;
414 };
415 
416 /**
417  Base class for all subpartitioning clause nodes
418 
419  @ingroup ptn_partitioning
420 */
422 
423 /**
424  Node for the @SQL{SUBRAPTITION BY HASH} definition clause
425 
426  @ingroup ptn_partitioning
427 */
430 
431  const bool is_linear;
432  const POS hash_pos;
435 
436  public:
439  : is_linear(is_linear),
441  hash(hash),
443 
444  bool contextualize(Partition_parse_context *pc) override;
445 };
446 
447 /**
448  Node for the @SQL{SUBRAPTITION BY KEY} definition clause
449 
450  @ingroup ptn_partitioning
451 */
454 
455  const bool is_linear;
459 
460  public:
463  : is_linear(is_linear),
467 
468  bool contextualize(Partition_parse_context *pc) override;
469 };
470 
472  protected:
474 
476  Item **item);
477 };
478 
479 /**
480  Node for the @SQL{PARTITION BY [LINEAR] KEY} type clause
481 
482  @ingroup ptn_partitioning
483 */
486 
487  const bool is_linear;
490 
491  public:
495 
496  bool contextualize(Partition_parse_context *pc) override;
497 };
498 
499 /**
500  Node for the @SQL{PARTITION BY [LINEAR] HASH} type clause
501 
502  @ingroup ptn_partitioning
503 */
506 
507  const bool is_linear;
508  const POS expr_pos;
510 
511  public:
514 
515  bool contextualize(Partition_parse_context *pc) override;
516 };
517 
518 /**
519  Node for the @SQL{PARTITION BY RANGE (@<expression@>) } type clause
520 
521  @ingroup ptn_partitioning
522 */
525 
526  const POS expr_pos;
528 
529  public:
531  : expr_pos(expr_pos), expr(expr) {}
532 
533  bool contextualize(Partition_parse_context *pc) override;
534 };
535 
536 /**
537  Node for the @SQL{PARTITION BY RANGE COLUMNS (@<ident list@>) } type clause
538 
539  @ingroup ptn_partitioning
540 */
543 
545 
546  public:
548  : columns(columns) {}
549 
550  bool contextualize(Partition_parse_context *pc) override;
551 };
552 
553 /**
554  Node for the @SQL{PARTITION BY LIST (@<expression@>) } type clause
555 
556  @ingroup ptn_partitioning
557 */
560 
561  const POS expr_pos;
563 
564  public:
566  : expr_pos(expr_pos), expr(expr) {}
567 
568  bool contextualize(Partition_parse_context *pc) override;
569 };
570 
571 /**
572  Node for the @SQL{PARTITION BY LIST COLUMNS (@<ident list@>) } type clause
573 
574  @ingroup ptn_partitioning
575 */
578 
580 
581  public:
583  : columns(columns) {}
584 
585  bool contextualize(Partition_parse_context *pc) override;
586 };
587 
588 /**
589  Node for the @SQL{PARTITION} definition clause
590 
591  @ingroup ptn_partitioning
592 */
595 
601 
602  public:
604 
605  public:
613  part_defs(part_defs) {}
614 
615  bool contextualize(Parse_context *pc) override;
616 };
617 
618 #endif /* PARSE_TREE_PARTITIONS_INCLUDED */
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:802
Definition: sql_list.h:431
A typesafe replacement for DYNAMIC_ARRAY.
Definition: mem_root_array.h:418
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:199
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:413
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:398
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:458
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:447
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:436
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:425
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:381
bool set_part_field_list(Partition_parse_context *pc, List< char > *list)
Definition: parse_tree_partitions.cc:369
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:128
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:160
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:185
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 COMMENT [=] <string> partition option.
Definition: parse_tree_partitions.h:91
PT_partition_comment(char *comment)
Definition: parse_tree_partitions.h:97
PT_partition_option super
Definition: parse_tree_partitions.h:92
char * comment
Definition: parse_tree_partitions.h:94
bool contextualize(Partition_parse_context *pc) override
Definition: parse_tree_partitions.h:99
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:468
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:317
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:344
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:102
virtual bool contextualize(Context *pc)
Do all context-sensitive things and mark the node as contextualized.
Definition: parse_tree_node_base.h:150
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_class.h:821
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
Dialog Client Authentication nullptr
Definition: dialog.cc:352
char * pos
Definition: do_ctype.cc:76
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:1138
Some integer typedefs for easier portability.
uint16_t uint16
Definition: my_inttypes.h:64
Definition: options.cc:45
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:392
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:90
THD *const thd
Current thread handler.
Definition: parse_tree_node_base.h:91
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