MySQL 8.2.0
Source Code Documentation
object_keys.h
Go to the documentation of this file.
1/* Copyright (c) 2014, 2023, 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__OBJECT_KEYS_INCLUDED
24#define DD__OBJECT_KEYS_INCLUDED
25
26#include <stddef.h>
27#include <string.h>
28#include <sys/types.h>
29
30#include "my_inttypes.h"
32#include "sql/dd/impl/object_key.h" // dd::Object_key
33#include "sql/dd/object_id.h" // dd::Object_id
34#include "sql/dd/string_type.h"
35#include "template_utils.h"
36
37namespace dd {
38
39///////////////////////////////////////////////////////////////////////////
40
41class Raw_table;
42struct Raw_key;
43
44///////////////////////////////////////////////////////////////////////////
45
46// NOTE: the current naming convention is as follows:
47// - use '_key' suffix to name keys identifying 0 or 1 row;
48// - use '_range_key' suffix to name keys identifying 0 or N rows.
49
50///////////////////////////////////////////////////////////////////////////
51
52// Key type to be used for keys that are not supported by an object type.
53class Void_key : public Object_key {
54 public:
55 Void_key() = default;
56
57 public:
58 /* purecov: begin inspected */
59 Raw_key *create_access_key(Raw_table *) const override { return nullptr; }
60 /* purecov: end */
61
62 /* purecov: begin inspected */
63 String_type str() const override { return ""; }
64 /* purecov: end */
65
66 // We need a comparison operator since the type will be used
67 // as a template type argument.
68 /* purecov: begin inspected */
69 bool operator<(const Void_key &rhs) const { return this < &rhs; }
70 /* purecov: end */
71};
72
73///////////////////////////////////////////////////////////////////////////
74
75// Entity_object-id primary key for global objects.
76class Primary_id_key : public Object_key {
77 public:
78 Primary_id_key() = default;
79
80 Primary_id_key(Object_id object_id) : m_object_id(object_id) {}
81
82 // Update a preallocated instance.
83 void update(Object_id object_id) { m_object_id = object_id; }
84
85 public:
86 Raw_key *create_access_key(Raw_table *db_table) const override;
87
88 String_type str() const override;
89
90 bool operator<(const Primary_id_key &rhs) const {
91 return m_object_id < rhs.m_object_id;
92 }
93
94 private:
96};
97
98///////////////////////////////////////////////////////////////////////////
99
100// Entity_object-id partial key for looking for containing objects.
102 public:
103 Parent_id_range_key(int id_index_no, int id_column_no, Object_id object_id)
104 : m_id_index_no(id_index_no),
105 m_id_column_no(id_column_no),
106 m_object_id(object_id) {}
107
108 public:
109 Raw_key *create_access_key(Raw_table *db_table) const override;
110
111 String_type str() const override;
112
113 private:
117};
118
119///////////////////////////////////////////////////////////////////////////
120
121// Entity_object-name key for global objects.
123 public:
124 Global_name_key() = default;
125
126 Global_name_key(int name_column_no, const String_type &object_name,
127 const CHARSET_INFO *cs)
128 : m_name_column_no(name_column_no),
129 m_object_name(object_name),
130 m_cs(cs) {}
131
132 // Update a preallocated instance.
133 void update(int name_column_no, const String_type &object_name,
134 const CHARSET_INFO *cs) {
135 m_name_column_no = name_column_no;
136 m_object_name = object_name;
137 m_cs = cs;
138 }
139
140 public:
141 Raw_key *create_access_key(Raw_table *db_table) const override;
142
143 /* purecov: begin inspected */
144 String_type str() const override { return m_object_name; }
145 /* purecov: end */
146
147 bool operator<(const Global_name_key &rhs) const {
148 return (my_strnncoll(m_cs,
149 pointer_cast<const uchar *>(m_object_name.c_str()),
150 m_object_name.length(),
151 pointer_cast<const uchar *>(rhs.m_object_name.c_str()),
152 rhs.m_object_name.length()) < 0);
153 }
154
155 private:
158 // Collation used for the name in the table.
160};
161
162///////////////////////////////////////////////////////////////////////////
163
164// Entity_object-name key for objects which are identified within a container.
165class Item_name_key : public Object_key {
166 public:
167 Item_name_key() = default;
168
169 Item_name_key(int container_id_column_no, Object_id container_id,
170 int name_column_no, const String_type &object_name,
171 const CHARSET_INFO *cs)
172 : m_container_id_column_no(container_id_column_no),
173 m_name_column_no(name_column_no),
174 m_container_id(container_id),
175 m_object_name(object_name),
176 m_cs(cs) {}
177
178 // Update a preallocated instance.
179 void update(int container_id_column_no, Object_id container_id,
180 int name_column_no, const String_type &object_name,
181 const CHARSET_INFO *cs) {
182 m_container_id_column_no = container_id_column_no;
183 m_name_column_no = name_column_no;
184 m_container_id = container_id;
185 m_object_name = object_name;
186 m_cs = cs;
187 }
188
189 public:
190 Raw_key *create_access_key(Raw_table *db_table) const override;
191
192 String_type str() const override;
193
194 bool operator<(const Item_name_key &rhs) const {
196 return (m_container_id < rhs.m_container_id);
197
198 return (my_strnncoll(m_cs,
199 pointer_cast<const uchar *>(m_object_name.c_str()),
200 m_object_name.length(),
201 pointer_cast<const uchar *>(rhs.m_object_name.c_str()),
202 rhs.m_object_name.length()) < 0);
203 }
204
205 private:
208
211 // Collation used for the name in the table.
213};
214
215///////////////////////////////////////////////////////////////////////////
216
217// TODO: find a better name.
219 public:
220 Se_private_id_key() = default;
221
222 /* purecov: begin deadcode */
223 Se_private_id_key(int index_no, int engine_column_no,
224 const String_type &engine, int private_id_column_no,
225 Object_id private_id)
226 : m_index_no(index_no),
227 m_engine_column_no(engine_column_no),
228 m_engine(engine),
229 m_private_id_column_no(private_id_column_no),
230 m_private_id(private_id) {}
231 /* purecov: end */
232
233 // Update a preallocated instance.
234 void update(int index_no, int engine_column_no, const String_type &engine,
235 int private_id_column_no, Object_id private_id) {
236 m_index_no = index_no;
237 m_engine_column_no = engine_column_no;
238 m_engine = engine;
239 m_private_id_column_no = private_id_column_no;
240 m_private_id = private_id;
241 }
242
243 public:
244 Raw_key *create_access_key(Raw_table *db_table) const override;
245
246 String_type str() const override;
247
248 bool operator<(const Se_private_id_key &rhs) const {
249 return m_private_id < rhs.m_private_id
250 ? true
251 : rhs.m_private_id < m_private_id ? false
252 : m_engine < rhs.m_engine;
253 }
254
255 private:
257
260
263};
264
265///////////////////////////////////////////////////////////////////////////
266
267class Composite_pk : public Object_key {
268 public:
269 Composite_pk(int index_no, uint first_column_no, ulonglong first_id,
270 uint second_column_no, ulonglong second_id)
271 : m_index_no(index_no),
272 m_first_column_no(first_column_no),
273 m_first_id(first_id),
274 m_second_column_no(second_column_no),
275 m_second_id(second_id) {}
276
277 public:
278 Raw_key *create_access_key(Raw_table *db_table) const override;
279
280 String_type str() const override;
281
282 private:
284
287
290};
291
292///////////////////////////////////////////////////////////////////////////
293
295 public:
296 Composite_char_key(int index_no, uint first_column_no,
297 const String_type &first_name, uint second_column_no,
298 const String_type &second_name)
299 : m_index_no(index_no),
300 m_first_column_no(first_column_no),
301 m_first_name(first_name),
302 m_second_column_no(second_column_no),
303 m_second_name(second_name) {}
304
305 public:
306 Raw_key *create_access_key(Raw_table *db_table) const override;
307
308 String_type str() const override;
309
310 private:
312
315
318};
319
320///////////////////////////////////////////////////////////////////////////
321
323 public:
324 Composite_4char_key(int index_no, uint first_column_no,
325 const String_type &first_name, uint second_column_no,
326 const String_type &second_name, uint third_column_no,
327 const String_type &third_name, uint fourth_column_no,
328 const String_type &fourth_name)
329 : m_index_no(index_no),
330 m_first_column_no(first_column_no),
331 m_first_name(first_name),
332 m_second_column_no(second_column_no),
333 m_second_name(second_name),
334 m_third_column_no(third_column_no),
335 m_third_name(third_name),
336 m_fourth_column_no(fourth_column_no),
337 m_fourth_name(fourth_name) {}
338
339 public:
340 Raw_key *create_access_key(Raw_table *db_table) const override;
341
342 String_type str() const override;
343
344 private:
346
349
352
355
358};
359
360///////////////////////////////////////////////////////////////////////////
361
363 public:
364 Composite_obj_id_3char_key(int index_no, uint id_column_no, Object_id id,
365 uint first_column_no,
366 const String_type &first_name,
367 uint second_column_no,
368 const String_type &second_name,
369 uint third_column_no,
370 const String_type &third_name)
371 : m_index_no(index_no),
372 m_id_column_no(id_column_no),
373 m_id(id),
374 m_first_column_no(first_column_no),
375 m_first_name(first_name),
376 m_second_column_no(second_column_no),
377 m_second_name(second_name),
378 m_third_column_no(third_column_no),
379 m_third_name(third_name) {}
380
381 public:
382 Raw_key *create_access_key(Raw_table *db_table) const override;
383
384 String_type str() const override;
385
386 private:
388
391
394
397
400};
401
402///////////////////////////////////////////////////////////////////////////
403
404// Range key to find index statistics entries by table name.
405// in mysql.index_stats.
407 public:
408 Index_stat_range_key(int index_no, int schema_name_column_no,
409 const String_type &schema_name, int table_name_column_no,
410 const String_type &table_name)
411 : m_index_no(index_no),
412 m_schema_name_column_no(schema_name_column_no),
413 m_schema_name(schema_name),
414 m_table_name_column_no(table_name_column_no),
416
417 public:
418 Raw_key *create_access_key(Raw_table *db_table) const override;
419
420 String_type str() const override;
421
422 private:
424
427
430};
431
432///////////////////////////////////////////////////////////////////////////
433
435 public:
436 Routine_name_key() = default;
437
438 Routine_name_key(int index_no, int container_id_column_no,
439 Object_id container_id, int type_column_no, uint type,
440 int name_column_no, const String_type &object_name,
441 const CHARSET_INFO *cs)
442 : m_index_no(index_no),
443 m_container_id_column_no(container_id_column_no),
444 m_type_column_no(type_column_no),
445 m_name_column_no(name_column_no),
446 m_container_id(container_id),
447 m_type(type),
448 m_object_name(object_name),
449 m_cs(cs) {}
450
451 // Update a preallocated instance.
452 void update(int index_no, int container_id_column_no, Object_id container_id,
453 int type_column_no, uint type, int name_column_no,
454 const String_type &object_name, const CHARSET_INFO *cs) {
455 m_index_no = index_no;
456 m_container_id_column_no = container_id_column_no;
457 m_type_column_no = type_column_no;
458 m_name_column_no = name_column_no;
459 m_container_id = container_id;
460 m_type = type;
461 m_object_name = object_name;
462 m_cs = cs;
463 }
464
465 public:
466 Raw_key *create_access_key(Raw_table *db_table) const override;
467
468 String_type str() const override;
469
470 bool operator<(const Routine_name_key &rhs) const;
471
472 private:
477
479 uint m_type;
481 // Collation used for the routine name in the table.
483};
484
485///////////////////////////////////////////////////////////////////////////
486
487// Range key to find rows using catalog/schema/table name.
489 public:
490 Table_reference_range_key(int index_no, int catalog_name_column_no,
491 const String_type &catalog_name,
492 int schema_name_column_no,
493 const String_type &schema_name,
494 int table_name_column_no,
495 const String_type &table_name)
496 : m_index_no(index_no),
497 m_catalog_name_column_no(catalog_name_column_no),
498 m_catalog_name(catalog_name),
499 m_schema_name_column_no(schema_name_column_no),
500 m_schema_name(schema_name),
501 m_table_name_column_no(table_name_column_no),
503
504 public:
505 Raw_key *create_access_key(Raw_table *db_table) const override;
506
507 String_type str() const override;
508
509 private:
511
514
517
520};
521
522///////////////////////////////////////////////////////////////////////////
523
524// Range key to find sub partition entries by table id and parent partition
525// id in mysql.partitions.
527 public:
528 Sub_partition_range_key(int index_no, int table_id_column_no,
529 const Object_id table_id,
530 int parent_partition_id_column_no,
531 const Object_id parent_partition_id)
532 : m_index_no(index_no),
533 m_table_id_column_no(table_id_column_no),
534 m_table_id(table_id),
535 m_parent_partition_id_column_no(parent_partition_id_column_no),
536 m_parent_partition_id(parent_partition_id) {}
537
538 public:
539 Raw_key *create_access_key(Raw_table *db_table) const override;
540
541 String_type str() const override;
542
543 private:
545
548
551};
552
553///////////////////////////////////////////////////////////////////////////
554
555// Range key to find rows using definer name.
557 public:
558 Definer_reference_range_key(int index_no, int definer_column_no,
559 const String_type &definer)
560 : m_index_no(index_no),
561 m_definer_column_no(definer_column_no),
562 m_definer(definer) {}
563
564 public:
565 Raw_key *create_access_key(Raw_table *db_table) const override;
566
567 String_type str() const override;
568
569 private:
573};
574
575///////////////////////////////////////////////////////////////////////////
576
577// Range key to find rows using table type and definer name.
579 public:
580 View_definer_reference_range_key(int index_no, int table_type_column_no,
581 uint table_type, int definer_column_no,
582 const String_type &definer)
583 : m_index_no(index_no),
584 m_table_type_column_no(table_type_column_no),
585 m_table_type(table_type),
586 m_definer_column_no(definer_column_no),
587 m_definer(definer) {}
588
589 public:
590 Raw_key *create_access_key(Raw_table *db_table) const override;
591
592 String_type str() const override;
593
594 private:
600};
601
602//////////////////////////////////////////////////////////////////////////////
603
604} // namespace dd
605#endif // DD__OBJECT_KEYS_INCLUDED
Definition: object_keys.h:322
String_type m_second_name
Definition: object_keys.h:351
String_type m_first_name
Definition: object_keys.h:348
int m_fourth_column_no
Definition: object_keys.h:356
int m_second_column_no
Definition: object_keys.h:350
String_type m_fourth_name
Definition: object_keys.h:357
int m_index_no
Definition: object_keys.h:345
String_type str() const override
Definition: object_keys.cc:381
Raw_key * create_access_key(Raw_table *db_table) const override
Definition: object_keys.cc:353
String_type m_third_name
Definition: object_keys.h:354
Composite_4char_key(int index_no, uint first_column_no, const String_type &first_name, uint second_column_no, const String_type &second_name, uint third_column_no, const String_type &third_name, uint fourth_column_no, const String_type &fourth_name)
Definition: object_keys.h:324
int m_first_column_no
Definition: object_keys.h:347
int m_third_column_no
Definition: object_keys.h:353
Definition: object_keys.h:294
int m_index_no
Definition: object_keys.h:311
String_type m_second_name
Definition: object_keys.h:317
Composite_char_key(int index_no, uint first_column_no, const String_type &first_name, uint second_column_no, const String_type &second_name)
Definition: object_keys.h:296
int m_first_column_no
Definition: object_keys.h:313
String_type m_first_name
Definition: object_keys.h:314
int m_second_column_no
Definition: object_keys.h:316
Raw_key * create_access_key(Raw_table *db_table) const override
Definition: object_keys.cc:321
String_type str() const override
Definition: object_keys.cc:343
Definition: object_keys.h:362
Raw_key * create_access_key(Raw_table *db_table) const override
Definition: object_keys.cc:392
int m_id_column_no
Definition: object_keys.h:389
String_type m_second_name
Definition: object_keys.h:396
int m_index_no
Definition: object_keys.h:387
Composite_obj_id_3char_key(int index_no, uint id_column_no, Object_id id, uint first_column_no, const String_type &first_name, uint second_column_no, const String_type &second_name, uint third_column_no, const String_type &third_name)
Definition: object_keys.h:364
Object_id m_id
Definition: object_keys.h:390
int m_first_column_no
Definition: object_keys.h:392
String_type str() const override
Definition: object_keys.cc:420
String_type m_first_name
Definition: object_keys.h:393
int m_second_column_no
Definition: object_keys.h:395
int m_third_column_no
Definition: object_keys.h:398
String_type m_third_name
Definition: object_keys.h:399
Definition: object_keys.h:267
ulonglong m_second_id
Definition: object_keys.h:289
int m_first_column_no
Definition: object_keys.h:285
int m_index_no
Definition: object_keys.h:283
Composite_pk(int index_no, uint first_column_no, ulonglong first_id, uint second_column_no, ulonglong second_id)
Definition: object_keys.h:269
ulonglong m_first_id
Definition: object_keys.h:286
String_type str() const override
Definition: object_keys.cc:261
Raw_key * create_access_key(Raw_table *db_table) const override
Definition: object_keys.cc:240
int m_second_column_no
Definition: object_keys.h:288
Definition: object_keys.h:556
Definer_reference_range_key(int index_no, int definer_column_no, const String_type &definer)
Definition: object_keys.h:558
String_type str() const override
Definition: object_keys.cc:561
String_type m_definer
Definition: object_keys.h:572
int m_index_no
Definition: object_keys.h:570
Raw_key * create_access_key(Raw_table *db_table) const override
Definition: object_keys.cc:538
int m_definer_column_no
Definition: object_keys.h:571
Definition: object_keys.h:122
const CHARSET_INFO * m_cs
Definition: object_keys.h:159
String_type m_object_name
Definition: object_keys.h:157
Global_name_key()=default
Global_name_key(int name_column_no, const String_type &object_name, const CHARSET_INFO *cs)
Definition: object_keys.h:126
Raw_key * create_access_key(Raw_table *db_table) const override
Definition: object_keys.cc:123
bool operator<(const Global_name_key &rhs) const
Definition: object_keys.h:147
int m_name_column_no
Definition: object_keys.h:156
void update(int name_column_no, const String_type &object_name, const CHARSET_INFO *cs)
Definition: object_keys.h:133
String_type str() const override
Definition: object_keys.h:144
Definition: object_keys.h:406
int m_index_no
Definition: object_keys.h:423
String_type str() const override
Definition: object_keys.cc:452
String_type m_table_name
Definition: object_keys.h:429
String_type m_schema_name
Definition: object_keys.h:426
Raw_key * create_access_key(Raw_table *db_table) const override
Definition: object_keys.cc:430
int m_schema_name_column_no
Definition: object_keys.h:425
int m_table_name_column_no
Definition: object_keys.h:428
Index_stat_range_key(int index_no, int schema_name_column_no, const String_type &schema_name, int table_name_column_no, const String_type &table_name)
Definition: object_keys.h:408
Definition: object_keys.h:165
Object_id m_container_id
Definition: object_keys.h:209
int m_container_id_column_no
Definition: object_keys.h:206
String_type m_object_name
Definition: object_keys.h:210
const CHARSET_INFO * m_cs
Definition: object_keys.h:212
bool operator<(const Item_name_key &rhs) const
Definition: object_keys.h:194
Item_name_key()=default
int m_name_column_no
Definition: object_keys.h:207
Item_name_key(int container_id_column_no, Object_id container_id, int name_column_no, const String_type &object_name, const CHARSET_INFO *cs)
Definition: object_keys.h:169
String_type str() const override
Definition: object_keys.cc:191
Raw_key * create_access_key(Raw_table *db_table) const override
Definition: object_keys.cc:157
void update(int container_id_column_no, Object_id container_id, int name_column_no, const String_type &object_name, const CHARSET_INFO *cs)
Definition: object_keys.h:179
Definition: object_key.h:37
Definition: object_keys.h:101
Parent_id_range_key(int id_index_no, int id_column_no, Object_id object_id)
Definition: object_keys.h:103
int m_id_index_no
Definition: object_keys.h:114
int m_id_column_no
Definition: object_keys.h:115
Raw_key * create_access_key(Raw_table *db_table) const override
Definition: object_keys.cc:90
String_type str() const override
Definition: object_keys.cc:111
Object_id m_object_id
Definition: object_keys.h:116
Definition: object_keys.h:76
String_type str() const override
Definition: object_keys.cc:79
void update(Object_id object_id)
Definition: object_keys.h:83
Primary_id_key(Object_id object_id)
Definition: object_keys.h:80
bool operator<(const Primary_id_key &rhs) const
Definition: object_keys.h:90
Raw_key * create_access_key(Raw_table *db_table) const override
Definition: object_keys.cc:47
Object_id m_object_id
Definition: object_keys.h:95
Primary_id_key()=default
Definition: raw_table.h:43
Definition: object_keys.h:434
uint m_type
Definition: object_keys.h:479
String_type m_object_name
Definition: object_keys.h:480
void update(int index_no, int container_id_column_no, Object_id container_id, int type_column_no, uint type, int name_column_no, const String_type &object_name, const CHARSET_INFO *cs)
Definition: object_keys.h:452
Object_id m_container_id
Definition: object_keys.h:478
int m_name_column_no
Definition: object_keys.h:476
String_type str() const override
Definition: object_keys.cc:297
int m_container_id_column_no
Definition: object_keys.h:474
Routine_name_key()=default
Routine_name_key(int index_no, int container_id_column_no, Object_id container_id, int type_column_no, uint type, int name_column_no, const String_type &object_name, const CHARSET_INFO *cs)
Definition: object_keys.h:438
Raw_key * create_access_key(Raw_table *db_table) const override
Definition: object_keys.cc:272
int m_type_column_no
Definition: object_keys.h:475
const CHARSET_INFO * m_cs
Definition: object_keys.h:482
bool operator<(const Routine_name_key &rhs) const
Definition: object_keys.cc:306
int m_index_no
Definition: object_keys.h:473
Definition: object_keys.h:218
Se_private_id_key()=default
Raw_key * create_access_key(Raw_table *db_table) const override
Definition: object_keys.cc:202
void update(int index_no, int engine_column_no, const String_type &engine, int private_id_column_no, Object_id private_id)
Definition: object_keys.h:234
int m_engine_column_no
Definition: object_keys.h:258
String_type m_engine
Definition: object_keys.h:259
int m_index_no
Definition: object_keys.h:256
String_type str() const override
Definition: object_keys.cc:230
bool operator<(const Se_private_id_key &rhs) const
Definition: object_keys.h:248
Object_id m_private_id
Definition: object_keys.h:262
Se_private_id_key(int index_no, int engine_column_no, const String_type &engine, int private_id_column_no, Object_id private_id)
Definition: object_keys.h:223
int m_private_id_column_no
Definition: object_keys.h:261
Definition: object_keys.h:526
Raw_key * create_access_key(Raw_table *db_table) const override
Definition: object_keys.cc:499
int m_parent_partition_id_column_no
Definition: object_keys.h:549
int m_table_id_column_no
Definition: object_keys.h:546
Sub_partition_range_key(int index_no, int table_id_column_no, const Object_id table_id, int parent_partition_id_column_no, const Object_id parent_partition_id)
Definition: object_keys.h:528
String_type str() const override
Definition: object_keys.cc:527
Object_id m_parent_partition_id
Definition: object_keys.h:550
Object_id m_table_id
Definition: object_keys.h:547
int m_index_no
Definition: object_keys.h:544
Definition: object_keys.h:488
String_type str() const override
Definition: object_keys.cc:487
int m_index_no
Definition: object_keys.h:510
Table_reference_range_key(int index_no, int catalog_name_column_no, const String_type &catalog_name, int schema_name_column_no, const String_type &schema_name, int table_name_column_no, const String_type &table_name)
Definition: object_keys.h:490
Raw_key * create_access_key(Raw_table *db_table) const override
Definition: object_keys.cc:463
String_type m_schema_name
Definition: object_keys.h:516
int m_catalog_name_column_no
Definition: object_keys.h:512
String_type m_catalog_name
Definition: object_keys.h:513
String_type m_table_name
Definition: object_keys.h:519
int m_table_name_column_no
Definition: object_keys.h:518
int m_schema_name_column_no
Definition: object_keys.h:515
Definition: object_keys.h:578
int m_index_no
Definition: object_keys.h:595
int m_table_type_column_no
Definition: object_keys.h:596
uint m_table_type
Definition: object_keys.h:597
String_type m_definer
Definition: object_keys.h:599
View_definer_reference_range_key(int index_no, int table_type_column_no, uint table_type, int definer_column_no, const String_type &definer)
Definition: object_keys.h:580
int m_definer_column_no
Definition: object_keys.h:598
String_type str() const override
Definition: object_keys.cc:591
Raw_key * create_access_key(Raw_table *db_table) const override
Definition: object_keys.cc:567
Definition: object_keys.h:53
Void_key()=default
Raw_key * create_access_key(Raw_table *) const override
Definition: object_keys.h:59
String_type str() const override
Definition: object_keys.h:63
bool operator<(const Void_key &rhs) const
Definition: object_keys.h:69
A better implementation of the UNIX ctype(3) library.
int my_strnncoll(const CHARSET_INFO *cs, const uint8_t *a, size_t a_length, const uint8_t *b, size_t b_length)
Definition: m_ctype.h:635
Some integer typedefs for easier portability.
unsigned long long int ulonglong
Definition: my_inttypes.h:55
Definition: commit_order_queue.h:33
The version of the current data dictionary table definitions.
Definition: dictionary_client.h:42
unsigned long long Object_id
Definition: object_id.h:30
Char_string_template< String_type_allocator > String_type
Definition: string_type.h:50
const char * table_name
Definition: rules_table_service.cc:55
required string type
Definition: replication_group_member_actions.proto:33
Definition: m_ctype.h:422
Definition: raw_key.h:33
unsigned long id[MAX_DEAD]
Definition: xcom_base.cc:509