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