MySQL  8.0.27
Source Code Documentation
sql_view.h
Go to the documentation of this file.
1 #ifndef SQL_VIEW_INCLUDED
2 #define SQL_VIEW_INCLUDED
3 
4 /* Copyright (c) 2004, 2021, Oracle and/or its affiliates.
5 
6  This program is free software; you can redistribute it and/or modify
7  it under the terms of the GNU General Public License, version 2.0,
8  as published by the Free Software Foundation.
9 
10  This program is also distributed with certain software (including
11  but not limited to OpenSSL) that is licensed under separate terms,
12  as designated in a particular file or component or in included license
13  documentation. The authors of MySQL hereby grant you an additional
14  permission to link the program and your derivative works with the
15  separately licensed software that they have included with MySQL.
16 
17  This program is distributed in the hope that it will be useful,
18  but WITHOUT ANY WARRANTY; without even the implied warranty of
19  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20  GNU General Public License, version 2.0, for more details.
21 
22  You should have received a copy of the GNU General Public License
23  along with this program; if not, write to the Free Software
24  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
25 
26 #include "lex_string.h"
27 #include "sql/auth/auth_acls.h"
28 #include "sql/mem_root_array.h"
29 
30 class Item;
31 class THD;
32 struct LEX;
33 struct TABLE_LIST;
34 struct TABLE_SHARE;
35 template <class T>
36 class List;
37 template <class T>
38 class mem_root_deque;
39 
40 enum class enum_view_create_mode;
41 
42 bool create_view_precheck(THD *thd, TABLE_LIST *tables, TABLE_LIST *view,
44 
46 
47 bool mysql_register_view(THD *thd, TABLE_LIST *view,
49 
50 bool mysql_drop_view(THD *thd, TABLE_LIST *view);
51 
52 bool check_key_in_view(THD *thd, TABLE_LIST *view, const TABLE_LIST *table_ref);
53 
55 
58  const mem_root_deque<Item *> &item_list,
59  bool gen_unique_view_names);
60 void make_valid_column_names(LEX *lex);
61 
62 bool open_and_read_view(THD *thd, TABLE_SHARE *share, TABLE_LIST *view_ref);
63 
64 bool parse_view_definition(THD *thd, TABLE_LIST *view_ref);
65 
66 /*
67  Check if view is updatable.
68 
69  @param thd Thread Handle.
70  @param view View description.
71 
72  @retval true View is updatable.
73  @retval false Otherwise.
74 */
75 bool is_updatable_view(THD *thd, TABLE_LIST *view);
76 
77 #define VIEW_ANY_ACL (SELECT_ACL | UPDATE_ACL | INSERT_ACL | DELETE_ACL)
78 
79 #endif /* SQL_VIEW_INCLUDED */
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:802
Definition: sql_list.h:431
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_class.h:821
A (partial) implementation of std::deque allocating its blocks on a MEM_ROOT.
Definition: mem_root_deque.h:109
enum_view_create_mode
Definition: sql_lex.h:272
static bool column_names
Definition: mysql.cc:159
mode
Definition: file_handle.h:59
bool is_updatable_view(THD *thd, TABLE_LIST *view)
Definition: sql_view.cc:784
bool check_duplicate_names(const Create_col_name_list *column_names, const mem_root_deque< Item * > &item_list, bool gen_unique_view_names)
When creating a derived table, check if duplicate column names are present, and possibly generate uni...
Definition: sql_view.cc:175
bool mysql_register_view(THD *thd, TABLE_LIST *view, enum_view_create_mode mode)
Register view by writing its definition to the data-dictionary.
Definition: sql_view.cc:864
Mem_root_array_YY< LEX_CSTRING > Create_col_name_list
Definition: sql_view.h:56
bool mysql_drop_view(THD *thd, TABLE_LIST *view)
Drop view.
Definition: sql_view.cc:1731
bool parse_view_definition(THD *thd, TABLE_LIST *view_ref)
Parse a view definition.
Definition: sql_view.cc:1202
bool open_and_read_view(THD *thd, TABLE_SHARE *share, TABLE_LIST *view_ref)
Open and read a view definition.
Definition: sql_view.cc:1087
bool mysql_create_view(THD *thd, TABLE_LIST *view, enum_view_create_mode mode)
Creating/altering VIEW procedure.
Definition: sql_view.cc:437
bool insert_view_fields(mem_root_deque< Item * > *list, TABLE_LIST *view)
Definition: sql_view.cc:2005
bool check_key_in_view(THD *thd, TABLE_LIST *view, const TABLE_LIST *table_ref)
check of key (primary or unique) presence in updatable view
Definition: sql_view.cc:1897
void make_valid_column_names(LEX *lex)
Check if auto generated column names are conforming and possibly generate a conforming name for them ...
Definition: sql_view.cc:228
bool create_view_precheck(THD *thd, TABLE_LIST *tables, TABLE_LIST *view, enum_view_create_mode mode)
CREATE VIEW privileges pre-check.
Definition: sql_view.cc:328
The LEX object currently serves three different purposes:
Definition: sql_lex.h:3654
Definition: table.h:2694
This structure is shared between different table objects.
Definition: table.h:688