MySQL 5.6.14 Source Code Document
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
sql_cmd.h
1 /* Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
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 as published by
5  the Free Software Foundation; version 2 of the License.
6 
7  This program is distributed in the hope that it will be useful,
8  but WITHOUT ANY WARRANTY; without even the implied warranty of
9  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  GNU General Public License for more details.
11 
12  You should have received a copy of the GNU General Public License
13  along with this program; if not, write to the Free Software
14  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
15 
20 #ifndef SQL_CMD_INCLUDED
21 #define SQL_CMD_INCLUDED
22 
23 /*
24  When a command is added here, be sure it's also added in mysqld.cc
25  in "struct show_var_st status_vars[]= {" ...
26 
27  If the command returns a result set or is not allowed in stored
28  functions or triggers, please also make sure that
29  sp_get_flags_for_command (sp_head.cc) returns proper flags for the
30  added SQLCOM_.
31 */
32 
33 enum enum_sql_command {
34  SQLCOM_SELECT, SQLCOM_CREATE_TABLE, SQLCOM_CREATE_INDEX, SQLCOM_ALTER_TABLE,
35  SQLCOM_UPDATE, SQLCOM_INSERT, SQLCOM_INSERT_SELECT,
36  SQLCOM_DELETE, SQLCOM_TRUNCATE, SQLCOM_DROP_TABLE, SQLCOM_DROP_INDEX,
37 
38  SQLCOM_SHOW_DATABASES, SQLCOM_SHOW_TABLES, SQLCOM_SHOW_FIELDS,
39  SQLCOM_SHOW_KEYS, SQLCOM_SHOW_VARIABLES, SQLCOM_SHOW_STATUS,
40  SQLCOM_SHOW_ENGINE_LOGS, SQLCOM_SHOW_ENGINE_STATUS, SQLCOM_SHOW_ENGINE_MUTEX,
41  SQLCOM_SHOW_PROCESSLIST, SQLCOM_SHOW_MASTER_STAT, SQLCOM_SHOW_SLAVE_STAT,
42  SQLCOM_SHOW_GRANTS, SQLCOM_SHOW_CREATE, SQLCOM_SHOW_CHARSETS,
43  SQLCOM_SHOW_COLLATIONS, SQLCOM_SHOW_CREATE_DB, SQLCOM_SHOW_TABLE_STATUS,
44  SQLCOM_SHOW_TRIGGERS,
45 
46  SQLCOM_LOAD,SQLCOM_SET_OPTION,SQLCOM_LOCK_TABLES,SQLCOM_UNLOCK_TABLES,
47  SQLCOM_GRANT,
48  SQLCOM_CHANGE_DB, SQLCOM_CREATE_DB, SQLCOM_DROP_DB, SQLCOM_ALTER_DB,
49  SQLCOM_REPAIR, SQLCOM_REPLACE, SQLCOM_REPLACE_SELECT,
50  SQLCOM_CREATE_FUNCTION, SQLCOM_DROP_FUNCTION,
51  SQLCOM_REVOKE,SQLCOM_OPTIMIZE, SQLCOM_CHECK,
52  SQLCOM_ASSIGN_TO_KEYCACHE, SQLCOM_PRELOAD_KEYS,
53  SQLCOM_FLUSH, SQLCOM_KILL, SQLCOM_ANALYZE,
54  SQLCOM_ROLLBACK, SQLCOM_ROLLBACK_TO_SAVEPOINT,
55  SQLCOM_COMMIT, SQLCOM_SAVEPOINT, SQLCOM_RELEASE_SAVEPOINT,
56  SQLCOM_SLAVE_START, SQLCOM_SLAVE_STOP,
57  SQLCOM_BEGIN, SQLCOM_CHANGE_MASTER,
58  SQLCOM_RENAME_TABLE,
59  SQLCOM_RESET, SQLCOM_PURGE, SQLCOM_PURGE_BEFORE, SQLCOM_SHOW_BINLOGS,
60  SQLCOM_SHOW_OPEN_TABLES,
61  SQLCOM_HA_OPEN, SQLCOM_HA_CLOSE, SQLCOM_HA_READ,
62  SQLCOM_SHOW_SLAVE_HOSTS, SQLCOM_DELETE_MULTI, SQLCOM_UPDATE_MULTI,
63  SQLCOM_SHOW_BINLOG_EVENTS, SQLCOM_DO,
64  SQLCOM_SHOW_WARNS, SQLCOM_EMPTY_QUERY, SQLCOM_SHOW_ERRORS,
65  SQLCOM_SHOW_STORAGE_ENGINES, SQLCOM_SHOW_PRIVILEGES,
66  SQLCOM_HELP, SQLCOM_CREATE_USER, SQLCOM_DROP_USER, SQLCOM_RENAME_USER,
67  SQLCOM_REVOKE_ALL, SQLCOM_CHECKSUM,
68  SQLCOM_CREATE_PROCEDURE, SQLCOM_CREATE_SPFUNCTION, SQLCOM_CALL,
69  SQLCOM_DROP_PROCEDURE, SQLCOM_ALTER_PROCEDURE,SQLCOM_ALTER_FUNCTION,
70  SQLCOM_SHOW_CREATE_PROC, SQLCOM_SHOW_CREATE_FUNC,
71  SQLCOM_SHOW_STATUS_PROC, SQLCOM_SHOW_STATUS_FUNC,
72  SQLCOM_PREPARE, SQLCOM_EXECUTE, SQLCOM_DEALLOCATE_PREPARE,
73  SQLCOM_CREATE_VIEW, SQLCOM_DROP_VIEW,
74  SQLCOM_CREATE_TRIGGER, SQLCOM_DROP_TRIGGER,
75  SQLCOM_XA_START, SQLCOM_XA_END, SQLCOM_XA_PREPARE,
76  SQLCOM_XA_COMMIT, SQLCOM_XA_ROLLBACK, SQLCOM_XA_RECOVER,
77  SQLCOM_SHOW_PROC_CODE, SQLCOM_SHOW_FUNC_CODE,
78  SQLCOM_ALTER_TABLESPACE,
79  SQLCOM_INSTALL_PLUGIN, SQLCOM_UNINSTALL_PLUGIN,
80  SQLCOM_BINLOG_BASE64_EVENT,
81  SQLCOM_SHOW_PLUGINS,
82  SQLCOM_CREATE_SERVER, SQLCOM_DROP_SERVER, SQLCOM_ALTER_SERVER,
83  SQLCOM_CREATE_EVENT, SQLCOM_ALTER_EVENT, SQLCOM_DROP_EVENT,
84  SQLCOM_SHOW_CREATE_EVENT, SQLCOM_SHOW_EVENTS,
85  SQLCOM_SHOW_CREATE_TRIGGER,
86  SQLCOM_ALTER_DB_UPGRADE,
87  SQLCOM_SHOW_PROFILE, SQLCOM_SHOW_PROFILES,
88  SQLCOM_SIGNAL, SQLCOM_RESIGNAL,
89  SQLCOM_SHOW_RELAYLOG_EVENTS,
90  SQLCOM_GET_DIAGNOSTICS,
91  SQLCOM_ALTER_USER,
92 
93  /*
94  When a command is added here, be sure it's also added in mysqld.cc
95  in "struct show_var_st status_vars[]= {" ...
96  */
97  /* This should be the last !!! */
98  SQLCOM_END
99 };
100 
123 class Sql_cmd : public Sql_alloc
124 {
125 private:
126  Sql_cmd(const Sql_cmd &); // No copy constructor wanted
127  void operator=(Sql_cmd &); // No assignment operator wanted
128 
129 public:
133  virtual enum_sql_command sql_command_code() const = 0;
134 
141  virtual bool execute(THD *thd) = 0;
142 
143 protected:
144  Sql_cmd()
145  {}
146 
147  virtual ~Sql_cmd()
148  {
149  /*
150  Sql_cmd objects are allocated in thd->mem_root.
151  In MySQL, the C++ destructor is never called, the underlying MEM_ROOT is
152  simply destroyed instead.
153  Do not rely on the destructor for any cleanup.
154  */
155  DBUG_ASSERT(FALSE);
156  }
157 };
158 
159 #endif // SQL_CMD_INCLUDED