MySQL 8.0.32
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, 2022, 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;
33class Table_ref;
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_ref *tables, Table_ref *view,
44
46
48
49bool mysql_drop_view(THD *thd, Table_ref *view);
50
51bool check_key_in_view(THD *thd, Table_ref *view, const Table_ref *table_ref);
52
54
57 const mem_root_deque<Item *> &item_list,
58 bool gen_unique_view_names);
60
61bool open_and_read_view(THD *thd, TABLE_SHARE *share, Table_ref *view_ref);
62
63bool parse_view_definition(THD *thd, Table_ref *view_ref);
64
65/*
66 Check if view is updatable.
67
68 @param thd Thread Handle.
69 @param view View description.
70
71 @retval true View is updatable.
72 @retval false Otherwise.
73*/
74bool is_updatable_view(THD *thd, Table_ref *view);
75
76#define VIEW_ANY_ACL (SELECT_ACL | UPDATE_ACL | INSERT_ACL | DELETE_ACL)
77
78#endif /* SQL_VIEW_INCLUDED */
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:850
Definition: sql_list.h:433
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:33
Definition: table.h:2755
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:274
static bool column_names
Definition: mysql.cc:159
mode
Definition: file_handle.h:59
std::list< T, ut::allocator< T > > list
Specialization of list which uses ut_allocator.
Definition: ut0new.h:2876
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 check_key_in_view(THD *thd, Table_ref *view, const Table_ref *table_ref)
check of key (primary or unique) presence in updatable view
Definition: sql_view.cc:1905
Mem_root_array_YY< LEX_CSTRING > Create_col_name_list
Definition: sql_view.h:55
bool insert_view_fields(mem_root_deque< Item * > *list, Table_ref *view)
Definition: sql_view.cc:2012
bool mysql_create_view(THD *thd, Table_ref *view, enum_view_create_mode mode)
Creating/altering VIEW procedure.
Definition: sql_view.cc:437
bool parse_view_definition(THD *thd, Table_ref *view_ref)
Parse a view definition.
Definition: sql_view.cc:1206
bool is_updatable_view(THD *thd, Table_ref *view)
Definition: sql_view.cc:783
bool create_view_precheck(THD *thd, Table_ref *tables, Table_ref *view, enum_view_create_mode mode)
CREATE VIEW privileges pre-check.
Definition: sql_view.cc:328
bool open_and_read_view(THD *thd, TABLE_SHARE *share, Table_ref *view_ref)
Open and read a view definition.
Definition: sql_view.cc:1091
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 mysql_register_view(THD *thd, Table_ref *view, enum_view_create_mode mode)
Register view by writing its definition to the data-dictionary.
Definition: sql_view.cc:863
bool mysql_drop_view(THD *thd, Table_ref *view)
Drop view.
Definition: sql_view.cc:1739
The LEX object currently serves three different purposes:
Definition: sql_lex.h:3693
This structure is shared between different table objects.
Definition: table.h:688