MySQL 9.2.0
Source Code Documentation
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
table_impl.h
Go to the documentation of this file.
1/* Copyright (c) 2014, 2024, 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 designed to work 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 either included with
13 the program or referenced in the documentation.
14
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License, version 2.0, for more details.
19
20 You should have received a copy of the GNU General Public License
21 along with this program; if not, write to the Free Software
22 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
23
24#ifndef DD__TABLE_IMPL_INCLUDED
25#define DD__TABLE_IMPL_INCLUDED
26
27#include <sys/types.h>
28#include <memory>
29#include <new>
30#include <string>
31
32#include "my_inttypes.h"
33#include "mysql_version.h" // MYSQL_VERSION_ID
36#include "sql/dd/impl/types/abstract_table_impl.h" // dd::Abstract_table_impl
39#include "sql/dd/object_id.h"
40#include "sql/dd/sdi_fwd.h"
41#include "sql/dd/string_type.h"
43#include "sql/dd/types/check_constraint.h" // dd::Check_constraint
44#include "sql/dd/types/foreign_key.h" // dd::Foreign_key
45#include "sql/dd/types/index.h" // dd::Index
46#include "sql/dd/types/partition.h" // dd::Partition
47#include "sql/dd/types/table.h" // dd:Table
48#include "sql/dd/types/trigger.h" // dd::Trigger
49#include "sql/strfunc.h"
50
51namespace dd {
52
53///////////////////////////////////////////////////////////////////////////
54
55class Column;
56class Foreign_key;
57class Index;
58class Object_table;
59class Open_dictionary_tables_ctx;
60class Partition;
61class Properties;
62class Sdi_rcontext;
63class Sdi_wcontext;
64class Trigger_impl;
65class Weak_object;
66class Object_table;
67
68class Table_impl : public Abstract_table_impl, virtual public Table {
69 public:
70 Table_impl();
71
72 ~Table_impl() override;
73
74 public:
75 /////////////////////////////////////////////////////////////////////////
76 // enum_table_type.
77 /////////////////////////////////////////////////////////////////////////
78
80
81 public:
83
84 bool validate() const override;
85
87
89
90 bool drop_children(Open_dictionary_tables_ctx *otx) const override;
91
92 bool restore_attributes(const Raw_record &r) override;
93
94 bool store_attributes(Raw_record *r) override;
95
96 void serialize(Sdi_wcontext *wctx, Sdi_writer *w) const override;
97
98 bool deserialize(Sdi_rcontext *rctx, const RJ_Value &val) override;
99
100 void debug_print(String_type &outb) const override;
101
102 private:
103 /**
104 Store the trigger object in DD table.
105
106 @param otx current Open_dictionary_tables_ctx
107
108 @returns
109 false on success.
110 true on failure.
111 */
113
114 public:
115 /////////////////////////////////////////////////////////////////////////
116 // is_temporary.
117 /////////////////////////////////////////////////////////////////////////
118
119 bool is_temporary() const override { return m_is_temporary; }
120 void set_is_temporary(bool is_temporary) override {
122 }
123
124 /////////////////////////////////////////////////////////////////////////
125 // collation.
126 /////////////////////////////////////////////////////////////////////////
127
128 Object_id collation_id() const override { return m_collation_id; }
129
132 }
133
134 /////////////////////////////////////////////////////////////////////////
135 // tablespace.
136 /////////////////////////////////////////////////////////////////////////
137
138 Object_id tablespace_id() const override { return m_tablespace_id; }
139
142 }
143
144 bool is_explicit_tablespace() const override {
145 bool is_explicit = false;
146 if (options().exists("explicit_tablespace"))
147 options().get("explicit_tablespace", &is_explicit);
148 return is_explicit;
149 }
150
151 /////////////////////////////////////////////////////////////////////////
152 // engine.
153 /////////////////////////////////////////////////////////////////////////
154
155 const String_type &engine() const override { return m_engine; }
156
157 void set_engine(const String_type &engine) override { m_engine = engine; }
158
159 /////////////////////////////////////////////////////////////////////////
160 // row_format
161 /////////////////////////////////////////////////////////////////////////
162
163 enum_row_format row_format() const override { return m_row_format; }
164
167 }
168
169 /////////////////////////////////////////////////////////////////////////
170 // comment
171 /////////////////////////////////////////////////////////////////////////
172
173 const String_type &comment() const override { return m_comment; }
174
175 void set_comment(const String_type &comment) override { m_comment = comment; }
176
177 /////////////////////////////////////////////////////////////////////////
178 // last_checked_for_upgrade_version_id
179 /////////////////////////////////////////////////////////////////////////
182 }
183
186 }
187
188 /////////////////////////////////////////////////////////////////////////
189 // se_private_data.
190 /////////////////////////////////////////////////////////////////////////
191
192 const Properties &se_private_data() const override {
193 return m_se_private_data;
194 }
195
197
198 bool set_se_private_data(const String_type &se_private_data_raw) override {
199 return m_se_private_data.insert_values(se_private_data_raw);
200 }
201
204 }
205
206 /////////////////////////////////////////////////////////////////////////
207 // se_private_id.
208 /////////////////////////////////////////////////////////////////////////
209
210 Object_id se_private_id() const override { return m_se_private_id; }
211
214 }
215
216 /////////////////////////////////////////////////////////////////////////
217 // Storage engine attributes
218 /////////////////////////////////////////////////////////////////////////
219
220 LEX_CSTRING engine_attribute() const override {
222 }
223
225 m_engine_attribute.assign(a.str, a.length);
226 }
227
230 }
231
234 }
235
236 /////////////////////////////////////////////////////////////////////////
237 // Partition type
238 /////////////////////////////////////////////////////////////////////////
239
241 return m_partition_type;
242 }
243
246 }
247
248 /////////////////////////////////////////////////////////////////////////
249 // default_partitioning
250 /////////////////////////////////////////////////////////////////////////
251
254 }
255
259 }
260
261 /////////////////////////////////////////////////////////////////////////
262 // partition_expression
263 /////////////////////////////////////////////////////////////////////////
264
265 const String_type &partition_expression() const override {
267 }
268
270 const String_type &partition_expression) override {
272 }
273
274 /////////////////////////////////////////////////////////////////////////
275 // partition_expression_utf8
276 /////////////////////////////////////////////////////////////////////////
277
278 const String_type &partition_expression_utf8() const override {
280 }
281
283 const String_type &partition_expression_utf8) override {
285 }
286
287 /////////////////////////////////////////////////////////////////////////
288 // subpartition_type
289 /////////////////////////////////////////////////////////////////////////
290
292 return m_subpartition_type;
293 }
294
298 }
299
300 /////////////////////////////////////////////////////////////////////////
301 // default_subpartitioning
302 /////////////////////////////////////////////////////////////////////////
303
306 }
307
311 }
312
313 /////////////////////////////////////////////////////////////////////////
314 // subpartition_expression
315 /////////////////////////////////////////////////////////////////////////
316
317 const String_type &subpartition_expression() const override {
319 }
320
322 const String_type &subpartition_expression) override {
324 }
325
326 /////////////////////////////////////////////////////////////////////////
327 // subpartition_expression_utf8
328 /////////////////////////////////////////////////////////////////////////
329
332 }
333
337 }
338
339 /////////////////////////////////////////////////////////////////////////
340 // Index collection.
341 /////////////////////////////////////////////////////////////////////////
342
343 Index *add_index() override;
344
345 Index *add_first_index() override;
346
347 const Index_collection &indexes() const override { return m_indexes; }
348
349 Index_collection *indexes() override { return &m_indexes; }
350
351 const Index *get_index(Object_id index_id) const {
352 return const_cast<Table_impl *>(this)->get_index(index_id);
353 }
354
355 Index *get_index(Object_id index_id);
356
357 /////////////////////////////////////////////////////////////////////////
358 // Foreign key collection.
359 /////////////////////////////////////////////////////////////////////////
360
361 Foreign_key *add_foreign_key() override;
362
363 const Foreign_key_collection &foreign_keys() const override {
364 return m_foreign_keys;
365 }
366
368
369 /////////////////////////////////////////////////////////////////////////
370 // Foreign key parent collection.
371 /////////////////////////////////////////////////////////////////////////
372
374
375 private:
377
378 public:
379 bool reload_foreign_key_parents(THD *thd) override;
380
383 }
384
385 /////////////////////////////////////////////////////////////////////////
386 // Partition collection.
387 /////////////////////////////////////////////////////////////////////////
388
389 Partition *add_partition() override;
390
391 const Partition_collection &partitions() const override {
392 return m_partitions;
393 }
394
396
397 const Partition_leaf_vector &leaf_partitions() const override {
398 return m_leaf_partitions;
399 }
400
402 return &m_leaf_partitions;
403 }
404
405 Partition *get_leaf_partition(const std::string &part_name) override;
406
408 const std::string &part_name) const override;
409
410 // non-virtual
412
413 const Partition *get_partition(Object_id partition_id) const {
414 return const_cast<Table_impl *>(this)->get_partition(partition_id);
415 }
416
417 Partition *get_partition(Object_id partition_id);
418
420
421 // Fix "inherits ... via dominance" warnings
423 const Entity_object_impl *impl() const override {
425 }
426 Object_id id() const override { return Entity_object_impl::id(); }
427 bool is_persistent() const override {
429 }
430 const String_type &name() const override {
432 }
433 void set_name(const String_type &name) override {
435 }
436 Object_id schema_id() const override {
438 }
441 }
442 uint mysql_version_id() const override {
444 }
445 const Properties &options() const override {
447 }
449 bool set_options(const Properties &options) override {
451 }
452 bool set_options(const String_type &options_raw) override {
453 return Abstract_table_impl::set_options(options_raw);
454 }
455 ulonglong created(bool convert_time) const override {
456 return Abstract_table_impl::created(convert_time);
457 }
460 }
461 ulonglong last_altered(bool convert_time) const override {
462 return Abstract_table_impl::last_altered(convert_time);
463 }
466 }
468 bool drop_column(const String_type &name) override {
470 }
471 const Column_collection &columns() const override {
473 }
476 }
477 const Column *get_column(Object_id column_id) const {
478 return Abstract_table_impl::get_column(column_id);
479 }
481 return Abstract_table_impl::get_column(column_id);
482 }
483 const Column *get_column(const String_type &name) const override {
485 }
488 }
489 bool update_aux_key(Aux_key *key) const override {
491 }
492 enum_hidden_type hidden() const override {
494 }
497 }
498
499 /////////////////////////////////////////////////////////////////////////
500 // Trigger collection.
501 /////////////////////////////////////////////////////////////////////////
502
503 bool has_trigger() const override { return (m_triggers.size() > 0); }
504
505 const Trigger_collection &triggers() const override { return m_triggers; }
506
507 Trigger_collection *triggers() override { return &m_triggers; }
508
509 void copy_triggers(const Table *tab_obj) override;
510
512 Trigger::enum_event_type et) override;
513
514 const Trigger *get_trigger(const char *name) const override;
515
516 Trigger *add_trigger_following(const Trigger *trigger,
518 Trigger::enum_event_type et) override;
519
520 Trigger *add_trigger_preceding(const Trigger *trigger,
522 Trigger::enum_event_type et) override;
523
524 void drop_trigger(const Trigger *trigger) override;
525
526 void drop_all_triggers() override;
527
528 private:
530 Trigger::enum_event_type et) const;
531
534
536
537 public:
538 /////////////////////////////////////////////////////////////////////////
539 // Check constraints.
540 /////////////////////////////////////////////////////////////////////////
541
543
545 return m_check_constraints;
546 }
547
549 return &m_check_constraints;
550 }
551
552 private:
553 // Fields.
554
556
559
560 // Setting this to 0 means that every table will be checked by CHECK
561 // TABLE FOR UPGRADE once, even if it was created in this version.
562 // If we instead initialize to MYSQL_VERSION_ID, it will only run
563 // CHECK TABLE FOR UPGRADE after a real upgrade.
566
567 // SE-specific json attributes
570
573
574 // - Partitioning related fields.
575
580
585
586 // References to tightly-coupled objects.
587
595
596 // References to other objects.
597
600
601 Table_impl(const Table_impl &src);
602 Table_impl *clone() const override { return new Table_impl(*this); }
603
604 // N.B.: returning dd::Table from this function might confuse MSVC
605 // compiler thanks to diamond inheritance.
607 /*
608 TODO: In future we might want to save even more memory and use separate
609 placeholder class implementing dd::Table interface instead of
610 Table_impl. Instances of such class can be several times smaller
611 than an empty Table_impl. It might make sense to do the same for
612 for some of other types as well.
613 */
614 Table_impl *placeholder = new Table_impl();
615 placeholder->set_id(id());
616 placeholder->set_schema_id(schema_id());
617 placeholder->set_name(name());
618 placeholder->set_engine(engine());
619 placeholder->set_se_private_id(se_private_id());
620 return placeholder;
621 }
622};
623
624///////////////////////////////////////////////////////////////////////////
625
626} // namespace dd
627
628#endif // DD__TABLE_IMPL_INCLUDED
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:36
Definition: abstract_table_impl.h:58
void set_created(ulonglong created) override
Definition: abstract_table_impl.h:132
Object_id schema_id() const override
Definition: abstract_table_impl.h:89
void set_hidden(enum_hidden_type hidden) override
Definition: abstract_table_impl.h:153
ulonglong last_altered(bool convert_time) const override
Definition: abstract_table_impl.h:138
void set_schema_id(Object_id schema_id) override
Definition: abstract_table_impl.h:91
void set_last_altered(ulonglong last_altered) override
Definition: abstract_table_impl.h:143
Column * add_column() override
Definition: abstract_table_impl.cc:270
const Column_collection & columns() const override
Definition: abstract_table_impl.h:162
const Properties & options() const override
Definition: abstract_table_impl.h:112
uint mysql_version_id() const override
Definition: abstract_table_impl.h:100
bool drop_column(const String_type &name) override
Definition: abstract_table_impl.cc:276
bool set_options(const Properties &options) override
Definition: abstract_table_impl.h:116
const Column * get_column(Object_id column_id) const
Definition: abstract_table_impl.cc:300
enum_hidden_type hidden() const override
Definition: abstract_table_impl.h:151
ulonglong created(bool convert_time) const override
Definition: abstract_table_impl.h:128
enum_hidden_type
Enumeration type which indicates whether the table is hidden, and if yes then which type of hidden ta...
Definition: abstract_table.h:103
Definition: check_constraint.h:42
Definition: collection.h:44
size_t size() const
Definition: collection.h:229
Definition: column.h:88
Definition: entity_object_impl.h:44
void set_name(const String_type &name) override
Definition: entity_object_impl.h:62
void set_id(Object_id id)
Definition: entity_object_impl.h:51
Object_id id() const override
The unique dictionary object id.
Definition: entity_object_impl.h:49
const String_type & name() const override
Definition: entity_object_impl.h:60
Entity_object_impl * impl() override
Definition: entity_object_impl.h:68
bool is_persistent() const override
Is dictionary object persistent in dictionary tables ?
Definition: entity_object_impl.h:57
Definition: foreign_key.h:181
Definition: foreign_key.h:47
Definition: index.h:51
Auxiliary class for opening dictionary tables.
Definition: transaction_impl.h:77
Definition: partition.h:51
The Properties_impl class implements the Properties interface.
Definition: properties_impl.h:77
bool insert_values(const Properties &properties) override
Insert key/value pairs from a different property object.
Definition: properties_impl.cc:104
The Properties class defines an interface for storing key=value pairs, where both key and value may b...
Definition: properties.h:74
virtual bool get(const String_type &key, String_type *value) const =0
Get the string value for a given key.
Definition: raw_record.h:46
Opaque context which keeps reusable resoureces needed during deserialization.
Definition: sdi.cc:231
Opaque context which keeps reusable resources needed during serialization.
Definition: sdi.cc:129
Definition: object_keys.h:219
Definition: table_impl.h:68
void set_created(ulonglong created) override
Definition: table_impl.h:458
bool load_foreign_key_parents(Open_dictionary_tables_ctx *otx)
Definition: table_impl.cc:131
String_type m_partition_expression
Definition: table_impl.h:577
void set_schema_id(Object_id schema_id) override
Definition: table_impl.h:439
const Partition_leaf_vector & leaf_partitions() const override
Definition: table_impl.h:397
Index * add_first_index() override
Definition: table_impl.cc:731
enum_table_type type() const override
Definition: table_impl.h:79
ulonglong created(bool convert_time) const override
Definition: table_impl.h:455
bool drop_column(const String_type &name) override
Definition: table_impl.h:468
Entity_object_impl * impl() override
Definition: table_impl.h:422
enum_row_format m_row_format
Definition: table_impl.h:571
Partition * get_leaf_partition(const std::string &part_name) override
Definition: table_impl.cc:789
enum_subpartition_type m_subpartition_type
Definition: table_impl.h:581
Trigger * add_trigger(Trigger::enum_action_timing at, Trigger::enum_event_type et) override
Add new trigger to the table.
Definition: table_impl.cc:845
bool restore_attributes(const Raw_record &r) override
Definition: table_impl.cc:400
bool set_se_private_data(const Properties &se_private_data) override
Definition: table_impl.h:202
Foreign_key_collection m_foreign_keys
Definition: table_impl.h:589
Properties & se_private_data() override
Definition: table_impl.h:196
void set_comment(const String_type &comment) override
Definition: table_impl.h:175
uint m_last_checked_for_upgrade_version_id
Definition: table_impl.h:564
void drop_all_triggers() override
Drop all the trigger on this dd::Table object.
Definition: table_impl.cc:975
bool restore_children(Open_dictionary_tables_ctx *otx) override
Definition: table_impl.cc:253
void set_partition_expression_utf8(const String_type &partition_expression_utf8) override
Definition: table_impl.h:282
void set_last_altered(ulonglong last_altered) override
Definition: table_impl.h:464
Trigger_collection * triggers() override
Get non-const pointer to Trigger_collection.
Definition: table_impl.h:507
void set_secondary_engine_attribute(LEX_CSTRING a) override
Definition: table_impl.h:232
void mark_as_checked_for_upgrade() override
Definition: table_impl.h:184
Index_collection * indexes() override
Definition: table_impl.h:349
bool store_triggers(Open_dictionary_tables_ctx *otx)
Store the trigger object in DD table.
Definition: table_impl.cc:297
bool set_se_private_data(const String_type &se_private_data_raw) override
Definition: table_impl.h:198
String_type m_subpartition_expression_utf8
Definition: table_impl.h:583
Index * add_index() override
Definition: table_impl.cc:723
void set_partition_type(enum_partition_type partition_type) override
Definition: table_impl.h:244
bool is_temporary() const override
Definition: table_impl.h:119
void debug_print(String_type &outb) const override
Definition: table_impl.cc:637
const Trigger * get_trigger(const char *name) const override
Get dd::Trigger object for the given trigger name.
Definition: table_impl.cc:860
String_type m_comment
Definition: table_impl.h:558
LEX_CSTRING engine_attribute() const override
Definition: table_impl.h:220
const Entity_object_impl * impl() const override
Definition: table_impl.h:423
bool is_explicit_tablespace() const override
Definition: table_impl.h:144
const String_type & comment() const override
Definition: table_impl.h:173
Object_id m_se_private_id
Definition: table_impl.h:555
enum_partition_type partition_type() const override
Definition: table_impl.h:240
String_type m_subpartition_expression
Definition: table_impl.h:582
bool store_children(Open_dictionary_tables_ctx *otx) override
Definition: table_impl.cc:359
bool set_options(const String_type &options_raw) override
Definition: table_impl.h:452
Trigger_impl * create_trigger()
Definition: table_impl.cc:832
Object_id schema_id() const override
Definition: table_impl.h:436
void set_default_partitioning(enum_default_partitioning default_partitioning) override
Definition: table_impl.h:256
Object_id m_tablespace_id
Definition: table_impl.h:599
bool validate() const override
Definition: table_impl.cc:111
void reorder_action_order(Trigger::enum_action_timing at, Trigger::enum_event_type et)
Definition: table_impl.cc:821
Column * get_column(const String_type &name)
Definition: table_impl.h:486
const Properties & se_private_data() const override
Definition: table_impl.h:192
Object_id collation_id() const override
Definition: table_impl.h:128
uint mysql_version_id() const override
Definition: table_impl.h:442
void set_name(const String_type &name) override
Definition: table_impl.h:433
Table_impl()
Definition: table_impl.cc:90
Object_id m_collation_id
Definition: table_impl.h:598
Object_id se_private_id() const override
Definition: table_impl.h:210
void set_hidden(enum_hidden_type hidden) override
Definition: table_impl.h:495
const String_type & engine() const override
Definition: table_impl.h:155
const Partition_collection & partitions() const override
Definition: table_impl.h:391
const String_type & partition_expression_utf8() const override
Definition: table_impl.h:278
Check_constraint_collection m_check_constraints
Definition: table_impl.h:594
Table_impl * clone() const override
Allocate a new object graph and invoke the copy constructor for each object.
Definition: table_impl.h:602
const String_type & partition_expression() const override
Definition: table_impl.h:265
Partition_collection m_partitions
Definition: table_impl.h:591
String_type m_partition_expression_utf8
Definition: table_impl.h:578
void set_collation_id(Object_id collation_id) override
Definition: table_impl.h:130
void set_subpartition_expression_utf8(const String_type &subpartition_expression_utf8) override
Definition: table_impl.h:334
Object_id id() const override
The unique dictionary object id.
Definition: table_impl.h:426
void set_subpartition_type(enum_subpartition_type subpartition_type) override
Definition: table_impl.h:295
void set_row_format(enum_row_format row_format) override
Definition: table_impl.h:165
Column * add_column() override
Definition: table_impl.h:467
const Index_collection & indexes() const override
Definition: table_impl.h:347
Object_id tablespace_id() const override
Definition: table_impl.h:138
Partition * add_partition() override
Definition: table_impl.cc:771
void set_engine(const String_type &engine) override
Definition: table_impl.h:157
void set_tablespace_id(Object_id tablespace_id) override
Definition: table_impl.h:140
bool store_attributes(Raw_record *r) override
Definition: table_impl.cc:467
bool has_trigger() const override
Check if table has any triggers.
Definition: table_impl.h:503
const Foreign_key_parent_collection & foreign_key_parents() const override
Definition: table_impl.h:381
Properties_impl m_se_private_data
Definition: table_impl.h:565
ulonglong last_altered(bool convert_time) const override
Definition: table_impl.h:461
void copy_triggers(const Table *tab_obj) override
Copy all the triggers from another dd::Table object.
Definition: table_impl.cc:926
Trigger * add_trigger_following(const Trigger *trigger, Trigger::enum_action_timing at, Trigger::enum_event_type et) override
Add new trigger just after the trigger specified in argument.
Definition: table_impl.cc:876
Foreign_key_parent_collection m_foreign_key_parents
Definition: table_impl.h:590
enum_partition_type m_partition_type
Definition: table_impl.h:576
enum_default_partitioning m_default_subpartitioning
Definition: table_impl.h:584
dd::String_type m_engine_attribute
Definition: table_impl.h:568
bool m_is_temporary
Definition: table_impl.h:572
String_type m_engine
Definition: table_impl.h:557
dd::String_type m_secondary_engine_attribute
Definition: table_impl.h:569
enum_default_partitioning default_subpartitioning() const override
Definition: table_impl.h:304
bool deserialize(Sdi_rcontext *rctx, const RJ_Value &val) override
Re-establishes the state of *this by reading sdi information from the rapidjson DOM subobject provide...
Definition: table_impl.cc:589
const Column_collection & columns() const override
Definition: table_impl.h:471
void add_leaf_partition(Partition *p)
Definition: table_impl.h:411
void set_engine_attribute(LEX_CSTRING a) override
Definition: table_impl.h:224
Properties & options() override
Definition: table_impl.h:448
const String_type & subpartition_expression() const override
Definition: table_impl.h:317
const Trigger_collection & triggers() const override
Get const reference to Trigger_collection.
Definition: table_impl.h:505
Partition_leaf_vector * leaf_partitions() override
Definition: table_impl.h:401
Trigger_collection m_triggers
Definition: table_impl.h:593
void set_default_subpartitioning(enum_default_partitioning default_subpartitioning) override
Definition: table_impl.h:308
Trigger * add_trigger_preceding(const Trigger *trigger, Trigger::enum_action_timing at, Trigger::enum_event_type et) override
Add new trigger just before the trigger specified in argument.
Definition: table_impl.cc:903
Index_collection m_indexes
Definition: table_impl.h:588
const String_type & subpartition_expression_utf8() const override
Definition: table_impl.h:330
const Column * get_column(Object_id column_id) const
Definition: table_impl.h:477
Partition_collection * partitions() override
Definition: table_impl.h:395
const Foreign_key_collection & foreign_keys() const override
Definition: table_impl.h:363
LEX_CSTRING secondary_engine_attribute() const override
Definition: table_impl.h:228
enum_subpartition_type subpartition_type() const override
Definition: table_impl.h:291
Foreign_key * add_foreign_key() override
Definition: table_impl.cc:751
const Properties & options() const override
Definition: table_impl.h:445
const Index * get_index(Object_id index_id) const
Definition: table_impl.h:351
Foreign_key_collection * foreign_keys() override
Definition: table_impl.h:367
Table_impl * clone_dropped_object_placeholder() const override
Allocate a new object which can serve as a placeholder for the original object in the Dictionary_clie...
Definition: table_impl.h:606
Column_collection * columns() override
Definition: table_impl.h:474
virtual Foreign_key_parent * add_foreign_key_parent()
Definition: table_impl.cc:761
uint last_checked_for_upgrade_version_id() const override
Definition: table_impl.h:180
void set_partition_expression(const String_type &partition_expression) override
Definition: table_impl.h:269
void set_se_private_id(Object_id se_private_id) override
Definition: table_impl.h:212
Column * get_column(Object_id column_id)
Definition: table_impl.h:480
Check_constraint * add_check_constraint() override
Definition: table_impl.cc:994
enum_hidden_type hidden() const override
Definition: table_impl.h:492
~Table_impl() override
Definition: table_impl.cc:107
const Partition * get_partition(Object_id partition_id) const
Definition: table_impl.h:413
enum_default_partitioning default_partitioning() const override
Definition: table_impl.h:252
uint get_max_action_order(Trigger::enum_action_timing at, Trigger::enum_event_type et) const
Definition: table_impl.cc:809
Partition_leaf_vector m_leaf_partitions
Definition: table_impl.h:592
bool drop_children(Open_dictionary_tables_ctx *otx) const override
Definition: table_impl.cc:378
bool set_options(const Properties &options) override
Definition: table_impl.h:449
static void register_tables(Open_dictionary_tables_ctx *otx)
Definition: table_impl.cc:1022
bool update_aux_key(Aux_key *key) const override
Definition: table_impl.h:489
enum_default_partitioning m_default_partitioning
Definition: table_impl.h:579
enum_row_format row_format() const override
Definition: table_impl.h:163
Check_constraint_collection * check_constraints() override
Definition: table_impl.h:548
void set_is_temporary(bool is_temporary) override
Definition: table_impl.h:120
const Check_constraint_collection & check_constraints() const override
Definition: table_impl.h:544
const String_type & name() const override
Definition: table_impl.h:430
bool is_persistent() const override
Is dictionary object persistent in dictionary tables ?
Definition: table_impl.h:427
bool reload_foreign_key_parents(THD *thd) override
Definition: table_impl.cc:231
void set_subpartition_expression(const String_type &subpartition_expression) override
Definition: table_impl.h:321
void serialize(Sdi_wcontext *wctx, Sdi_writer *w) const override
Converts *this into json.
Definition: table_impl.cc:547
void drop_trigger(const Trigger *trigger) override
Drop the given trigger object.
Definition: table_impl.cc:979
const Column * get_column(const String_type &name) const override
Definition: table_impl.h:483
Definition: table.h:47
std::vector< Foreign_key_parent * > Foreign_key_parent_collection
Definition: table.h:52
std::vector< Partition * > Partition_leaf_vector
Definition: table.h:65
enum_row_format
Definition: table.h:80
enum_partition_type
Definition: table.h:90
enum_subpartition_type
Definition: table.h:106
bool update_aux_key(Aux_key *key) const override
Definition: table.h:69
enum_default_partitioning
Definition: table.h:117
Definition: trigger_impl.h:54
Class representing a Trigger in DD framework.
Definition: trigger.h:54
enum_event_type
Definition: trigger.h:60
enum_action_timing
Definition: trigger.h:62
const char * p
Definition: ctype-mb.cc:1225
Some integer typedefs for easier portability.
unsigned long long int ulonglong
Definition: my_inttypes.h:56
#define MYSQL_VERSION_ID
Definition: mysql_version.h:15
The version of the current data dictionary table definitions.
Definition: dictionary_client.h:43
RJ_Writer Sdi_writer
Alias for the rapidjson Writer type to use in serialization.
Definition: sdi_fwd.h:64
unsigned long long Object_id
Definition: object_id.h:31
rapidjson::GenericValue< RJ_Encoding, RJ_Allocator > RJ_Value
Definition: sdi_fwd.h:49
Char_string_template< String_type_allocator > String_type
Definition: string_type.h:51
enum_table_type
Definition: abstract_table.h:53
Definition: options.cc:57
static int exists(node_address *name, node_list const *nodes, u_int with_uid)
Definition: node_list.cc:106
partition_type
An enum and a struct to handle partitioning and subpartitioning.
Definition: partition_element.h:33
const mysql_service_registry_t * r
Definition: pfs_example_plugin_employee.cc:86
required string key
Definition: replication_asynchronous_connection_failover.proto:60
This header provides Rapidjson Type Aliases.
MYSQL_LEX_CSTRING lex_cstring_handle(const STDSTRINGLIKE_TYPE &s)
Return a LEX_CSTRING handle to a std::string like (meaning something which has the c_str() and length...
Definition: strfunc.h:77
Definition: mysql_lex_string.h:40
const char * str
Definition: mysql_lex_string.h:41
size_t length
Definition: mysql_lex_string.h:42