MySQL 8.0.30
Source Code Documentation
table_impl.h
Go to the documentation of this file.
1/* Copyright (c) 2014, 2022, 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 DD__TABLE_IMPL_INCLUDED
24#define DD__TABLE_IMPL_INCLUDED
25
26#include <sys/types.h>
27#include <memory>
28#include <new>
29#include <string>
30
31#include "my_inttypes.h"
32#include "mysql_version.h" // MYSQL_VERSION_ID
35#include "sql/dd/impl/types/abstract_table_impl.h" // dd::Abstract_table_impl
38#include "sql/dd/object_id.h"
39#include "sql/dd/sdi_fwd.h"
40#include "sql/dd/string_type.h"
42#include "sql/dd/types/check_constraint.h" // dd::Check_constraint
43#include "sql/dd/types/foreign_key.h" // dd::Foreign_key
44#include "sql/dd/types/index.h" // dd::Index
45#include "sql/dd/types/partition.h" // dd::Partition
46#include "sql/dd/types/table.h" // dd:Table
47#include "sql/dd/types/trigger.h" // dd::Trigger
48#include "sql/strfunc.h"
49
50namespace dd {
51
52///////////////////////////////////////////////////////////////////////////
53
54class Column;
55class Foreign_key;
56class Index;
57class Object_table;
58class Open_dictionary_tables_ctx;
59class Partition;
60class Properties;
61class Sdi_rcontext;
62class Sdi_wcontext;
63class Trigger_impl;
64class Weak_object;
65class Object_table;
66
67class Table_impl : public Abstract_table_impl, virtual public Table {
68 public:
69 Table_impl();
70
71 ~Table_impl() override;
72
73 public:
74 /////////////////////////////////////////////////////////////////////////
75 // enum_table_type.
76 /////////////////////////////////////////////////////////////////////////
77
79
80 public:
82
83 bool validate() const override;
84
86
88
89 bool drop_children(Open_dictionary_tables_ctx *otx) const override;
90
91 bool restore_attributes(const Raw_record &r) override;
92
93 bool store_attributes(Raw_record *r) override;
94
95 void serialize(Sdi_wcontext *wctx, Sdi_writer *w) const override;
96
97 bool deserialize(Sdi_rcontext *rctx, const RJ_Value &val) override;
98
99 void debug_print(String_type &outb) const override;
100
101 private:
102 /**
103 Store the trigger object in DD table.
104
105 @param otx current Open_dictionary_tables_ctx
106
107 @returns
108 false on success.
109 true on failure.
110 */
112
113 public:
114 /////////////////////////////////////////////////////////////////////////
115 // is_temporary.
116 /////////////////////////////////////////////////////////////////////////
117
118 bool is_temporary() const override { return m_is_temporary; }
119 void set_is_temporary(bool is_temporary) override {
121 }
122
123 /////////////////////////////////////////////////////////////////////////
124 // collation.
125 /////////////////////////////////////////////////////////////////////////
126
127 Object_id collation_id() const override { return m_collation_id; }
128
131 }
132
133 /////////////////////////////////////////////////////////////////////////
134 // tablespace.
135 /////////////////////////////////////////////////////////////////////////
136
137 Object_id tablespace_id() const override { return m_tablespace_id; }
138
141 }
142
143 bool is_explicit_tablespace() const override {
144 bool is_explicit = false;
145 if (options().exists("explicit_tablespace"))
146 options().get("explicit_tablespace", &is_explicit);
147 return is_explicit;
148 }
149
150 /////////////////////////////////////////////////////////////////////////
151 // engine.
152 /////////////////////////////////////////////////////////////////////////
153
154 const String_type &engine() const override { return m_engine; }
155
156 void set_engine(const String_type &engine) override { m_engine = engine; }
157
158 /////////////////////////////////////////////////////////////////////////
159 // row_format
160 /////////////////////////////////////////////////////////////////////////
161
162 enum_row_format row_format() const override { return m_row_format; }
163
166 }
167
168 /////////////////////////////////////////////////////////////////////////
169 // comment
170 /////////////////////////////////////////////////////////////////////////
171
172 const String_type &comment() const override { return m_comment; }
173
174 void set_comment(const String_type &comment) override { m_comment = comment; }
175
176 /////////////////////////////////////////////////////////////////////////
177 // last_checked_for_upgrade_version_id
178 /////////////////////////////////////////////////////////////////////////
181 }
182
185 }
186
187 /////////////////////////////////////////////////////////////////////////
188 // se_private_data.
189 /////////////////////////////////////////////////////////////////////////
190
191 const Properties &se_private_data() const override {
192 return m_se_private_data;
193 }
194
196
197 bool set_se_private_data(const String_type &se_private_data_raw) override {
198 return m_se_private_data.insert_values(se_private_data_raw);
199 }
200
203 }
204
205 /////////////////////////////////////////////////////////////////////////
206 // se_private_id.
207 /////////////////////////////////////////////////////////////////////////
208
209 Object_id se_private_id() const override { return m_se_private_id; }
210
213 }
214
215 /////////////////////////////////////////////////////////////////////////
216 // Storage engine attributes
217 /////////////////////////////////////////////////////////////////////////
218
219 LEX_CSTRING engine_attribute() const override {
221 }
222
224 m_engine_attribute.assign(a.str, a.length);
225 }
226
229 }
230
233 }
234
235 /////////////////////////////////////////////////////////////////////////
236 // Partition type
237 /////////////////////////////////////////////////////////////////////////
238
240 return m_partition_type;
241 }
242
245 }
246
247 /////////////////////////////////////////////////////////////////////////
248 // default_partitioning
249 /////////////////////////////////////////////////////////////////////////
250
253 }
254
258 }
259
260 /////////////////////////////////////////////////////////////////////////
261 // partition_expression
262 /////////////////////////////////////////////////////////////////////////
263
264 const String_type &partition_expression() const override {
266 }
267
269 const String_type &partition_expression) override {
271 }
272
273 /////////////////////////////////////////////////////////////////////////
274 // partition_expression_utf8
275 /////////////////////////////////////////////////////////////////////////
276
277 const String_type &partition_expression_utf8() const override {
279 }
280
282 const String_type &partition_expression_utf8) override {
284 }
285
286 /////////////////////////////////////////////////////////////////////////
287 // subpartition_type
288 /////////////////////////////////////////////////////////////////////////
289
291 return m_subpartition_type;
292 }
293
297 }
298
299 /////////////////////////////////////////////////////////////////////////
300 // default_subpartitioning
301 /////////////////////////////////////////////////////////////////////////
302
305 }
306
310 }
311
312 /////////////////////////////////////////////////////////////////////////
313 // subpartition_expression
314 /////////////////////////////////////////////////////////////////////////
315
316 const String_type &subpartition_expression() const override {
318 }
319
321 const String_type &subpartition_expression) override {
323 }
324
325 /////////////////////////////////////////////////////////////////////////
326 // subpartition_expression_utf8
327 /////////////////////////////////////////////////////////////////////////
328
331 }
332
336 }
337
338 /////////////////////////////////////////////////////////////////////////
339 // Index collection.
340 /////////////////////////////////////////////////////////////////////////
341
342 Index *add_index() override;
343
344 Index *add_first_index() override;
345
346 const Index_collection &indexes() const override { return m_indexes; }
347
348 Index_collection *indexes() override { return &m_indexes; }
349
350 const Index *get_index(Object_id index_id) const {
351 return const_cast<Table_impl *>(this)->get_index(index_id);
352 }
353
354 Index *get_index(Object_id index_id);
355
356 /////////////////////////////////////////////////////////////////////////
357 // Foreign key collection.
358 /////////////////////////////////////////////////////////////////////////
359
360 Foreign_key *add_foreign_key() override;
361
362 const Foreign_key_collection &foreign_keys() const override {
363 return m_foreign_keys;
364 }
365
367
368 /////////////////////////////////////////////////////////////////////////
369 // Foreign key parent collection.
370 /////////////////////////////////////////////////////////////////////////
371
373
374 private:
376
377 public:
378 bool reload_foreign_key_parents(THD *thd) override;
379
382 }
383
384 /////////////////////////////////////////////////////////////////////////
385 // Partition collection.
386 /////////////////////////////////////////////////////////////////////////
387
388 Partition *add_partition() override;
389
390 const Partition_collection &partitions() const override {
391 return m_partitions;
392 }
393
395
396 const Partition_leaf_vector &leaf_partitions() const override {
397 return m_leaf_partitions;
398 }
399
401 return &m_leaf_partitions;
402 }
403
404 // non-virtual
406
407 const Partition *get_partition(Object_id partition_id) const {
408 return const_cast<Table_impl *>(this)->get_partition(partition_id);
409 }
410
411 Partition *get_partition(Object_id partition_id);
412
414
415 // Fix "inherits ... via dominance" warnings
417 const Entity_object_impl *impl() const override {
419 }
420 Object_id id() const override { return Entity_object_impl::id(); }
421 bool is_persistent() const override {
423 }
424 const String_type &name() const override {
426 }
427 void set_name(const String_type &name) override {
429 }
430 Object_id schema_id() const override {
432 }
435 }
436 uint mysql_version_id() const override {
438 }
439 const Properties &options() const override {
441 }
443 bool set_options(const Properties &options) override {
445 }
446 bool set_options(const String_type &options_raw) override {
447 return Abstract_table_impl::set_options(options_raw);
448 }
449 ulonglong created(bool convert_time) const override {
450 return Abstract_table_impl::created(convert_time);
451 }
454 }
455 ulonglong last_altered(bool convert_time) const override {
456 return Abstract_table_impl::last_altered(convert_time);
457 }
460 }
462 bool drop_column(const String_type &name) override {
464 }
465 const Column_collection &columns() const override {
467 }
470 }
471 const Column *get_column(Object_id column_id) const {
472 return Abstract_table_impl::get_column(column_id);
473 }
475 return Abstract_table_impl::get_column(column_id);
476 }
477 const Column *get_column(const String_type &name) const override {
479 }
482 }
483 bool update_aux_key(Aux_key *key) const override {
485 }
486 enum_hidden_type hidden() const override {
488 }
491 }
492
493 /////////////////////////////////////////////////////////////////////////
494 // Trigger collection.
495 /////////////////////////////////////////////////////////////////////////
496
497 bool has_trigger() const override { return (m_triggers.size() > 0); }
498
499 const Trigger_collection &triggers() const override { return m_triggers; }
500
501 Trigger_collection *triggers() override { return &m_triggers; }
502
503 void copy_triggers(const Table *tab_obj) override;
504
506 Trigger::enum_event_type et) override;
507
508 const Trigger *get_trigger(const char *name) const override;
509
510 Trigger *add_trigger_following(const Trigger *trigger,
512 Trigger::enum_event_type et) override;
513
514 Trigger *add_trigger_preceding(const Trigger *trigger,
516 Trigger::enum_event_type et) override;
517
518 void drop_trigger(const Trigger *trigger) override;
519
520 void drop_all_triggers() override;
521
522 private:
524 Trigger::enum_event_type et) const;
525
528
530
531 public:
532 /////////////////////////////////////////////////////////////////////////
533 // Check constraints.
534 /////////////////////////////////////////////////////////////////////////
535
537
539 return m_check_constraints;
540 }
541
543 return &m_check_constraints;
544 }
545
546 private:
547 // Fields.
548
550
553
554 // Setting this to 0 means that every table will be checked by CHECK
555 // TABLE FOR UPGRADE once, even if it was created in this version.
556 // If we instead initialize to MYSQL_VERSION_ID, it will only run
557 // CHECK TABLE FOR UPGRADE after a real upgrade.
560
561 // SE-specific json attributes
564
567
568 // - Partitioning related fields.
569
574
579
580 // References to tightly-coupled objects.
581
589
590 // References to other objects.
591
594
595 Table_impl(const Table_impl &src);
596 Table_impl *clone() const override { return new Table_impl(*this); }
597
598 // N.B.: returning dd::Table from this function might confuse MSVC
599 // compiler thanks to diamond inheritance.
601 /*
602 TODO: In future we might want to save even more memory and use separate
603 placeholder class implementing dd::Table interface instead of
604 Table_impl. Instances of such class can be several times smaller
605 than an empty Table_impl. It might make sense to do the same for
606 for some of other types as well.
607 */
608 Table_impl *placeholder = new Table_impl();
609 placeholder->set_id(id());
610 placeholder->set_schema_id(schema_id());
611 placeholder->set_name(name());
612 placeholder->set_engine(engine());
613 placeholder->set_se_private_id(se_private_id());
614 return placeholder;
615 }
616};
617
618///////////////////////////////////////////////////////////////////////////
619
620} // namespace dd
621
622#endif // DD__TABLE_IMPL_INCLUDED
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_class.h:922
Definition: abstract_table_impl.h:57
void set_created(ulonglong created) override
Definition: abstract_table_impl.h:131
Object_id schema_id() const override
Definition: abstract_table_impl.h:88
void set_hidden(enum_hidden_type hidden) override
Definition: abstract_table_impl.h:152
ulonglong last_altered(bool convert_time) const override
Definition: abstract_table_impl.h:137
void set_schema_id(Object_id schema_id) override
Definition: abstract_table_impl.h:90
void set_last_altered(ulonglong last_altered) override
Definition: abstract_table_impl.h:142
Column * add_column() override
Definition: abstract_table_impl.cc:268
const Column_collection & columns() const override
Definition: abstract_table_impl.h:161
const Properties & options() const override
Definition: abstract_table_impl.h:111
uint mysql_version_id() const override
Definition: abstract_table_impl.h:99
bool drop_column(const String_type &name) override
Definition: abstract_table_impl.cc:274
bool set_options(const Properties &options) override
Definition: abstract_table_impl.h:115
const Column * get_column(Object_id column_id) const
Definition: abstract_table_impl.cc:298
enum_hidden_type hidden() const override
Definition: abstract_table_impl.h:150
ulonglong created(bool convert_time) const override
Definition: abstract_table_impl.h:127
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:102
Definition: check_constraint.h:41
Definition: collection.h:43
size_t size() const
Definition: collection.h:228
Definition: column.h:86
Definition: entity_object_impl.h:43
void set_name(const String_type &name) override
Definition: entity_object_impl.h:61
void set_id(Object_id id)
Definition: entity_object_impl.h:50
Object_id id() const override
The unique dictionary object id.
Definition: entity_object_impl.h:48
const String_type & name() const override
Definition: entity_object_impl.h:59
Entity_object_impl * impl() override
Definition: entity_object_impl.h:67
bool is_persistent() const override
Is dictionary object persistent in dictionary tables ?
Definition: entity_object_impl.h:56
Definition: foreign_key.h:180
Definition: foreign_key.h:46
Definition: index.h:50
Auxiliary class for opening dictionary tables.
Definition: transaction_impl.h:75
Definition: partition.h:50
The Properties_impl class implements the Properties interface.
Definition: properties_impl.h:76
bool insert_values(const Properties &properties) override
Insert key/value pairs from a different property object.
Definition: properties_impl.cc:103
The Properties class defines an interface for storing key=value pairs, where both key and value may b...
Definition: properties.h:73
virtual bool get(const String_type &key, String_type *value) const =0
Get the string value for a given key.
Definition: raw_record.h:45
Opaque context which keeps reusable resoureces needed during deserialization.
Definition: sdi.cc:230
Opaque context which keeps reusable resources needed during serialization.
Definition: sdi.cc:128
Definition: object_keys.h:218
Definition: table_impl.h:67
void set_created(ulonglong created) override
Definition: table_impl.h:452
bool load_foreign_key_parents(Open_dictionary_tables_ctx *otx)
Definition: table_impl.cc:128
String_type m_partition_expression
Definition: table_impl.h:571
void set_schema_id(Object_id schema_id) override
Definition: table_impl.h:433
const Partition_leaf_vector & leaf_partitions() const override
Definition: table_impl.h:396
Index * add_first_index() override
Definition: table_impl.cc:728
enum_table_type type() const override
Definition: table_impl.h:78
ulonglong created(bool convert_time) const override
Definition: table_impl.h:449
bool drop_column(const String_type &name) override
Definition: table_impl.h:462
Entity_object_impl * impl() override
Definition: table_impl.h:416
enum_row_format m_row_format
Definition: table_impl.h:565
enum_subpartition_type m_subpartition_type
Definition: table_impl.h:575
Trigger * add_trigger(Trigger::enum_action_timing at, Trigger::enum_event_type et) override
Add new trigger to the table.
Definition: table_impl.cc:825
bool restore_attributes(const Raw_record &r) override
Definition: table_impl.cc:397
bool set_se_private_data(const Properties &se_private_data) override
Definition: table_impl.h:201
Foreign_key_collection m_foreign_keys
Definition: table_impl.h:583
Properties & se_private_data() override
Definition: table_impl.h:195
void set_comment(const String_type &comment) override
Definition: table_impl.h:174
uint m_last_checked_for_upgrade_version_id
Definition: table_impl.h:558
void drop_all_triggers() override
Drop all the trigger on this dd::Table object.
Definition: table_impl.cc:955
bool restore_children(Open_dictionary_tables_ctx *otx) override
Definition: table_impl.cc:250
void set_partition_expression_utf8(const String_type &partition_expression_utf8) override
Definition: table_impl.h:281
void set_last_altered(ulonglong last_altered) override
Definition: table_impl.h:458
Trigger_collection * triggers() override
Get non-const pointer to Trigger_collection.
Definition: table_impl.h:501
void set_secondary_engine_attribute(LEX_CSTRING a) override
Definition: table_impl.h:231
void mark_as_checked_for_upgrade() override
Definition: table_impl.h:183
Index_collection * indexes() override
Definition: table_impl.h:348
bool store_triggers(Open_dictionary_tables_ctx *otx)
Store the trigger object in DD table.
Definition: table_impl.cc:294
bool set_se_private_data(const String_type &se_private_data_raw) override
Definition: table_impl.h:197
String_type m_subpartition_expression_utf8
Definition: table_impl.h:577
Index * add_index() override
Definition: table_impl.cc:720
void set_partition_type(enum_partition_type partition_type) override
Definition: table_impl.h:243
bool is_temporary() const override
Definition: table_impl.h:118
void debug_print(String_type &outb) const override
Definition: table_impl.cc:634
const Trigger * get_trigger(const char *name) const override
Get dd::Trigger object for the given trigger name.
Definition: table_impl.cc:840
String_type m_comment
Definition: table_impl.h:552
LEX_CSTRING engine_attribute() const override
Definition: table_impl.h:219
const Entity_object_impl * impl() const override
Definition: table_impl.h:417
bool is_explicit_tablespace() const override
Definition: table_impl.h:143
const String_type & comment() const override
Definition: table_impl.h:172
Object_id m_se_private_id
Definition: table_impl.h:549
enum_partition_type partition_type() const override
Definition: table_impl.h:239
String_type m_subpartition_expression
Definition: table_impl.h:576
bool store_children(Open_dictionary_tables_ctx *otx) override
Definition: table_impl.cc:356
bool set_options(const String_type &options_raw) override
Definition: table_impl.h:446
Trigger_impl * create_trigger()
Definition: table_impl.cc:812
Object_id schema_id() const override
Definition: table_impl.h:430
void set_default_partitioning(enum_default_partitioning default_partitioning) override
Definition: table_impl.h:255
Object_id m_tablespace_id
Definition: table_impl.h:593
bool validate() const override
Definition: table_impl.cc:108
void reorder_action_order(Trigger::enum_action_timing at, Trigger::enum_event_type et)
Definition: table_impl.cc:801
Column * get_column(const String_type &name)
Definition: table_impl.h:480
const Properties & se_private_data() const override
Definition: table_impl.h:191
Object_id collation_id() const override
Definition: table_impl.h:127
uint mysql_version_id() const override
Definition: table_impl.h:436
void set_name(const String_type &name) override
Definition: table_impl.h:427
Table_impl()
Definition: table_impl.cc:87
Object_id m_collation_id
Definition: table_impl.h:592
Object_id se_private_id() const override
Definition: table_impl.h:209
void set_hidden(enum_hidden_type hidden) override
Definition: table_impl.h:489
const String_type & engine() const override
Definition: table_impl.h:154
const Partition_collection & partitions() const override
Definition: table_impl.h:390
const String_type & partition_expression_utf8() const override
Definition: table_impl.h:277
Check_constraint_collection m_check_constraints
Definition: table_impl.h:588
Table_impl * clone() const override
Allocate a new object graph and invoke the copy constructor for each object.
Definition: table_impl.h:596
const String_type & partition_expression() const override
Definition: table_impl.h:264
Partition_collection m_partitions
Definition: table_impl.h:585
String_type m_partition_expression_utf8
Definition: table_impl.h:572
void set_collation_id(Object_id collation_id) override
Definition: table_impl.h:129
void set_subpartition_expression_utf8(const String_type &subpartition_expression_utf8) override
Definition: table_impl.h:333
Object_id id() const override
The unique dictionary object id.
Definition: table_impl.h:420
void set_subpartition_type(enum_subpartition_type subpartition_type) override
Definition: table_impl.h:294
void set_row_format(enum_row_format row_format) override
Definition: table_impl.h:164
Column * add_column() override
Definition: table_impl.h:461
const Index_collection & indexes() const override
Definition: table_impl.h:346
Object_id tablespace_id() const override
Definition: table_impl.h:137
Partition * add_partition() override
Definition: table_impl.cc:768
void set_engine(const String_type &engine) override
Definition: table_impl.h:156
void set_tablespace_id(Object_id tablespace_id) override
Definition: table_impl.h:139
bool store_attributes(Raw_record *r) override
Definition: table_impl.cc:464
bool has_trigger() const override
Check if table has any triggers.
Definition: table_impl.h:497
const Foreign_key_parent_collection & foreign_key_parents() const override
Definition: table_impl.h:380
Properties_impl m_se_private_data
Definition: table_impl.h:559
ulonglong last_altered(bool convert_time) const override
Definition: table_impl.h:455
void copy_triggers(const Table *tab_obj) override
Copy all the triggers from another dd::Table object.
Definition: table_impl.cc:906
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:856
Foreign_key_parent_collection m_foreign_key_parents
Definition: table_impl.h:584
enum_partition_type m_partition_type
Definition: table_impl.h:570
enum_default_partitioning m_default_subpartitioning
Definition: table_impl.h:578
dd::String_type m_engine_attribute
Definition: table_impl.h:562
bool m_is_temporary
Definition: table_impl.h:566
String_type m_engine
Definition: table_impl.h:551
dd::String_type m_secondary_engine_attribute
Definition: table_impl.h:563
enum_default_partitioning default_subpartitioning() const override
Definition: table_impl.h:303
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:586
const Column_collection & columns() const override
Definition: table_impl.h:465
void add_leaf_partition(Partition *p)
Definition: table_impl.h:405
void set_engine_attribute(LEX_CSTRING a) override
Definition: table_impl.h:223
Properties & options() override
Definition: table_impl.h:442
const String_type & subpartition_expression() const override
Definition: table_impl.h:316
const Trigger_collection & triggers() const override
Get const reference to Trigger_collection.
Definition: table_impl.h:499
Partition_leaf_vector * leaf_partitions() override
Definition: table_impl.h:400
Trigger_collection m_triggers
Definition: table_impl.h:587
void set_default_subpartitioning(enum_default_partitioning default_subpartitioning) override
Definition: table_impl.h:307
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:883
Index_collection m_indexes
Definition: table_impl.h:582
const String_type & subpartition_expression_utf8() const override
Definition: table_impl.h:329
const Column * get_column(Object_id column_id) const
Definition: table_impl.h:471
Partition_collection * partitions() override
Definition: table_impl.h:394
const Foreign_key_collection & foreign_keys() const override
Definition: table_impl.h:362
LEX_CSTRING secondary_engine_attribute() const override
Definition: table_impl.h:227
enum_subpartition_type subpartition_type() const override
Definition: table_impl.h:290
Foreign_key * add_foreign_key() override
Definition: table_impl.cc:748
const Properties & options() const override
Definition: table_impl.h:439
const Index * get_index(Object_id index_id) const
Definition: table_impl.h:350
Foreign_key_collection * foreign_keys() override
Definition: table_impl.h:366
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:600
Column_collection * columns() override
Definition: table_impl.h:468
virtual Foreign_key_parent * add_foreign_key_parent()
Definition: table_impl.cc:758
uint last_checked_for_upgrade_version_id() const override
Definition: table_impl.h:179
void set_partition_expression(const String_type &partition_expression) override
Definition: table_impl.h:268
void set_se_private_id(Object_id se_private_id) override
Definition: table_impl.h:211
Column * get_column(Object_id column_id)
Definition: table_impl.h:474
Check_constraint * add_check_constraint() override
Definition: table_impl.cc:974
enum_hidden_type hidden() const override
Definition: table_impl.h:486
~Table_impl() override
Definition: table_impl.cc:104
const Partition * get_partition(Object_id partition_id) const
Definition: table_impl.h:407
enum_default_partitioning default_partitioning() const override
Definition: table_impl.h:251
uint get_max_action_order(Trigger::enum_action_timing at, Trigger::enum_event_type et) const
Definition: table_impl.cc:789
Partition_leaf_vector m_leaf_partitions
Definition: table_impl.h:586
bool drop_children(Open_dictionary_tables_ctx *otx) const override
Definition: table_impl.cc:375
bool set_options(const Properties &options) override
Definition: table_impl.h:443
static void register_tables(Open_dictionary_tables_ctx *otx)
Definition: table_impl.cc:1002
bool update_aux_key(Aux_key *key) const override
Definition: table_impl.h:483
enum_default_partitioning m_default_partitioning
Definition: table_impl.h:573
enum_row_format row_format() const override
Definition: table_impl.h:162
Check_constraint_collection * check_constraints() override
Definition: table_impl.h:542
void set_is_temporary(bool is_temporary) override
Definition: table_impl.h:119
const Check_constraint_collection & check_constraints() const override
Definition: table_impl.h:538
const String_type & name() const override
Definition: table_impl.h:424
bool is_persistent() const override
Is dictionary object persistent in dictionary tables ?
Definition: table_impl.h:421
bool reload_foreign_key_parents(THD *thd) override
Definition: table_impl.cc:228
void set_subpartition_expression(const String_type &subpartition_expression) override
Definition: table_impl.h:320
void serialize(Sdi_wcontext *wctx, Sdi_writer *w) const override
Converts *this into json.
Definition: table_impl.cc:544
void drop_trigger(const Trigger *trigger) override
Drop the given trigger object.
Definition: table_impl.cc:959
const Column * get_column(const String_type &name) const override
Definition: table_impl.h:477
Definition: table.h:46
std::vector< Foreign_key_parent * > Foreign_key_parent_collection
Definition: table.h:51
std::vector< Partition * > Partition_leaf_vector
Definition: table.h:64
enum_row_format
Definition: table.h:79
enum_partition_type
Definition: table.h:89
enum_subpartition_type
Definition: table.h:105
bool update_aux_key(Aux_key *key) const override
Definition: table.h:68
enum_default_partitioning
Definition: table.h:116
Definition: trigger_impl.h:53
Class representing a Trigger in DD framework.
Definition: trigger.h:53
enum_event_type
Definition: trigger.h:59
enum_action_timing
Definition: trigger.h:61
const char * p
Definition: ctype-mb.cc:1236
Some integer typedefs for easier portability.
unsigned long long int ulonglong
Definition: my_inttypes.h:55
#define MYSQL_VERSION_ID
Definition: mysql_version.h:15
The version of the current data dictionary table definitions.
Definition: dictionary_client.h:42
RJ_Writer Sdi_writer
Alias for the rapidjson Writer type to use in serialization.
Definition: sdi_fwd.h:63
unsigned long long Object_id
Definition: object_id.h:30
rapidjson::GenericValue< RJ_Encoding, RJ_Allocator > RJ_Value
Definition: sdi_fwd.h:48
Char_string_template< String_type_allocator > String_type
Definition: string_type.h:50
enum_table_type
Definition: abstract_table.h:52
Definition: options.cc:48
static int exists(node_address *name, node_list const *nodes, u_int with_uid)
Definition: node_list.cc:105
partition_type
An enum and a struct to handle partitioning and subpartitioning.
Definition: partition_element.h:32
const mysql_service_registry_t * r
Definition: pfs_example_plugin_employee.cc:85
required string key
Definition: replication_asynchronous_connection_failover.proto:59
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:83
Definition: mysql_lex_string.h:39
const char * str
Definition: mysql_lex_string.h:40
size_t length
Definition: mysql_lex_string.h:41
unsigned int uint
Definition: uca-dump.cc:29