MySQL 8.4.0
Source Code Documentation
view_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__VIEW_IMPL_INCLUDED
25#define DD__VIEW_IMPL_INCLUDED
26
27#include <sys/types.h>
28#include <memory>
29#include <new>
30
31#include "my_inttypes.h"
34#include "sql/dd/impl/types/abstract_table_impl.h" // dd::Abstract_table_impl
37#include "sql/dd/object_id.h"
38#include "sql/dd/string_type.h"
40#include "sql/dd/types/view.h" // dd::View
41#include "sql/dd/types/view_routine.h" // IWYU pragma: keep
42#include "sql/dd/types/view_table.h" // IWYU pragma: keep
43
44namespace dd {
45class Column;
46class Open_dictionary_tables_ctx;
47class Weak_object;
48class Object_table;
49} // namespace dd
50
51namespace dd {
52
53///////////////////////////////////////////////////////////////////////////
54
55class View_impl : public Abstract_table_impl, public View {
56 public:
57 View_impl();
58
59 ~View_impl() override = default;
60
61 public:
63
64 bool validate() const override;
65
67
69
70 bool drop_children(Open_dictionary_tables_ctx *otx) const override;
71
72 void remove_children() override;
73
74 bool restore_attributes(const Raw_record &r) override;
75
76 bool store_attributes(Raw_record *r) override;
77
78 void debug_print(String_type &outb) const override;
79
80 public:
81 /////////////////////////////////////////////////////////////////////////
82 // enum_table_type.
83 /////////////////////////////////////////////////////////////////////////
84
85 enum_table_type type() const override { return m_type; }
86
87 /////////////////////////////////////////////////////////////////////////
88 // regular/system view flag.
89 /////////////////////////////////////////////////////////////////////////
90
91 void set_system_view(bool system_view) override {
92 m_type =
94 }
95
96 /////////////////////////////////////////////////////////////////////////
97 // collation.
98 /////////////////////////////////////////////////////////////////////////
99
102 }
103
106 }
107
110 }
111
114 }
115
116 /////////////////////////////////////////////////////////////////////////
117 // definition/utf8.
118 /////////////////////////////////////////////////////////////////////////
119
120 const String_type &definition() const override { return m_definition; }
121
122 void set_definition(const String_type &definition) override {
124 }
125
126 const String_type &definition_utf8() const override {
127 return m_definition_utf8;
128 }
129
132 }
133
134 /////////////////////////////////////////////////////////////////////////
135 // check_option.
136 /////////////////////////////////////////////////////////////////////////
137
138 enum_check_option check_option() const override { return m_check_option; }
139
142 }
143
144 /////////////////////////////////////////////////////////////////////////
145 // is_updatable.
146 /////////////////////////////////////////////////////////////////////////
147
148 bool is_updatable() const override { return m_is_updatable; }
149
150 void set_updatable(bool updatable) override { m_is_updatable = updatable; }
151
152 /////////////////////////////////////////////////////////////////////////
153 // algorithm.
154 /////////////////////////////////////////////////////////////////////////
155
156 enum_algorithm algorithm() const override { return m_algorithm; }
157
160 }
161
162 /////////////////////////////////////////////////////////////////////////
163 // security_type.
164 /////////////////////////////////////////////////////////////////////////
165
167
170 }
171
172 /////////////////////////////////////////////////////////////////////////
173 // definer.
174 /////////////////////////////////////////////////////////////////////////
175
176 const String_type &definer_user() const override { return m_definer_user; }
177
178 const String_type &definer_host() const override { return m_definer_host; }
179
180 void set_definer(const String_type &username,
181 const String_type &hostname) override {
182 m_definer_user = username;
183 m_definer_host = hostname;
184 }
185
186 /////////////////////////////////////////////////////////////////////////
187 // Explicit list of column names.
188 /////////////////////////////////////////////////////////////////////////
189
190 const Properties &column_names() const override { return m_column_names; }
191
192 Properties &column_names() override { return m_column_names; }
193
194 /////////////////////////////////////////////////////////////////////////
195 // View_table collection.
196 /////////////////////////////////////////////////////////////////////////
197
198 View_table *add_table() override;
199
200 const View_tables &tables() const override { return m_tables; }
201
202 /////////////////////////////////////////////////////////////////////////
203 // View_routine collection.
204 /////////////////////////////////////////////////////////////////////////
205
206 View_routine *add_routine() override;
207
208 const View_routines &routines() const override { return m_routines; }
209
210 // Fix "inherits ... via dominance" warnings
212 const Entity_object_impl *impl() const override {
214 }
215 Object_id id() const override { return Entity_object_impl::id(); }
216 bool is_persistent() const override {
218 }
219 const String_type &name() const override {
221 }
222 void set_name(const String_type &name) override {
224 }
225 Object_id schema_id() const override {
227 }
230 }
231 uint mysql_version_id() const override {
233 }
234 const Properties &options() const override {
236 }
238 bool set_options(const Properties &options) override {
240 }
241 bool set_options(const String_type &options_raw) override {
242 return Abstract_table_impl::set_options(options_raw);
243 }
244 ulonglong created(bool convert_time) const override {
245 return Abstract_table_impl::created(convert_time);
246 }
249 }
250 ulonglong last_altered(bool convert_time) const override {
251 return Abstract_table_impl::last_altered(convert_time);
252 }
255 }
257 bool drop_column(const String_type &name) override {
259 }
260 const Column_collection &columns() const override {
262 }
265 }
266 const Column *get_column(const String_type &name) const override {
268 }
271 }
272 enum_hidden_type hidden() const override {
274 }
277 }
278
279 private:
285
290
292
293 // Collections.
294
297
298 // References.
299
302
303 View_impl(const View_impl &src);
304 View_impl *clone() const override { return new View_impl(*this); }
305
306 // N.B.: returning dd::View from this function confuses MSVC compiler
307 // thanks to diamond inheritance.
309 View_impl *placeholder = new View_impl();
310 placeholder->set_id(id());
311 placeholder->set_schema_id(schema_id());
312 placeholder->set_name(name());
313 return placeholder;
314 }
315};
316
317///////////////////////////////////////////////////////////////////////////
318
319} // namespace dd
320
321#endif // DD__VIEW_IMPL_INCLUDED
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: collection.h:44
Definition: column.h:87
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
Auxiliary class for opening dictionary tables.
Definition: transaction_impl.h:76
The Properties_impl class implements the Properties interface.
Definition: properties_impl.h:77
The Properties class defines an interface for storing key=value pairs, where both key and value may b...
Definition: properties.h:74
Definition: raw_record.h:46
Definition: view_impl.h:55
String_type m_definition
Definition: view_impl.h:286
const String_type & definition_utf8() const override
Definition: view_impl.h:126
View_impl()
Definition: view_impl.cc:64
Properties & column_names() override
Definition: view_impl.h:192
void set_updatable(bool updatable) override
Definition: view_impl.h:150
Column * add_column() override
Definition: view_impl.h:256
String_type m_definer_user
Definition: view_impl.h:288
bool is_updatable() const override
Definition: view_impl.h:148
Object_id id() const override
The unique dictionary object id.
Definition: view_impl.h:215
String_type m_definer_host
Definition: view_impl.h:289
bool m_is_updatable
Definition: view_impl.h:281
void set_system_view(bool system_view) override
Definition: view_impl.h:91
bool restore_children(Open_dictionary_tables_ctx *otx) override
Definition: view_impl.cc:98
static void register_tables(Open_dictionary_tables_ctx *otx)
Definition: view_impl.cc:275
enum_table_type type() const override
Definition: view_impl.h:85
void set_definition(const String_type &definition) override
Definition: view_impl.h:122
bool drop_children(Open_dictionary_tables_ctx *otx) const override
Definition: view_impl.cc:117
const Properties & column_names() const override
Definition: view_impl.h:190
enum_hidden_type hidden() const override
Definition: view_impl.h:272
const String_type & name() const override
Definition: view_impl.h:219
void set_client_collation_id(Object_id client_collation_id) override
Definition: view_impl.h:104
bool drop_column(const String_type &name) override
Definition: view_impl.h:257
bool store_attributes(Raw_record *r) override
Definition: view_impl.cc:191
void set_security_type(enum_security_type security_type) override
Definition: view_impl.h:168
Column_collection * columns() override
Definition: view_impl.h:263
const String_type & definer_host() const override
Definition: view_impl.h:178
const Properties & options() const override
Definition: view_impl.h:234
void set_check_option(enum_check_option check_option) override
Definition: view_impl.h:140
const Column_collection & columns() const override
Definition: view_impl.h:260
Column * get_column(const String_type &name)
Definition: view_impl.h:269
String_type m_definition_utf8
Definition: view_impl.h:287
enum_check_option m_check_option
Definition: view_impl.h:282
void set_last_altered(ulonglong last_altered) override
Definition: view_impl.h:253
bool validate() const override
Definition: view_impl.cc:78
View_table * add_table() override
Definition: view_impl.cc:259
View_impl * clone() const override
Allocate a new object graph and invoke the copy constructor for each object.
Definition: view_impl.h:304
enum_check_option check_option() const override
Definition: view_impl.h:138
ulonglong created(bool convert_time) const override
Definition: view_impl.h:244
const String_type & definition() const override
Definition: view_impl.h:120
bool restore_attributes(const Raw_record &r) override
Definition: view_impl.cc:138
const Column * get_column(const String_type &name) const override
Definition: view_impl.h:266
Object_id m_connection_collation_id
Definition: view_impl.h:301
uint mysql_version_id() const override
Definition: view_impl.h:231
View_routines m_routines
Definition: view_impl.h:296
bool set_options(const String_type &options_raw) override
Definition: view_impl.h:241
Object_id client_collation_id() const override
Definition: view_impl.h:100
void set_algorithm(enum_algorithm algorithm) override
Definition: view_impl.h:158
View_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: view_impl.h:308
View_routine * add_routine() override
Definition: view_impl.cc:267
enum_security_type security_type() const override
Definition: view_impl.h:166
const String_type & definer_user() const override
Definition: view_impl.h:176
void set_hidden(enum_hidden_type hidden) override
Definition: view_impl.h:275
Object_id m_client_collation_id
Definition: view_impl.h:300
const View_routines & routines() const override
Definition: view_impl.h:208
ulonglong last_altered(bool convert_time) const override
Definition: view_impl.h:250
enum_algorithm m_algorithm
Definition: view_impl.h:283
void remove_children() override
Clear View columns, View_tables and View_routines collections.
Definition: view_impl.cc:129
const View_tables & tables() const override
Definition: view_impl.h:200
enum_security_type m_security_type
Definition: view_impl.h:284
Object_id connection_collation_id() const override
Definition: view_impl.h:108
enum_table_type m_type
Definition: view_impl.h:280
Entity_object_impl * impl() override
Definition: view_impl.h:211
bool is_persistent() const override
Is dictionary object persistent in dictionary tables ?
Definition: view_impl.h:216
void set_schema_id(Object_id schema_id) override
Definition: view_impl.h:228
bool set_options(const Properties &options) override
Definition: view_impl.h:238
void set_definer(const String_type &username, const String_type &hostname) override
Definition: view_impl.h:180
Object_id schema_id() const override
Definition: view_impl.h:225
bool store_children(Open_dictionary_tables_ctx *otx) override
Definition: view_impl.cc:110
Properties & options() override
Definition: view_impl.h:237
Properties_impl m_column_names
Definition: view_impl.h:291
enum_algorithm algorithm() const override
Definition: view_impl.h:156
const Entity_object_impl * impl() const override
Definition: view_impl.h:212
void set_created(ulonglong created) override
Definition: view_impl.h:247
void set_name(const String_type &name) override
Definition: view_impl.h:222
~View_impl() override=default
View_tables m_tables
Definition: view_impl.h:295
void set_definition_utf8(const String_type &definition_utf8) override
Definition: view_impl.h:130
void debug_print(String_type &outb) const override
Definition: view_impl.cc:218
void set_connection_collation_id(Object_id connection_collation_id) override
Definition: view_impl.h:112
Definition: view_routine.h:42
Definition: view_table.h:42
Definition: view.h:39
enum_algorithm
Definition: view.h:54
enum_check_option
Definition: view.h:48
enum_security_type
Definition: view.h:58
Some integer typedefs for easier portability.
unsigned long long int ulonglong
Definition: my_inttypes.h:56
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
enum_table_type
Definition: abstract_table.h:53
Definition: options.cc:57
const mysql_service_registry_t * r
Definition: pfs_example_plugin_employee.cc:86