MySQL 8.0.29
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
30class Item;
31class THD;
32struct LEX;
33struct TABLE_LIST;
34struct TABLE_SHARE;
35template <class T>
36class List;
37template <class T>
38class mem_root_deque;
39
40enum class enum_view_create_mode;
41
42bool create_view_precheck(THD *thd, TABLE_LIST *tables, TABLE_LIST *view,
44
46
47bool mysql_register_view(THD *thd, TABLE_LIST *view,
49
50bool mysql_drop_view(THD *thd, TABLE_LIST *view);
51
52bool 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);
61
62bool open_and_read_view(THD *thd, TABLE_SHARE *share, TABLE_LIST *view_ref);
63
64bool 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*/
75bool 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:433
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_class.h:945
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:1736
bool parse_view_definition(THD *thd, TABLE_LIST *view_ref)
Parse a view definition.
Definition: sql_view.cc:1207
bool open_and_read_view(THD *thd, TABLE_SHARE *share, TABLE_LIST *view_ref)
Open and read a view definition.
Definition: sql_view.cc:1092
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:2010
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:1902
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:3659
Definition: table.h:2684
This structure is shared between different table objects.
Definition: table.h:688