MySQL  8.0.27
Source Code Documentation
sql_parse.h
Go to the documentation of this file.
1 /* Copyright (c) 2006, 2021, 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 SQL_PARSE_INCLUDED
24 #define SQL_PARSE_INCLUDED
25 
26 #include <stddef.h>
27 #include <sys/types.h>
28 
29 #include "lex_string.h"
30 #include "m_ctype.h"
31 #include "my_command.h"
32 #include "my_sqlcommand.h"
33 #include "mysql_com.h" // enum_server_command
34 #include "sql/handler.h" // enum_schema_tables
35 #include "sql/system_variables.h" // System_variables
37 
38 struct mysql_rwlock_t;
39 template <typename T>
40 class SQL_I_List;
41 
42 /**
43  @addtogroup GROUP_PARSER
44  @{
45 */
46 
47 class Comp_creator;
48 class Item;
50 class Parser_state;
51 class THD;
52 class Table_ident;
53 struct LEX;
54 struct LEX_USER;
55 struct ORDER;
56 struct Parse_context;
57 struct TABLE_LIST;
58 union COM_DATA;
59 
60 extern "C" int test_if_data_home_dir(const char *dir);
61 
62 bool stmt_causes_implicit_commit(const THD *thd, uint mask);
63 
64 #ifndef NDEBUG
65 extern void turn_parser_debug_on();
66 #endif
67 
68 bool parse_sql(THD *thd, Parser_state *parser_state,
69  Object_creation_ctx *creation_ctx);
70 
71 void free_items(Item *item);
72 void cleanup_items(Item *item);
73 void bind_fields(Item *first);
74 
75 Comp_creator *comp_eq_creator(bool invert);
77 Comp_creator *comp_ge_creator(bool invert);
78 Comp_creator *comp_gt_creator(bool invert);
79 Comp_creator *comp_le_creator(bool invert);
80 Comp_creator *comp_lt_creator(bool invert);
81 Comp_creator *comp_ne_creator(bool invert);
82 
83 int prepare_schema_table(THD *thd, LEX *lex, Table_ident *table_ident,
84  enum enum_schema_tables schema_table_idx);
85 void get_default_definer(THD *thd, LEX_USER *definer);
88 bool check_string_char_length(const LEX_CSTRING &str, const char *err_msg,
89  size_t max_char_length, const CHARSET_INFO *cs,
90  bool no_error);
92  const CHARSET_INFO *collation,
93  const CHARSET_INFO **to);
95  const CHARSET_INFO *collation,
96  const CHARSET_INFO **to);
97 bool check_host_name(const LEX_CSTRING &str);
102 bool alloc_query(THD *thd, const char *packet, size_t packet_length);
103 void dispatch_sql_command(THD *thd, Parser_state *parser_state);
106 int mysql_execute_command(THD *thd, bool first_level = false);
107 bool do_command(THD *thd);
108 bool dispatch_command(THD *thd, const COM_DATA *com_data,
110 bool prepare_index_and_data_dir_path(THD *thd, const char **data_file_name,
111  const char **index_file_name,
112  const char *table_name);
113 int append_file_to_dir(THD *thd, const char **filename_ptr,
114  const char *table_name);
115 void execute_init_command(THD *thd, LEX_STRING *init_command,
116  mysql_rwlock_t *var_lock);
117 void add_to_list(SQL_I_List<ORDER> &list, ORDER *order);
118 void add_join_on(TABLE_LIST *b, Item *expr);
120  TABLE_LIST *right_op);
121 void init_sql_command_flags(void);
123 void killall_non_super_threads(THD *thd);
124 bool shutdown(THD *thd, enum mysql_enum_shutdown_level level);
125 bool show_precheck(THD *thd, LEX *lex, bool lock);
126 
127 /* Variables */
128 
129 extern uint sql_command_flags[];
130 
131 /**
132  Map from enumeration values of type enum_server_command to
133  descriptions of type std::string.
134 
135  In this context, a "command" is a type code for a remote procedure
136  call in the client-server protocol; for instance, a "connect" or a
137  "ping" or a "query".
138 
139  The getter functions use @@terminology_use_previous to
140  decide which version of the name to use, for names that depend on
141  it.
142 */
144  private:
145  /**
146  Array indexed by enum_server_command, where each element is a
147  description string.
148  */
149  static const std::string m_names[];
150  /**
151  Command whose name depends on @@terminology_use_previous.
152 
153  Currently, there is only one such command, so we use a single
154  member variable. In case we ever change any other command name
155  and control the use of the old or new name using
156  @@terminology_use_previous, we need to change the
157  following three members into some collection type, e.g.,
158  std::unordered_set.
159  */
161  /**
162  Name to use when compatibility is enabled.
163  */
164  static const std::string m_replace_str;
165  /**
166  The version when the name was changed.
167  */
170  /**
171  Given a system_variable object, returns the string to use for
172  m_replace_com, according to the setting of
173  terminology_use_previous stored in the object.
174 
175  @param sysvars The System_variables object holding the
176  configuration that should be considered when doing the translation.
177 
178  @return The instrumentation name that was in use in the configured
179  version, for m_replace_com.
180  */
181  static const std::string &translate(const System_variables &sysvars);
182  /**
183  Cast an integer to enum_server_command, and assert it is in range.
184 
185  @param cmd The integer value
186  @return The enum_server_command
187  */
188  static enum_server_command int_to_cmd(int cmd) {
189  assert(cmd >= 0);
190  assert(cmd <= COM_END);
191  return static_cast<enum_server_command>(cmd);
192  }
193 
194  public:
195  /**
196  Return a description string for a given enum_server_command.
197 
198  This bypasses @@terminology_use_previous and acts as if
199  it was set to NONE.
200 
201  @param cmd The enum_server_command
202  @retval The description string
203  */
204  static const std::string &str_notranslate(enum_server_command cmd) {
205  return m_names[cmd];
206  }
207  /**
208  Return a description string for an integer that is the numeric
209  value of an enum_server_command.
210 
211  This bypasses @@terminology_use_previous and acts as if
212  it was set to NONE.
213 
214  @param cmd The integer value
215  @retval The description string
216  */
217  static const std::string &str_notranslate(int cmd) {
218  return str_notranslate(int_to_cmd(cmd));
219  }
220  /**
221  Return a description string for a given enum_server_command.
222 
223  This takes @@session.terminology_use_previous into
224  account, and returns an old name if one has been defined and the
225  option is enabled.
226 
227  @param cmd The enum_server_command
228  @retval The description string
229  */
230  static const std::string &str_session(enum_server_command cmd);
231  /**
232  Return a description string for a given enum_server_command.
233 
234  This takes @@global.terminology_use_previous into
235  account, and returns an old name if one has been defined and the
236  option is enabled.
237 
238  @param cmd The enum_server_command
239  @retval The description string
240  */
241  static const std::string &str_global(enum_server_command cmd);
242  /**
243  Return a description string for an integer that is the numeric
244  value of an enum_server_command.
245 
246  This takes @@session.terminology_use_previous into
247  account, and returns an old name if one has been defined and the
248  option is enabled.
249 
250  @param cmd The integer value
251  @retval The description string
252  */
253  static const std::string &str_session(int cmd) {
254  return str_session(int_to_cmd(cmd));
255  }
256 };
257 
259 
260 bool all_tables_not_ok(THD *thd, TABLE_LIST *tables);
262 
263 // TODO: remove after refactoring of ALTER DATABASE:
264 bool set_default_charset(HA_CREATE_INFO *create_info,
265  const CHARSET_INFO *value);
266 // TODO: remove after refactoring of ALTER DATABASE:
267 bool set_default_collation(HA_CREATE_INFO *create_info,
268  const CHARSET_INFO *value);
269 
270 /* Bits in sql_command_flags */
271 
272 #define CF_CHANGES_DATA (1U << 0)
273 /* The 2nd bit is unused -- it used to be CF_HAS_ROW_COUNT. */
274 #define CF_STATUS_COMMAND (1U << 2)
275 #define CF_SHOW_TABLE_COMMAND (1U << 3)
276 #define CF_WRITE_LOGS_COMMAND (1U << 4)
277 /**
278  Must be set for SQL statements that may contain
279  Item expressions and/or use joins and tables.
280  Indicates that the parse tree of such statement may
281  contain rule-based optimizations that depend on metadata
282  (i.e. number of columns in a table), and consequently
283  that the statement must be re-prepared whenever
284  referenced metadata changes. Must not be set for
285  statements that themselves change metadata, e.g. RENAME,
286  ALTER and other DDL, since otherwise will trigger constant
287  reprepare. Consequently, complex item expressions and
288  joins are currently prohibited in these statements.
289 */
290 #define CF_REEXECUTION_FRAGILE (1U << 5)
291 /**
292  Implicitly commit before the SQL statement is executed.
293 
294  Statements marked with this flag will cause any active
295  transaction to end (commit) before proceeding with the
296  command execution.
297 
298  This flag should be set for statements that probably can't
299  be rolled back or that do not expect any previously metadata
300  locked tables.
301 */
302 #define CF_IMPLICIT_COMMIT_BEGIN (1U << 6)
303 /**
304  Implicitly commit after the SQL statement.
305 
306  Statements marked with this flag are automatically committed
307  at the end of the statement.
308 
309  This flag should be set for statements that will implicitly
310  open and take metadata locks on system tables that should not
311  be carried for the whole duration of a active transaction.
312 */
313 #define CF_IMPLICIT_COMMIT_END (1U << 7)
314 /**
315  CF_IMPLICIT_COMMIT_BEGIN and CF_IMPLICIT_COMMIT_END are used
316  to ensure that the active transaction is implicitly committed
317  before and after every DDL statement and any statement that
318  modifies our currently non-transactional system tables.
319 */
320 #define CF_AUTO_COMMIT_TRANS (CF_IMPLICIT_COMMIT_BEGIN | CF_IMPLICIT_COMMIT_END)
321 
322 /**
323  Diagnostic statement.
324  Diagnostic statements:
325  - SHOW WARNING
326  - SHOW ERROR
327  - GET DIAGNOSTICS (WL#2111)
328  do not modify the Diagnostics Area during execution.
329 */
330 #define CF_DIAGNOSTIC_STMT (1U << 8)
331 
332 /**
333  Identifies statements that may generate row events
334  and that may end up in the binary log.
335 */
336 #define CF_CAN_GENERATE_ROW_EVENTS (1U << 9)
337 
338 /**
339  Identifies statements which may deal with temporary tables and for which
340  temporary tables should be pre-opened to simplify privilege checks.
341 */
342 #define CF_PREOPEN_TMP_TABLES (1U << 10)
343 
344 /**
345  Identifies statements for which open handlers should be closed in the
346  beginning of the statement.
347 */
348 #define CF_HA_CLOSE (1U << 11)
349 
350 /**
351  Identifies statements that can be explained with EXPLAIN.
352 */
353 #define CF_CAN_BE_EXPLAINED (1U << 12)
354 
355 /** Identifies statements which may generate an optimizer trace */
356 #define CF_OPTIMIZER_TRACE (1U << 14)
357 
358 /**
359  Identifies statements that should always be disallowed in
360  read only transactions.
361 */
362 #define CF_DISALLOW_IN_RO_TRANS (1U << 15)
363 
364 /**
365  Identifies statements and commands that can be used with Protocol Plugin
366 */
367 #define CF_ALLOW_PROTOCOL_PLUGIN (1U << 16)
368 
369 /**
370  Identifies statements (typically DDL) which needs auto-commit mode
371  temporarily turned off.
372 
373  @note This is necessary to prevent InnoDB from automatically committing
374  InnoDB transaction each time data-dictionary tables are closed
375  after being updated.
376 
377  @note This is also necessary for ACL DDL, so the code which
378  saves GTID state or slave state in the system tables at the
379  commit time works correctly. This code does statement commit
380  on low-level (see System_table_access:: close_table()) and
381  thus can pre-maturely commit DDL if @@autocommit=1.
382 */
383 #define CF_NEEDS_AUTOCOMMIT_OFF (1U << 17)
384 
385 /**
386  Identifies statements which can return rows of data columns (SELECT, SHOW ...)
387 */
388 #define CF_HAS_RESULT_SET (1U << 18)
389 
390 /**
391  Identifies DDL statements which can be atomic.
392  Having the bit ON does not yet define an atomic.
393  The property is used both on the master and slave.
394  On the master atomicity infers the binlog and gtid_executed system table.
395  On the slave it more involves the slave info table.
396 
397  @note At the momemnt of declaration the covered DDL subset coincides
398  with the of CF_NEEDS_AUTOCOMMIT_OFF.
399 */
400 #define CF_POTENTIAL_ATOMIC_DDL (1U << 19)
401 
402 /**
403  Statement is depending on the ACL cache, which can be disabled by the
404  --skip-grant-tables server option.
405 */
406 #define CF_REQUIRE_ACL_CACHE (1U << 20)
407 
408 /**
409  Identifies statements as SHOW commands using INFORMATION_SCHEMA system views.
410 */
411 #define CF_SHOW_USES_SYSTEM_VIEW (1U << 21)
412 
413 /* Bits in server_command_flags */
414 
415 /**
416  Skip the increase of the global query id counter. Commonly set for
417  commands that are stateless (won't cause any change on the server
418  internal states). This is made obsolete as query id is incremented
419  for ping and statistics commands as well because of race condition
420  (Bug#58785).
421 */
422 #define CF_SKIP_QUERY_ID (1U << 0)
423 
424 /**
425  Skip the increase of the number of statements that clients have
426  sent to the server. Commonly used for commands that will cause
427  a statement to be executed but the statement might have not been
428  sent by the user (ie: stored procedure).
429 */
430 #define CF_SKIP_QUESTIONS (1U << 1)
431 
432 /**
433  1U << 16 is reserved for Protocol Plugin statements and commands
434 */
435 
436 /**
437  @} (end of group GROUP_PARSER)
438 */
439 
440 #endif /* SQL_PARSE_INCLUDED */
Map from enumeration values of type enum_server_command to descriptions of type std::string.
Definition: sql_parse.h:143
static const std::string & str_session(int cmd)
Return a description string for an integer that is the numeric value of an enum_server_command.
Definition: sql_parse.h:253
static constexpr terminology_use_previous::enum_compatibility_version m_replace_version
The version when the name was changed.
Definition: sql_parse.h:169
static enum_server_command int_to_cmd(int cmd)
Cast an integer to enum_server_command, and assert it is in range.
Definition: sql_parse.h:188
static const std::string & str_notranslate(enum_server_command cmd)
Return a description string for a given enum_server_command.
Definition: sql_parse.h:204
static constexpr enum_server_command m_replace_com
Command whose name depends on @terminology_use_previous.
Definition: sql_parse.h:160
static const std::string & str_notranslate(int cmd)
Return a description string for an integer that is the numeric value of an enum_server_command.
Definition: sql_parse.h:217
Abstract factory interface for creating comparison predicates.
Definition: item_cmpfunc.h:522
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:802
Object_creation_ctx – interface for creation context of database objects (views, stored routines,...
Definition: table.h:194
Internal state of the parser.
Definition: sql_lex.h:4458
Simple intrusive linked list.
Definition: sql_list.h:45
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_class.h:821
Definition: sql_lex.h:292
int test_if_data_home_dir(const char *dir)
Definition: sql_parse.cc:6728
bool check_host_name(const LEX_CSTRING &str)
Check that host name string is valid.
Definition: sql_parse.cc:6767
bool push_new_name_resolution_context(Parse_context *pc, TABLE_LIST *left_op, TABLE_LIST *right_op)
Push a new name resolution context for a JOIN ...
Definition: sql_parse.cc:6188
int mysql_execute_command(THD *thd, bool first_level=false)
Execute command saved in thd and lex->sql_command.
Definition: sql_parse.cc:2798
void execute_init_command(THD *thd, LEX_STRING *init_command, mysql_rwlock_t *var_lock)
Definition: sql_parse.cc:1129
bool all_tables_not_ok(THD *thd, TABLE_LIST *tables)
Returns true if all tables should be ignored.
Definition: sql_parse.cc:288
void add_to_list(SQL_I_List< ORDER > &list, ORDER *order)
save order by and tables in own lists.
Definition: sql_parse.cc:5408
bool is_log_table_write_query(enum enum_sql_command command)
Check if a sql command is allowed to write to log tables.
Definition: sql_parse.cc:1109
Comp_creator * comp_ge_creator(bool invert)
Definition: sql_parse.cc:6472
bool mysql_test_parse_for_slave(THD *thd)
Usable by the replication SQL thread only: just parse a query to know if it can be ignored because of...
Definition: sql_parse.cc:5198
void add_join_on(TABLE_LIST *b, Item *expr)
Add an ON condition to the second operand of a JOIN ...
Definition: sql_parse.cc:6216
bool prepare_index_and_data_dir_path(THD *thd, const char **data_file_name, const char **index_file_name, const char *table_name)
prepares the index and data directory path.
Definition: sql_parse.cc:6394
bool shutdown(THD *thd, enum mysql_enum_shutdown_level level)
Shutdown the mysqld server.
Definition: sql_parse.cc:2402
bool some_non_temp_table_to_be_updated(THD *thd, TABLE_LIST *tables)
Definition: sql_parse.cc:359
const CHARSET_INFO * get_bin_collation(const CHARSET_INFO *cs)
Definition: sql_parse.cc:6233
LEX_USER * get_current_user(THD *thd, LEX_USER *user)
Retuns information about user or current user.
Definition: sql_parse.cc:6621
bool do_command(THD *thd)
Read one command from connection and execute it (query or simple command).
Definition: sql_parse.cc:1227
Comp_creator * comp_gt_creator(bool invert)
Definition: sql_parse.cc:6476
bool is_explainable_query(enum enum_sql_command command)
Definition: sql_parse.cc:1099
bool show_precheck(THD *thd, LEX *lex, bool lock)
bool stmt_causes_implicit_commit(const THD *thd, uint mask)
Returns whether the command in thd->lex->sql_command should cause an implicit commit.
Definition: sql_parse.cc:384
bool sqlcom_can_generate_row_events(enum enum_sql_command command)
Definition: sql_parse.cc:1090
Comp_creator * comp_lt_creator(bool invert)
Definition: sql_parse.cc:6484
bool set_default_charset(HA_CREATE_INFO *create_info, const CHARSET_INFO *value)
Definition: parse_tree_nodes.cc:1699
bool merge_sp_var_charset_and_collation(const CHARSET_INFO *charset, const CHARSET_INFO *collation, const CHARSET_INFO **to)
Definition: sql_parse.cc:7071
int append_file_to_dir(THD *thd, const char **filename_ptr, const char *table_name)
If pointer is not a null pointer, append filename to it.
Definition: sql_parse.cc:6434
Comp_creator * comp_ne_creator(bool invert)
Definition: sql_parse.cc:6488
bool alloc_query(THD *thd, const char *packet, size_t packet_length)
Read query from packet and store in thd->query.
Definition: sql_parse.cc:2521
LEX_USER * create_default_definer(THD *thd)
Create default definer for the specified THD.
Definition: sql_parse.cc:6599
void bind_fields(Item *first)
Bind Item fields to Field objects.
Definition: sql_parse.cc:1211
void create_table_set_open_action_and_adjust_tables(LEX *lex)
Set proper open mode and table type for element representing target table of CREATE TABLE statement,...
Definition: sql_parse.cc:6528
Comp_creator * comp_equal_creator(bool invert)
void turn_parser_debug_on()
int prepare_schema_table(THD *thd, LEX *lex, Table_ident *table_ident, enum enum_schema_tables schema_table_idx)
Create a TABLE_LIST object for an INFORMATION_SCHEMA table.
Definition: sql_parse.cc:2459
void mysql_reset_thd_for_next_command(THD *thd)
Reset the part of THD responsible for the state of command processing.
Definition: sql_parse.cc:4910
void killall_non_super_threads(THD *thd)
Definition: sql_parse.cc:6375
bool parse_sql(THD *thd, Parser_state *parser_state, Object_creation_ctx *creation_ctx)
Transform an SQL statement into an AST that is ready for resolving, using the supplied parser state a...
Definition: sql_parse.cc:6868
bool dispatch_command(THD *thd, const COM_DATA *com_data, enum enum_server_command command)
Perform one connection-level (COM_XXXX) command.
Definition: sql_parse.cc:1580
bool is_update_query(enum enum_sql_command command)
Definition: sql_parse.cc:1094
Comp_creator * comp_le_creator(bool invert)
Definition: sql_parse.cc:6480
void dispatch_sql_command(THD *thd, Parser_state *parser_state)
Parse an SQL command from a text string and pass the resulting AST to the query executor.
Definition: sql_parse.cc:5007
uint sql_command_flags[]
Mark all commands that somehow changes a table.
Definition: sql_parse.cc:424
void init_sql_command_flags(void)
Definition: sql_parse.cc:427
void get_default_definer(THD *thd, LEX_USER *definer)
Set the specified definer to the default value, which is the current user in the thread.
Definition: sql_parse.cc:6556
bool set_default_collation(HA_CREATE_INFO *create_info, const CHARSET_INFO *value)
Definition: parse_tree_nodes.cc:1723
bool merge_charset_and_collation(const CHARSET_INFO *charset, const CHARSET_INFO *collation, const CHARSET_INFO **to)
(end of group Runtime_Environment)
Definition: sql_parse.cc:7057
void free_items(Item *item)
Definition: sql_parse.cc:1188
Comp_creator * comp_eq_creator(bool invert)
Definition: sql_parse.cc:6463
void cleanup_items(Item *item)
This works because items are allocated with (*THR_MALLOC)->Alloc().
Definition: sql_parse.cc:1201
bool check_string_char_length(const LEX_CSTRING &str, const char *err_msg, size_t max_char_length, const CHARSET_INFO *cs, bool no_error)
Definition: sql_parse.cc:6699
static const std::string & str_session(enum_server_command cmd)
Return a description string for a given enum_server_command.
Definition: sql_parse.cc:264
static const std::string & str_global(enum_server_command cmd)
Return a description string for a given enum_server_command.
Definition: sql_parse.cc:270
static const std::string m_replace_str
Name to use when compatibility is enabled.
Definition: sql_parse.h:164
static const std::string & translate(const System_variables &sysvars)
Given a system_variable object, returns the string to use for m_replace_com, according to the setting...
Definition: sql_parse.cc:255
static const std::string m_names[]
Array indexed by enum_server_command, where each element is a description string.
Definition: sql_parse.h:149
mysql_enum_shutdown_level
We want levels to be in growing order of hardness (because we use number comparisons).
Definition: mysql_com.h:1001
A better implementation of the UNIX ctype(3) library.
static mi_bit_type mask[]
Definition: mi_packrec.cc:140
enum_server_command
A list of all MySQL protocol commands.
Definition: my_command.h:47
@ COM_END
Not a real command.
Definition: my_command.h:100
@ COM_REGISTER_SLAVE
Definition: my_command.h:73
enum_sql_command
Definition: my_sqlcommand.h:45
Common definition between mysql server & client.
char * user
Definition: mysqladmin.cc:59
const char * collation
Definition: audit_api_message_emit.cc:183
std::string str(const mysqlrouter::ConfigGenerator::Options::Endpoint &ep)
Definition: config_generator.cc:1056
const std::string charset("charset")
Definition: commit_order_queue.h:33
std::string dir
Double write files location.
Definition: buf0dblwr.cc:74
Provides atomic access in shared-exclusive modes.
Definition: shared_spin_lock.h:78
const char * table_name
Definition: rules_table_service.cc:55
enum_compatibility_version
Enumeration holding the possible values for @terminology_use_previous.
Definition: terminology_use_previous_enum.h:47
@ BEFORE_8_0_26
Use names that were in use up to 8.0.25, inclusive.
Definition: terminology_use_previous_enum.h:51
const string value("\"Value\"")
enum_schema_tables
Definition: handler.h:906
Definition: m_ctype.h:354
Definition: handler.h:2764
Definition: table.h:2561
The LEX object currently serves three different purposes:
Definition: sql_lex.h:3654
Definition: mysql_lex_string.h:39
Definition: mysql_lex_string.h:34
Definition: table.h:279
Environment data for the contextualization phase.
Definition: parse_tree_node_base.h:90
Definition: system_variables.h:178
Definition: table.h:2694
An instrumented rwlock structure.
Definition: mysql_rwlock_bits.h:50
unsigned int uint
Definition: uca-dump.cc:29
Definition: com_data.h:111
command
Definition: version_token.cc:279