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