* [Buildroot] [PATCH 1/2] mysql: add option to build the server
@ 2014-02-12 22:39 Marcelo Gutiérrez
2014-02-12 22:39 ` [Buildroot] [PATCH 2/2] package/mysql: fix debugging options Marcelo Gutiérrez
` (3 more replies)
0 siblings, 4 replies; 11+ messages in thread
From: Marcelo Gutiérrez @ 2014-02-12 22:39 UTC (permalink / raw)
To: buildroot
From: Marcelo Gutierrez <kuyurix@gmail.com>
Signed-off-by: Marcelo Gutierrez (UTN/FRH) <kuyurix@gmail.com>
---
package/mysql/Config.in | 9 +
.../mysql-0003-ac_stack_direction-is-unset.patch | 15 +
.../mysql-0004-Fix-gen_lex_hash-execution.patch | 32 +
...ql-0005-bison_3_breaks_mysql_server_build.patch | 3310 ++++++++++++++++++++
package/mysql/mysql.mk | 46 +-
5 files changed, 3411 insertions(+), 1 deletion(-)
create mode 100644 package/mysql/mysql-0003-ac_stack_direction-is-unset.patch
create mode 100644 package/mysql/mysql-0004-Fix-gen_lex_hash-execution.patch
create mode 100644 package/mysql/mysql-0005-bison_3_breaks_mysql_server_build.patch
diff --git a/package/mysql/Config.in b/package/mysql/Config.in
index 0def957..7133892 100644
--- a/package/mysql/Config.in
+++ b/package/mysql/Config.in
@@ -10,6 +10,15 @@ config BR2_PACKAGE_MYSQL
http://www.mysql.com/
+if BR2_PACKAGE_MYSQL
+
+config BR2_PACKAGE_MYSQL_SERVER
+ bool "MySQL server"
+ help
+ Install the MySQL server on the target.
+
+endif
+
comment "MySQL needs a toolchain w/ C++, threads"
depends on BR2_USE_MMU
depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/mysql/mysql-0003-ac_stack_direction-is-unset.patch b/package/mysql/mysql-0003-ac_stack_direction-is-unset.patch
new file mode 100644
index 0000000..6fef0a9
--- /dev/null
+++ b/package/mysql/mysql-0003-ac_stack_direction-is-unset.patch
@@ -0,0 +1,15 @@
+misc.m4: ac_cv_c_stack_direction is unset.
+
+Signed-off-by: Marcelo Gutierrez (UTN/FRH) <kuyurix@gmail.com>
+
+--- mysql-5.1.70.orig/config/ac-macros/misc.m4
++++ mysql-5.1.70/config/ac-macros/misc.m4
+@@ -477,7 +477,7 @@
+ exit(ptr_f(&a) < 0);
+ }
+ ], ac_cv_c_stack_direction=1, ac_cv_c_stack_direction=-1,
+- ac_cv_c_stack_direction=)])
++ ac_cv_c_stack_direction=0)])
+ AC_DEFINE_UNQUOTED(STACK_DIRECTION, $ac_cv_c_stack_direction)
+ ])dnl
+
diff --git a/package/mysql/mysql-0004-Fix-gen_lex_hash-execution.patch b/package/mysql/mysql-0004-Fix-gen_lex_hash-execution.patch
new file mode 100644
index 0000000..b91ed4f
--- /dev/null
+++ b/package/mysql/mysql-0004-Fix-gen_lex_hash-execution.patch
@@ -0,0 +1,32 @@
+Makefile: fix cross-compiling the server
+
+MySQL Makefile believes it can run code it just compiled, to
+generate a header. This does not work for cross-compilation.
+
+Instead, use a pre-installed host-version of the required tool.
+
+Signed-off-by: Marcelo Gutierrez (UTN/FRH) <kuyurix@gmail.com>
+
+--- mysql-5.1.70/sql/Makefile.am
++++ mysql-5.1.70.patch/sql/Makefile.am
+@@ -177,7 +177,7 @@
+ # this avoid the rebuild of the built files in a source dist
+ lex_hash.h: gen_lex_hash.cc lex.h
+ $(MAKE) $(AM_MAKEFLAGS) gen_lex_hash$(EXEEXT)
+- ./gen_lex_hash$(EXEEXT) > $@-t
++ gen_lex_hash$(EXEEXT) > $@-t
+ $(MV) $@-t $@
+
+ # For testing of udf_example.so
+
+--- mysql-5.1.70/sql/Makefile.in
++++ mysql-5.1.70.patch/sql/Makefile.in
+@@ -1310,7 +1310,7 @@
+ # this avoid the rebuild of the built files in a source dist
+ lex_hash.h: gen_lex_hash.cc lex.h
+ $(MAKE) $(AM_MAKEFLAGS) gen_lex_hash$(EXEEXT)
+- ./gen_lex_hash$(EXEEXT) > $@-t
++ gen_lex_hash$(EXEEXT) > $@-t
+ $(MV) $@-t $@
+
+ # We might have some stuff not built in this build, but that we want to install
diff --git a/package/mysql/mysql-0005-bison_3_breaks_mysql_server_build.patch b/package/mysql/mysql-0005-bison_3_breaks_mysql_server_build.patch
new file mode 100644
index 0000000..918fe24
--- /dev/null
+++ b/package/mysql/mysql-0005-bison_3_breaks_mysql_server_build.patch
@@ -0,0 +1,3310 @@
+fix the yacc code in mysql
+
+Signed-off-by: Marcelo Gutierrez (UTN/FRH) <kuyurix@gmail.com>
+---
+diff -uNr mysql-5.1.73.orig/sql/sql_lex.cc mysql-5.1.73/sql/sql_lex.cc
+--- mysql-5.1.73.orig/sql/sql_lex.cc 2013-11-04 18:52:27.000000000 +0000
++++ mysql-5.1.73/sql/sql_lex.cc 2014-02-12 14:12:04.244111625 +0000
+@@ -775,14 +775,13 @@
+ (which can't be followed by a signed number)
+ */
+
+-int MYSQLlex(void *arg, void *yythd)
++int MYSQLlex(void *arg, THD *thd)
+ {
+ reg1 uchar c= 0;
+ bool comment_closed;
+ int tokval, result_state;
+ uint length;
+ enum my_lex_states state;
+- THD *thd= (THD *)yythd;
+ Lex_input_stream *lip= & thd->m_parser_state->m_lip;
+ LEX *lex= thd->lex;
+ YYSTYPE *yylval=(YYSTYPE*) arg;
+diff -uNr mysql-5.1.73.orig/sql/sql_lex.h mysql-5.1.73/sql/sql_lex.h
+--- mysql-5.1.73.orig/sql/sql_lex.h 2013-11-04 18:52:27.000000000 +0000
++++ mysql-5.1.73/sql/sql_lex.h 2014-02-12 14:17:19.424106423 +0000
+@@ -2072,7 +2072,7 @@
+ extern void lex_free(void);
+ extern void lex_start(THD *thd);
+ extern void lex_end(LEX *lex);
+-extern int MYSQLlex(void *arg, void *yythd);
++extern int MYSQLlex(void *arg, THD *thd);
+
+ extern void trim_whitespace(CHARSET_INFO *cs, LEX_STRING *str);
+
+diff -uNr mysql-5.1.73.orig/sql/sql_parse.cc mysql-5.1.73/sql/sql_parse.cc
+--- mysql-5.1.73.orig/sql/sql_parse.cc 2013-11-04 18:52:27.000000000 +0000
++++ mysql-5.1.73/sql/sql_parse.cc 2014-02-12 14:19:20.424104427 +0000
+@@ -8012,7 +8012,7 @@
+ }
+
+
+-extern int MYSQLparse(void *thd); // from sql_yacc.cc
++extern int MYSQLparse(THD *thd); // from sql_yacc.cc
+
+
+ /**
+diff -uNr mysql-5.1.73.orig/sql/sql_yacc.yy mysql-5.1.73/sql/sql_yacc.yy
+--- mysql-5.1.73.orig/sql/sql_yacc.yy 2013-11-04 18:52:27.000000000 +0000
++++ mysql-5.1.73/sql/sql_yacc.yy 2014-02-12 20:17:06.707750140 +0000
+@@ -23,19 +23,13 @@
+ */
+
+ %{
+-/* thd is passed as an argument to yyparse(), and subsequently to yylex().
+-** The type will be void*, so it must be cast to (THD*) when used.
+-** Use the YYTHD macro for this.
+-*/
+-#define YYPARSE_PARAM yythd
+-#define YYLEX_PARAM yythd
+-#define YYTHD ((THD *)yythd)
+-#define YYLIP (& YYTHD->m_parser_state->m_lip)
++
++#define YYLIP (& thd->m_parser_state->m_lip)
+
+ #define MYSQL_YACC
+ #define YYINITDEPTH 100
+ #define YYMAXDEPTH 3200 /* Because of 64K stack */
+-#define Lex (YYTHD->lex)
++#define Lex (thd->lex)
+ #define Select Lex->current_select
+ #include "mysql_priv.h"
+ #include "slave.h"
+@@ -55,7 +49,7 @@
+ #pragma warning (disable : 4065)
+ #endif
+
+-int yylex(void *yylval, void *yythd);
++int yylex(void *yylval, THD *thd);
+
+ const LEX_STRING null_lex_str= {0,0};
+
+@@ -64,7 +58,7 @@
+ ulong val= *(F); \
+ if (my_yyoverflow((B), (D), &val)) \
+ { \
+- yyerror((char*) (A)); \
++ yyerror(current_thd, (char*) (A)); \
+ return 2; \
+ } \
+ else \
+@@ -76,7 +70,7 @@
+ #define MYSQL_YYABORT \
+ do \
+ { \
+- LEX::cleanup_lex_after_parse_error(YYTHD);\
++ LEX::cleanup_lex_after_parse_error(thd);\
+ YYABORT; \
+ } while (0)
+
+@@ -159,9 +153,8 @@
+ to abort from the parser.
+ */
+
+-void MYSQLerror(const char *s)
++void MYSQLerror(THD *thd, const char *s)
+ {
+- THD *thd= current_thd;
+
+ /*
+ Restore the original LEX if it was replaced when parsing
+@@ -675,7 +668,10 @@
+ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize);
+ %}
+
+-%pure_parser /* We have threads */
++/* We have threads */
++%define api.pure
++%parse-param { THD *thd }
++%lex-param { THD *thd }
+ /*
+ Currently there are 169 shift/reduce conflicts.
+ We should not introduce new conflicts any more.
+@@ -1516,7 +1512,6 @@
+ query:
+ END_OF_INPUT
+ {
+- THD *thd= YYTHD;
+ if (!thd->bootstrap &&
+ (!(thd->lex->select_lex.options & OPTION_FOUND_COMMENT)))
+ {
+@@ -1530,7 +1525,7 @@
+ {
+ Lex_input_stream *lip = YYLIP;
+
+- if ((YYTHD->client_capabilities & CLIENT_MULTI_QUERIES) &&
++ if ((thd->client_capabilities & CLIENT_MULTI_QUERIES) &&
+ ! lip->stmt_prepare_mode &&
+ ! lip->eof())
+ {
+@@ -1626,7 +1621,6 @@
+ deallocate:
+ deallocate_or_drop PREPARE_SYM ident
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ lex->sql_command= SQLCOM_DEALLOCATE_PREPARE;
+ lex->prepared_stmt_name= $3;
+@@ -1641,7 +1635,6 @@
+ prepare:
+ PREPARE_SYM ident FROM prepare_src
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ lex->sql_command= SQLCOM_PREPARE;
+ lex->prepared_stmt_name= $2;
+@@ -1651,14 +1644,12 @@
+ prepare_src:
+ TEXT_STRING_sys
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ lex->prepared_stmt_code= $1;
+ lex->prepared_stmt_code_is_varref= FALSE;
+ }
+ | '@' ident_or_text
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ lex->prepared_stmt_code= $2;
+ lex->prepared_stmt_code_is_varref= TRUE;
+@@ -1668,7 +1659,6 @@
+ execute:
+ EXECUTE_SYM ident
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ lex->sql_command= SQLCOM_EXECUTE;
+ lex->prepared_stmt_name= $2;
+@@ -1826,7 +1816,6 @@
+ create:
+ CREATE opt_table_options TABLE_SYM opt_if_not_exists table_ident
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ lex->sql_command= SQLCOM_CREATE_TABLE;
+ if (!lex->select_lex.add_table_to_list(thd, $5, NULL,
+@@ -1844,13 +1833,13 @@
+ }
+ create2
+ {
+- LEX *lex= YYTHD->lex;
++ LEX *lex= thd->lex;
+ lex->current_select= &lex->select_lex;
+ if ((lex->create_info.used_fields & HA_CREATE_USED_ENGINE) &&
+ !lex->create_info.db_type)
+ {
+- lex->create_info.db_type= ha_default_handlerton(YYTHD);
+- push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_WARN,
++ lex->create_info.db_type= ha_default_handlerton(thd);
++ push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
+ ER_WARN_USING_OTHER_HANDLER,
+ ER(ER_WARN_USING_OTHER_HANDLER),
+ ha_resolve_storage_engine_name(lex->create_info.db_type),
+@@ -1979,7 +1968,7 @@
+ event_tail:
+ remember_name EVENT_SYM opt_if_not_exists sp_name
+ {
+- THD *thd= YYTHD;
++ THD *thd= thd;
+ LEX *lex=Lex;
+
+ lex->stmt_definition_begin= $1;
+@@ -2046,7 +2035,7 @@
+ ev_starts:
+ /* empty */
+ {
+- Item *item= new (YYTHD->mem_root) Item_func_now_local();
++ Item *item= new (thd->mem_root) Item_func_now_local();
+ if (item == NULL)
+ MYSQL_YYABORT;
+ Lex->event_parse_data->item_starts= item;
+@@ -2096,7 +2085,6 @@
+
+ ev_sql_stmt:
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ Lex_input_stream *lip= YYLIP;
+
+@@ -2139,7 +2127,6 @@
+ }
+ ev_sql_stmt_inner
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+
+ /* return back to the original memory root ASAP */
+@@ -2198,11 +2185,10 @@
+ $$= new sp_name($1, $3, true);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+- $$->init_qname(YYTHD);
++ $$->init_qname(thd);
+ }
+ | ident
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ LEX_STRING db;
+ if (check_routine_name(&$1))
+@@ -2272,7 +2258,7 @@
+ lex->sql_command= SQLCOM_CALL;
+ lex->spname= $2;
+ lex->value_list.empty();
+- sp_add_used_routine(lex, YYTHD, $2, TYPE_ENUM_PROCEDURE);
++ sp_add_used_routine(lex, thd, $2, TYPE_ENUM_PROCEDURE);
+ }
+ opt_sp_cparam_list {}
+ ;
+@@ -2345,7 +2331,7 @@
+ (enum enum_field_types)$3,
+ sp_param_in);
+
+- if (lex->sphead->fill_field_definition(YYTHD, lex,
++ if (lex->sphead->fill_field_definition(thd, lex,
+ (enum enum_field_types) $3,
+ &spvar->field_def))
+ {
+@@ -2382,7 +2368,7 @@
+ (enum enum_field_types)$4,
+ (sp_param_mode_t)$1);
+
+- if (lex->sphead->fill_field_definition(YYTHD, lex,
++ if (lex->sphead->fill_field_definition(thd, lex,
+ (enum enum_field_types) $4,
+ &spvar->field_def))
+ {
+@@ -2445,13 +2431,12 @@
+ {
+ LEX *lex= Lex;
+
+- lex->sphead->reset_lex(YYTHD);
++ lex->sphead->reset_lex(thd);
+ lex->spcont->declare_var_boundary($2);
+ }
+ type
+ sp_opt_default
+ {
+- THD *thd= YYTHD;
+ LEX *lex= Lex;
+ sp_pcontext *pctx= lex->spcont;
+ uint num_vars= pctx->context_var_count();
+@@ -2477,7 +2462,7 @@
+ spvar->type= var_type;
+ spvar->dflt= dflt_value_item;
+
+- if (lex->sphead->fill_field_definition(YYTHD, lex, var_type,
++ if (lex->sphead->fill_field_definition(thd, lex, var_type,
+ &spvar->field_def))
+ {
+ MYSQL_YYABORT;
+@@ -2501,7 +2486,7 @@
+ }
+
+ pctx->declare_var_boundary(0);
+- if (lex->sphead->restore_lex(YYTHD))
++ if (lex->sphead->restore_lex(thd))
+ MYSQL_YYABORT;
+ $$.vars= $2;
+ $$.conds= $$.hndlrs= $$.curs= 0;
+@@ -2516,7 +2501,7 @@
+ my_error(ER_SP_DUP_COND, MYF(0), $2.str);
+ MYSQL_YYABORT;
+ }
+- if(YYTHD->lex->spcont->push_cond(&$2, $5))
++ if(thd->lex->spcont->push_cond(&$2, $5))
+ MYSQL_YYABORT;
+ $$.vars= $$.hndlrs= $$.curs= 0;
+ $$.conds= 1;
+@@ -2602,7 +2587,7 @@
+
+ sp_cursor_stmt:
+ {
+- Lex->sphead->reset_lex(YYTHD);
++ Lex->sphead->reset_lex(thd);
+ }
+ select
+ {
+@@ -2618,7 +2603,7 @@
+ }
+ lex->sp_lex_in_use= TRUE;
+ $$= lex;
+- if (lex->sphead->restore_lex(YYTHD))
++ if (lex->sphead->restore_lex(thd))
+ MYSQL_YYABORT;
+ }
+ ;
+@@ -2662,7 +2647,7 @@
+ sp_cond:
+ ulong_num
+ { /* mysql errno */
+- $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t));
++ $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t));
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ $$->type= sp_cond_type_t::number;
+@@ -2675,7 +2660,7 @@
+ my_error(ER_SP_BAD_SQLSTATE, MYF(0), $3.str);
+ MYSQL_YYABORT;
+ }
+- $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t));
++ $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t));
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ $$->type= sp_cond_type_t::state;
+@@ -2705,21 +2690,21 @@
+ }
+ | SQLWARNING_SYM /* SQLSTATEs 01??? */
+ {
+- $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t));
++ $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t));
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ $$->type= sp_cond_type_t::warning;
+ }
+ | not FOUND_SYM /* SQLSTATEs 02??? */
+ {
+- $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t));
++ $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t));
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ $$->type= sp_cond_type_t::notfound;
+ }
+ | SQLEXCEPTION_SYM /* All other SQLSTATEs */
+ {
+- $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t));
++ $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t));
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ $$->type= sp_cond_type_t::exception;
+@@ -2789,7 +2774,6 @@
+
+ sp_proc_stmt_statement:
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ Lex_input_stream *lip= YYLIP;
+
+@@ -2798,7 +2782,6 @@
+ }
+ statement
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ Lex_input_stream *lip= YYLIP;
+ sp_head *sp= lex->sphead;
+@@ -2845,7 +2828,7 @@
+
+ sp_proc_stmt_return:
+ RETURN_SYM
+- { Lex->sphead->reset_lex(YYTHD); }
++ { Lex->sphead->reset_lex(thd); }
+ expr
+ {
+ LEX *lex= Lex;
+@@ -2867,7 +2850,7 @@
+ MYSQL_YYABORT;
+ sp->m_flags|= sp_head::HAS_RETURN;
+ }
+- if (sp->restore_lex(YYTHD))
++ if (sp->restore_lex(thd))
+ MYSQL_YYABORT;
+ }
+ ;
+@@ -3094,7 +3077,7 @@
+ ;
+
+ sp_if:
+- { Lex->sphead->reset_lex(YYTHD); }
++ { Lex->sphead->reset_lex(thd); }
+ expr THEN_SYM
+ {
+ LEX *lex= Lex;
+@@ -3108,7 +3091,7 @@
+ sp->add_cont_backpatch(i) ||
+ sp->add_instr(i))
+ MYSQL_YYABORT;
+- if (sp->restore_lex(YYTHD))
++ if (sp->restore_lex(thd))
+ MYSQL_YYABORT;
+ }
+ sp_proc_stmts1
+@@ -3147,7 +3130,7 @@
+ {
+ LEX *lex= Lex;
+ case_stmt_action_case(lex);
+- lex->sphead->reset_lex(YYTHD); /* For expr $3 */
++ lex->sphead->reset_lex(thd); /* For expr $3 */
+ }
+ expr
+ {
+@@ -3156,7 +3139,7 @@
+ MYSQL_YYABORT;
+
+ /* For expr $3 */
+- if (lex->sphead->restore_lex(YYTHD))
++ if (lex->sphead->restore_lex(thd))
+ MYSQL_YYABORT;
+ }
+ simple_when_clause_list
+@@ -3198,7 +3181,7 @@
+ simple_when_clause:
+ WHEN_SYM
+ {
+- Lex->sphead->reset_lex(YYTHD); /* For expr $3 */
++ Lex->sphead->reset_lex(thd); /* For expr $3 */
+ }
+ expr
+ {
+@@ -3208,7 +3191,7 @@
+ if (case_stmt_action_when(lex, $3, true))
+ MYSQL_YYABORT;
+ /* For expr $3 */
+- if (lex->sphead->restore_lex(YYTHD))
++ if (lex->sphead->restore_lex(thd))
+ MYSQL_YYABORT;
+ }
+ THEN_SYM
+@@ -3223,7 +3206,7 @@
+ searched_when_clause:
+ WHEN_SYM
+ {
+- Lex->sphead->reset_lex(YYTHD); /* For expr $3 */
++ Lex->sphead->reset_lex(thd); /* For expr $3 */
+ }
+ expr
+ {
+@@ -3231,7 +3214,7 @@
+ if (case_stmt_action_when(lex, $3, false))
+ MYSQL_YYABORT;
+ /* For expr $3 */
+- if (lex->sphead->restore_lex(YYTHD))
++ if (lex->sphead->restore_lex(thd))
+ MYSQL_YYABORT;
+ }
+ THEN_SYM
+@@ -3395,7 +3378,7 @@
+ MYSQL_YYABORT;
+ }
+ | WHILE_SYM
+- { Lex->sphead->reset_lex(YYTHD); }
++ { Lex->sphead->reset_lex(thd); }
+ expr DO_SYM
+ {
+ LEX *lex= Lex;
+@@ -3409,7 +3392,7 @@
+ sp->new_cont_backpatch(i) ||
+ sp->add_instr(i))
+ MYSQL_YYABORT;
+- if (sp->restore_lex(YYTHD))
++ if (sp->restore_lex(thd))
+ MYSQL_YYABORT;
+ }
+ sp_proc_stmts1 END WHILE_SYM
+@@ -3424,7 +3407,7 @@
+ lex->sphead->do_cont_backpatch();
+ }
+ | REPEAT_SYM sp_proc_stmts1 UNTIL_SYM
+- { Lex->sphead->reset_lex(YYTHD); }
++ { Lex->sphead->reset_lex(thd); }
+ expr END REPEAT_SYM
+ {
+ LEX *lex= Lex;
+@@ -3436,7 +3419,7 @@
+ if (i == NULL ||
+ lex->sphead->add_instr(i))
+ MYSQL_YYABORT;
+- if (lex->sphead->restore_lex(YYTHD))
++ if (lex->sphead->restore_lex(thd))
+ MYSQL_YYABORT;
+ /* We can shortcut the cont_backpatch here */
+ i->m_cont_dest= ip+1;
+@@ -3859,7 +3842,6 @@
+ create3 {}
+ | LIKE table_ident
+ {
+- THD *thd= YYTHD;
+ TABLE_LIST *src_table;
+ LEX *lex= thd->lex;
+
+@@ -3873,7 +3855,6 @@
+ }
+ | '(' LIKE table_ident ')'
+ {
+- THD *thd= YYTHD;
+ TABLE_LIST *src_table;
+ LEX *lex= thd->lex;
+
+@@ -4342,7 +4323,6 @@
+ bit_expr
+ {
+ Item *part_expr= $1;
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ Name_resolution_context *context= &lex->current_select->context;
+ TABLE_LIST *save_list= context->table_list;
+@@ -4364,7 +4344,7 @@
+ my_error(ER_PARTITION_FUNCTION_IS_NOT_ALLOWED, MYF(0));
+ MYSQL_YYABORT;
+ }
+- if (part_expr->fix_fields(YYTHD, (Item**)0) ||
++ if (part_expr->fix_fields(thd, (Item**)0) ||
+ ((context->table_list= save_list), FALSE) ||
+ (!part_expr->const_item()) ||
+ (!lex->safe_to_cache_query))
+@@ -4629,7 +4609,7 @@
+ | TYPE_SYM opt_equal storage_engines
+ {
+ Lex->create_info.db_type= $3;
+- WARN_DEPRECATED(yythd, "6.0", "TYPE=storage_engine",
++ WARN_DEPRECATED(thd, "6.0", "TYPE=storage_engine",
+ "'ENGINE=storage_engine'");
+ Lex->create_info.used_fields|= HA_CREATE_USED_ENGINE;
+ }
+@@ -4791,19 +4771,19 @@
+ storage_engines:
+ ident_or_text
+ {
+- plugin_ref plugin= ha_resolve_by_name(YYTHD, &$1);
++ plugin_ref plugin= ha_resolve_by_name(thd, &$1);
+
+ if (plugin)
+ $$= plugin_data(plugin, handlerton*);
+ else
+ {
+- if (YYTHD->variables.sql_mode & MODE_NO_ENGINE_SUBSTITUTION)
++ if (thd->variables.sql_mode & MODE_NO_ENGINE_SUBSTITUTION)
+ {
+ my_error(ER_UNKNOWN_STORAGE_ENGINE, MYF(0), $1.str);
+ MYSQL_YYABORT;
+ }
+ $$= 0;
+- push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_WARN,
++ push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
+ ER_UNKNOWN_STORAGE_ENGINE,
+ ER(ER_UNKNOWN_STORAGE_ENGINE),
+ $1.str);
+@@ -4815,7 +4795,7 @@
+ ident_or_text
+ {
+ plugin_ref plugin;
+- if ((plugin= ha_resolve_by_name(YYTHD, &$1)))
++ if ((plugin= ha_resolve_by_name(thd, &$1)))
+ $$= plugin_data(plugin, handlerton*);
+ else
+ {
+@@ -5043,7 +5023,7 @@
+ {
+ char buff[sizeof("YEAR()") + MY_INT64_NUM_DECIMAL_DIGITS + 1];
+ my_snprintf(buff, sizeof(buff), "YEAR(%lu)", length);
+- push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_NOTE,
++ push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_NOTE,
+ ER_WARN_DEPRECATED_SYNTAX,
+ ER(ER_WARN_DEPRECATED_SYNTAX),
+ buff, "YEAR(4)");
+@@ -5057,7 +5037,7 @@
+ { $$=MYSQL_TYPE_TIME; }
+ | TIMESTAMP opt_field_length
+ {
+- if (YYTHD->variables.sql_mode & MODE_MAXDB)
++ if (thd->variables.sql_mode & MODE_MAXDB)
+ $$=MYSQL_TYPE_DATETIME;
+ else
+ {
+@@ -5189,7 +5169,7 @@
+ real_type:
+ REAL
+ {
+- $$= YYTHD->variables.sql_mode & MODE_REAL_AS_FLOAT ?
++ $$= thd->variables.sql_mode & MODE_REAL_AS_FLOAT ?
+ MYSQL_TYPE_FLOAT : MYSQL_TYPE_DOUBLE;
+ }
+ | DOUBLE_SYM
+@@ -5263,7 +5243,7 @@
+ | DEFAULT now_or_signed_literal { Lex->default_value=$2; }
+ | ON UPDATE_SYM NOW_SYM optional_braces
+ {
+- Item *item= new (YYTHD->mem_root) Item_func_now_local();
++ Item *item= new (thd->mem_root) Item_func_now_local();
+ if (item == NULL)
+ MYSQL_YYABORT;
+ Lex->on_update_value= item;
+@@ -5312,7 +5292,7 @@
+ now_or_signed_literal:
+ NOW_SYM optional_braces
+ {
+- $$= new (YYTHD->mem_root) Item_func_now_local();
++ $$= new (thd->mem_root) Item_func_now_local();
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -5673,7 +5653,6 @@
+ alter:
+ ALTER opt_ignore TABLE_SYM table_ident
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ lex->name.str= 0;
+ lex->name.length= 0;
+@@ -5799,7 +5778,7 @@
+ Event_parse_data.
+ */
+
+- if (!(Lex->event_parse_data= Event_parse_data::new_instance(YYTHD)))
++ if (!(Lex->event_parse_data= Event_parse_data::new_instance(thd)))
+ MYSQL_YYABORT;
+ Lex->event_parse_data->identifier= $4;
+
+@@ -6192,7 +6171,6 @@
+ {
+ if (!$4)
+ {
+- THD *thd= YYTHD;
+ $4= thd->variables.collation_database;
+ }
+ $5= $5 ? $5 : $4;
+@@ -6556,7 +6534,7 @@
+ assign_to_keycache:
+ table_ident cache_keys_spec
+ {
+- if (!Select->add_table_to_list(YYTHD, $1, NULL, 0, TL_READ,
++ if (!Select->add_table_to_list(thd, $1, NULL, 0, TL_READ,
+ Select->pop_index_hints()))
+ MYSQL_YYABORT;
+ }
+@@ -6585,7 +6563,7 @@
+ preload_keys:
+ table_ident cache_keys_spec opt_ignore_leaves
+ {
+- if (!Select->add_table_to_list(YYTHD, $1, NULL, $3, TL_READ,
++ if (!Select->add_table_to_list(thd, $1, NULL, $3, TL_READ,
+ Select->pop_index_hints()))
+ MYSQL_YYABORT;
+ }
+@@ -6593,7 +6571,7 @@
+
+ cache_keys_spec:
+ {
+- Lex->select_lex.alloc_index_hints(YYTHD);
++ Lex->select_lex.alloc_index_hints(thd);
+ Select->set_index_hint_type(INDEX_HINT_USE,
+ global_system_variables.old_mode ?
+ INDEX_HINT_MASK_JOIN :
+@@ -6813,7 +6791,6 @@
+ | select_item
+ | '*'
+ {
+- THD *thd= YYTHD;
+ Item *item= new (thd->mem_root)
+ Item_field(&thd->lex->current_select->context,
+ NULL, NULL, "*");
+@@ -6828,7 +6805,6 @@
+ select_item:
+ remember_name select_item2 remember_end select_alias
+ {
+- THD *thd= YYTHD;
+ DBUG_ASSERT($1 < $3);
+
+ if (add_item_to_list(thd, $2))
+@@ -6929,7 +6905,7 @@
+ else
+ {
+ /* X OR Y */
+- $$ = new (YYTHD->mem_root) Item_cond_or($1, $3);
++ $$ = new (thd->mem_root) Item_cond_or($1, $3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -6937,7 +6913,7 @@
+ | expr XOR expr %prec XOR
+ {
+ /* XOR is a proprietary extension */
+- $$ = new (YYTHD->mem_root) Item_cond_xor($1, $3);
++ $$ = new (thd->mem_root) Item_cond_xor($1, $3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -6979,50 +6955,50 @@
+ else
+ {
+ /* X AND Y */
+- $$ = new (YYTHD->mem_root) Item_cond_and($1, $3);
++ $$ = new (thd->mem_root) Item_cond_and($1, $3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ }
+ | NOT_SYM expr %prec NOT_SYM
+ {
+- $$= negate_expression(YYTHD, $2);
++ $$= negate_expression(thd, $2);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | bool_pri IS TRUE_SYM %prec IS
+ {
+- $$= new (YYTHD->mem_root) Item_func_istrue($1);
++ $$= new (thd->mem_root) Item_func_istrue($1);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | bool_pri IS not TRUE_SYM %prec IS
+ {
+- $$= new (YYTHD->mem_root) Item_func_isnottrue($1);
++ $$= new (thd->mem_root) Item_func_isnottrue($1);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | bool_pri IS FALSE_SYM %prec IS
+ {
+- $$= new (YYTHD->mem_root) Item_func_isfalse($1);
++ $$= new (thd->mem_root) Item_func_isfalse($1);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | bool_pri IS not FALSE_SYM %prec IS
+ {
+- $$= new (YYTHD->mem_root) Item_func_isnotfalse($1);
++ $$= new (thd->mem_root) Item_func_isnotfalse($1);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | bool_pri IS UNKNOWN_SYM %prec IS
+ {
+- $$= new (YYTHD->mem_root) Item_func_isnull($1);
++ $$= new (thd->mem_root) Item_func_isnull($1);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | bool_pri IS not UNKNOWN_SYM %prec IS
+ {
+- $$= new (YYTHD->mem_root) Item_func_isnotnull($1);
++ $$= new (thd->mem_root) Item_func_isnotnull($1);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -7032,19 +7008,19 @@
+ bool_pri:
+ bool_pri IS NULL_SYM %prec IS
+ {
+- $$= new (YYTHD->mem_root) Item_func_isnull($1);
++ $$= new (thd->mem_root) Item_func_isnull($1);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | bool_pri IS not NULL_SYM %prec IS
+ {
+- $$= new (YYTHD->mem_root) Item_func_isnotnull($1);
++ $$= new (thd->mem_root) Item_func_isnotnull($1);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | bool_pri EQUAL_SYM predicate %prec EQUAL_SYM
+ {
+- $$= new (YYTHD->mem_root) Item_func_equal($1,$3);
++ $$= new (thd->mem_root) Item_func_equal($1,$3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -7066,13 +7042,12 @@
+ predicate:
+ bit_expr IN_SYM '(' subselect ')'
+ {
+- $$= new (YYTHD->mem_root) Item_in_subselect($1, $4);
++ $$= new (thd->mem_root) Item_in_subselect($1, $4);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | bit_expr not IN_SYM '(' subselect ')'
+ {
+- THD *thd= YYTHD;
+ Item *item= new (thd->mem_root) Item_in_subselect($1, $5);
+ if (item == NULL)
+ MYSQL_YYABORT;
+@@ -7082,7 +7057,7 @@
+ }
+ | bit_expr IN_SYM '(' expr ')'
+ {
+- $$= handle_sql2003_note184_exception(YYTHD, $1, true, $4);
++ $$= handle_sql2003_note184_exception(thd, $1, true, $4);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -7090,13 +7065,13 @@
+ {
+ $6->push_front($4);
+ $6->push_front($1);
+- $$= new (YYTHD->mem_root) Item_func_in(*$6);
++ $$= new (thd->mem_root) Item_func_in(*$6);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | bit_expr not IN_SYM '(' expr ')'
+ {
+- $$= handle_sql2003_note184_exception(YYTHD, $1, false, $5);
++ $$= handle_sql2003_note184_exception(thd, $1, false, $5);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -7104,7 +7079,7 @@
+ {
+ $7->push_front($5);
+ $7->push_front($1);
+- Item_func_in *item = new (YYTHD->mem_root) Item_func_in(*$7);
++ Item_func_in *item = new (thd->mem_root) Item_func_in(*$7);
+ if (item == NULL)
+ MYSQL_YYABORT;
+ item->negate();
+@@ -7112,14 +7087,14 @@
+ }
+ | bit_expr BETWEEN_SYM bit_expr AND_SYM predicate
+ {
+- $$= new (YYTHD->mem_root) Item_func_between($1,$3,$5);
++ $$= new (thd->mem_root) Item_func_between($1,$3,$5);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | bit_expr not BETWEEN_SYM bit_expr AND_SYM predicate
+ {
+ Item_func_between *item;
+- item= new (YYTHD->mem_root) Item_func_between($1,$4,$6);
++ item= new (thd->mem_root) Item_func_between($1,$4,$6);
+ if (item == NULL)
+ MYSQL_YYABORT;
+ item->negate();
+@@ -7127,42 +7102,42 @@
+ }
+ | bit_expr SOUNDS_SYM LIKE bit_expr
+ {
+- Item *item1= new (YYTHD->mem_root) Item_func_soundex($1);
+- Item *item4= new (YYTHD->mem_root) Item_func_soundex($4);
++ Item *item1= new (thd->mem_root) Item_func_soundex($1);
++ Item *item4= new (thd->mem_root) Item_func_soundex($4);
+ if ((item1 == NULL) || (item4 == NULL))
+ MYSQL_YYABORT;
+- $$= new (YYTHD->mem_root) Item_func_eq(item1, item4);
++ $$= new (thd->mem_root) Item_func_eq(item1, item4);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | bit_expr LIKE simple_expr opt_escape
+ {
+- $$= new (YYTHD->mem_root) Item_func_like($1,$3,$4,Lex->escape_used);
++ $$= new (thd->mem_root) Item_func_like($1,$3,$4,Lex->escape_used);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | bit_expr not LIKE simple_expr opt_escape
+ {
+- Item *item= new (YYTHD->mem_root) Item_func_like($1,$4,$5,
++ Item *item= new (thd->mem_root) Item_func_like($1,$4,$5,
+ Lex->escape_used);
+ if (item == NULL)
+ MYSQL_YYABORT;
+- $$= new (YYTHD->mem_root) Item_func_not(item);
++ $$= new (thd->mem_root) Item_func_not(item);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | bit_expr REGEXP bit_expr
+ {
+- $$= new (YYTHD->mem_root) Item_func_regex($1,$3);
++ $$= new (thd->mem_root) Item_func_regex($1,$3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | bit_expr not REGEXP bit_expr
+ {
+- Item *item= new (YYTHD->mem_root) Item_func_regex($1,$4);
++ Item *item= new (thd->mem_root) Item_func_regex($1,$4);
+ if (item == NULL)
+ MYSQL_YYABORT;
+- $$= negate_expression(YYTHD, item);
++ $$= negate_expression(thd, item);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -7172,85 +7147,85 @@
+ bit_expr:
+ bit_expr '|' bit_expr %prec '|'
+ {
+- $$= new (YYTHD->mem_root) Item_func_bit_or($1,$3);
++ $$= new (thd->mem_root) Item_func_bit_or($1,$3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | bit_expr '&' bit_expr %prec '&'
+ {
+- $$= new (YYTHD->mem_root) Item_func_bit_and($1,$3);
++ $$= new (thd->mem_root) Item_func_bit_and($1,$3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | bit_expr SHIFT_LEFT bit_expr %prec SHIFT_LEFT
+ {
+- $$= new (YYTHD->mem_root) Item_func_shift_left($1,$3);
++ $$= new (thd->mem_root) Item_func_shift_left($1,$3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | bit_expr SHIFT_RIGHT bit_expr %prec SHIFT_RIGHT
+ {
+- $$= new (YYTHD->mem_root) Item_func_shift_right($1,$3);
++ $$= new (thd->mem_root) Item_func_shift_right($1,$3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | bit_expr '+' bit_expr %prec '+'
+ {
+- $$= new (YYTHD->mem_root) Item_func_plus($1,$3);
++ $$= new (thd->mem_root) Item_func_plus($1,$3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | bit_expr '-' bit_expr %prec '-'
+ {
+- $$= new (YYTHD->mem_root) Item_func_minus($1,$3);
++ $$= new (thd->mem_root) Item_func_minus($1,$3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | bit_expr '+' INTERVAL_SYM expr interval %prec '+'
+ {
+- $$= new (YYTHD->mem_root) Item_date_add_interval($1,$4,$5,0);
++ $$= new (thd->mem_root) Item_date_add_interval($1,$4,$5,0);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | bit_expr '-' INTERVAL_SYM expr interval %prec '-'
+ {
+- $$= new (YYTHD->mem_root) Item_date_add_interval($1,$4,$5,1);
++ $$= new (thd->mem_root) Item_date_add_interval($1,$4,$5,1);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | bit_expr '*' bit_expr %prec '*'
+ {
+- $$= new (YYTHD->mem_root) Item_func_mul($1,$3);
++ $$= new (thd->mem_root) Item_func_mul($1,$3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | bit_expr '/' bit_expr %prec '/'
+ {
+- $$= new (YYTHD->mem_root) Item_func_div($1,$3);
++ $$= new (thd->mem_root) Item_func_div($1,$3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | bit_expr '%' bit_expr %prec '%'
+ {
+- $$= new (YYTHD->mem_root) Item_func_mod($1,$3);
++ $$= new (thd->mem_root) Item_func_mod($1,$3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | bit_expr DIV_SYM bit_expr %prec DIV_SYM
+ {
+- $$= new (YYTHD->mem_root) Item_func_int_div($1,$3);
++ $$= new (thd->mem_root) Item_func_int_div($1,$3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | bit_expr MOD_SYM bit_expr %prec MOD_SYM
+ {
+- $$= new (YYTHD->mem_root) Item_func_mod($1,$3);
++ $$= new (thd->mem_root) Item_func_mod($1,$3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | bit_expr '^' bit_expr
+ {
+- $$= new (YYTHD->mem_root) Item_func_bit_xor($1,$3);
++ $$= new (thd->mem_root) Item_func_bit_xor($1,$3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -7299,7 +7274,6 @@
+ | function_call_conflict
+ | simple_expr COLLATE_SYM ident_or_text %prec NEG
+ {
+- THD *thd= YYTHD;
+ Item *i1= new (thd->mem_root) Item_string($3.str,
+ $3.length,
+ thd->charset());
+@@ -7315,7 +7289,7 @@
+ | sum_expr
+ | simple_expr OR_OR_SYM simple_expr
+ {
+- $$= new (YYTHD->mem_root) Item_func_concat($1, $3);
++ $$= new (thd->mem_root) Item_func_concat($1, $3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -7325,25 +7299,25 @@
+ }
+ | '-' simple_expr %prec NEG
+ {
+- $$= new (YYTHD->mem_root) Item_func_neg($2);
++ $$= new (thd->mem_root) Item_func_neg($2);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | '~' simple_expr %prec NEG
+ {
+- $$= new (YYTHD->mem_root) Item_func_bit_neg($2);
++ $$= new (thd->mem_root) Item_func_bit_neg($2);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | not2 simple_expr %prec NEG
+ {
+- $$= negate_expression(YYTHD, $2);
++ $$= negate_expression(thd, $2);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | '(' subselect ')'
+ {
+- $$= new (YYTHD->mem_root) Item_singlerow_subselect($2);
++ $$= new (thd->mem_root) Item_singlerow_subselect($2);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -7352,20 +7326,20 @@
+ | '(' expr ',' expr_list ')'
+ {
+ $4->push_front($2);
+- $$= new (YYTHD->mem_root) Item_row(*$4);
++ $$= new (thd->mem_root) Item_row(*$4);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | ROW_SYM '(' expr ',' expr_list ')'
+ {
+ $5->push_front($3);
+- $$= new (YYTHD->mem_root) Item_row(*$5);
++ $$= new (thd->mem_root) Item_row(*$5);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | EXISTS '(' subselect ')'
+ {
+- $$= new (YYTHD->mem_root) Item_exists_subselect($3);
++ $$= new (thd->mem_root) Item_exists_subselect($3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -7374,7 +7348,7 @@
+ | MATCH ident_list_arg AGAINST '(' bit_expr fulltext_options ')'
+ {
+ $2->push_front($5);
+- Item_func_match *i1= new (YYTHD->mem_root) Item_func_match(*$2, $6);
++ Item_func_match *i1= new (thd->mem_root) Item_func_match(*$2, $6);
+ if (i1 == NULL)
+ MYSQL_YYABORT;
+ Select->add_ftfunc_to_list(i1);
+@@ -7382,7 +7356,7 @@
+ }
+ | BINARY simple_expr %prec NEG
+ {
+- $$= create_func_cast(YYTHD, $2, ITEM_CAST_CHAR, NULL, NULL,
++ $$= create_func_cast(thd, $2, ITEM_CAST_CHAR, NULL, NULL,
+ &my_charset_bin);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+@@ -7390,27 +7364,27 @@
+ | CAST_SYM '(' expr AS cast_type ')'
+ {
+ LEX *lex= Lex;
+- $$= create_func_cast(YYTHD, $3, $5, lex->length, lex->dec,
++ $$= create_func_cast(thd, $3, $5, lex->length, lex->dec,
+ lex->charset);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | CASE_SYM opt_expr when_list opt_else END
+ {
+- $$= new (YYTHD->mem_root) Item_func_case(* $3, $2, $4 );
++ $$= new (thd->mem_root) Item_func_case(* $3, $2, $4 );
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | CONVERT_SYM '(' expr ',' cast_type ')'
+ {
+- $$= create_func_cast(YYTHD, $3, $5, Lex->length, Lex->dec,
++ $$= create_func_cast(thd, $3, $5, Lex->length, Lex->dec,
+ Lex->charset);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | CONVERT_SYM '(' expr USING charset_name ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_conv_charset($3,$5);
++ $$= new (thd->mem_root) Item_func_conv_charset($3,$5);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -7423,14 +7397,14 @@
+ my_error(ER_WRONG_COLUMN_NAME, MYF(0), il->my_name()->str);
+ MYSQL_YYABORT;
+ }
+- $$= new (YYTHD->mem_root) Item_default_value(Lex->current_context(),
++ $$= new (thd->mem_root) Item_default_value(Lex->current_context(),
+ $3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | VALUES '(' simple_ident_nospvar ')'
+ {
+- $$= new (YYTHD->mem_root) Item_insert_value(Lex->current_context(),
++ $$= new (thd->mem_root) Item_insert_value(Lex->current_context(),
+ $3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+@@ -7438,7 +7412,7 @@
+ | INTERVAL_SYM expr interval '+' expr %prec INTERVAL_SYM
+ /* we cannot put interval before - */
+ {
+- $$= new (YYTHD->mem_root) Item_date_add_interval($5,$2,$3,0);
++ $$= new (thd->mem_root) Item_date_add_interval($5,$2,$3,0);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -7453,19 +7427,19 @@
+ function_call_keyword:
+ CHAR_SYM '(' expr_list ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_char(*$3);
++ $$= new (thd->mem_root) Item_func_char(*$3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | CHAR_SYM '(' expr_list USING charset_name ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_char(*$3, $5);
++ $$= new (thd->mem_root) Item_func_char(*$3, $5);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | CURRENT_USER optional_braces
+ {
+- $$= new (YYTHD->mem_root) Item_func_current_user(Lex->current_context());
++ $$= new (thd->mem_root) Item_func_current_user(Lex->current_context());
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ Lex->set_stmt_unsafe();
+@@ -7473,31 +7447,30 @@
+ }
+ | DATE_SYM '(' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_date_typecast($3);
++ $$= new (thd->mem_root) Item_date_typecast($3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | DAY_SYM '(' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_dayofmonth($3);
++ $$= new (thd->mem_root) Item_func_dayofmonth($3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | HOUR_SYM '(' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_hour($3);
++ $$= new (thd->mem_root) Item_func_hour($3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | INSERT '(' expr ',' expr ',' expr ',' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_insert($3,$5,$7,$9);
++ $$= new (thd->mem_root) Item_func_insert($3,$5,$7,$9);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | INTERVAL_SYM '(' expr ',' expr ')' %prec INTERVAL_SYM
+ {
+- THD *thd= YYTHD;
+ List<Item> *list= new (thd->mem_root) List<Item>;
+ if (list == NULL)
+ MYSQL_YYABORT;
+@@ -7512,7 +7485,6 @@
+ }
+ | INTERVAL_SYM '(' expr ',' expr ',' expr_list ')' %prec INTERVAL_SYM
+ {
+- THD *thd= YYTHD;
+ $7->push_front($5);
+ $7->push_front($3);
+ Item_row *item= new (thd->mem_root) Item_row(*$7);
+@@ -7524,103 +7496,103 @@
+ }
+ | LEFT '(' expr ',' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_left($3,$5);
++ $$= new (thd->mem_root) Item_func_left($3,$5);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | MINUTE_SYM '(' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_minute($3);
++ $$= new (thd->mem_root) Item_func_minute($3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | MONTH_SYM '(' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_month($3);
++ $$= new (thd->mem_root) Item_func_month($3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | RIGHT '(' expr ',' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_right($3,$5);
++ $$= new (thd->mem_root) Item_func_right($3,$5);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | SECOND_SYM '(' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_second($3);
++ $$= new (thd->mem_root) Item_func_second($3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | TIME_SYM '(' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_time_typecast($3);
++ $$= new (thd->mem_root) Item_time_typecast($3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | TIMESTAMP '(' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_datetime_typecast($3);
++ $$= new (thd->mem_root) Item_datetime_typecast($3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | TIMESTAMP '(' expr ',' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_add_time($3, $5, 1, 0);
++ $$= new (thd->mem_root) Item_func_add_time($3, $5, 1, 0);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | TRIM '(' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_trim($3);
++ $$= new (thd->mem_root) Item_func_trim($3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | TRIM '(' LEADING expr FROM expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_ltrim($6,$4);
++ $$= new (thd->mem_root) Item_func_ltrim($6,$4);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | TRIM '(' TRAILING expr FROM expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_rtrim($6,$4);
++ $$= new (thd->mem_root) Item_func_rtrim($6,$4);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | TRIM '(' BOTH expr FROM expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_trim($6,$4);
++ $$= new (thd->mem_root) Item_func_trim($6,$4);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | TRIM '(' LEADING FROM expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_ltrim($5);
++ $$= new (thd->mem_root) Item_func_ltrim($5);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | TRIM '(' TRAILING FROM expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_rtrim($5);
++ $$= new (thd->mem_root) Item_func_rtrim($5);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | TRIM '(' BOTH FROM expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_trim($5);
++ $$= new (thd->mem_root) Item_func_trim($5);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | TRIM '(' expr FROM expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_trim($5,$3);
++ $$= new (thd->mem_root) Item_func_trim($5,$3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | USER '(' ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_user();
++ $$= new (thd->mem_root) Item_func_user();
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ Lex->set_stmt_unsafe();
+@@ -7628,7 +7600,7 @@
+ }
+ | YEAR_SYM '(' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_year($3);
++ $$= new (thd->mem_root) Item_func_year($3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -7649,34 +7621,34 @@
+ function_call_nonkeyword:
+ ADDDATE_SYM '(' expr ',' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_date_add_interval($3, $5,
++ $$= new (thd->mem_root) Item_date_add_interval($3, $5,
+ INTERVAL_DAY, 0);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | ADDDATE_SYM '(' expr ',' INTERVAL_SYM expr interval ')'
+ {
+- $$= new (YYTHD->mem_root) Item_date_add_interval($3, $6, $7, 0);
++ $$= new (thd->mem_root) Item_date_add_interval($3, $6, $7, 0);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | CURDATE optional_braces
+ {
+- $$= new (YYTHD->mem_root) Item_func_curdate_local();
++ $$= new (thd->mem_root) Item_func_curdate_local();
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ Lex->safe_to_cache_query=0;
+ }
+ | CURTIME optional_braces
+ {
+- $$= new (YYTHD->mem_root) Item_func_curtime_local();
++ $$= new (thd->mem_root) Item_func_curtime_local();
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ Lex->safe_to_cache_query=0;
+ }
+ | CURTIME '(' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_curtime_local($3);
++ $$= new (thd->mem_root) Item_func_curtime_local($3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ Lex->safe_to_cache_query=0;
+@@ -7684,83 +7656,83 @@
+ | DATE_ADD_INTERVAL '(' expr ',' INTERVAL_SYM expr interval ')'
+ %prec INTERVAL_SYM
+ {
+- $$= new (YYTHD->mem_root) Item_date_add_interval($3,$6,$7,0);
++ $$= new (thd->mem_root) Item_date_add_interval($3,$6,$7,0);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | DATE_SUB_INTERVAL '(' expr ',' INTERVAL_SYM expr interval ')'
+ %prec INTERVAL_SYM
+ {
+- $$= new (YYTHD->mem_root) Item_date_add_interval($3,$6,$7,1);
++ $$= new (thd->mem_root) Item_date_add_interval($3,$6,$7,1);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | EXTRACT_SYM '(' interval FROM expr ')'
+ {
+- $$=new (YYTHD->mem_root) Item_extract( $3, $5);
++ $$=new (thd->mem_root) Item_extract( $3, $5);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | GET_FORMAT '(' date_time_type ',' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_get_format($3, $5);
++ $$= new (thd->mem_root) Item_func_get_format($3, $5);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | NOW_SYM optional_braces
+ {
+- $$= new (YYTHD->mem_root) Item_func_now_local();
++ $$= new (thd->mem_root) Item_func_now_local();
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ Lex->safe_to_cache_query=0;
+ }
+ | NOW_SYM '(' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_now_local($3);
++ $$= new (thd->mem_root) Item_func_now_local($3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ Lex->safe_to_cache_query=0;
+ }
+ | POSITION_SYM '(' bit_expr IN_SYM expr ')'
+ {
+- $$ = new (YYTHD->mem_root) Item_func_locate($5,$3);
++ $$ = new (thd->mem_root) Item_func_locate($5,$3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | SUBDATE_SYM '(' expr ',' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_date_add_interval($3, $5,
++ $$= new (thd->mem_root) Item_date_add_interval($3, $5,
+ INTERVAL_DAY, 1);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | SUBDATE_SYM '(' expr ',' INTERVAL_SYM expr interval ')'
+ {
+- $$= new (YYTHD->mem_root) Item_date_add_interval($3, $6, $7, 1);
++ $$= new (thd->mem_root) Item_date_add_interval($3, $6, $7, 1);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | SUBSTRING '(' expr ',' expr ',' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_substr($3,$5,$7);
++ $$= new (thd->mem_root) Item_func_substr($3,$5,$7);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | SUBSTRING '(' expr ',' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_substr($3,$5);
++ $$= new (thd->mem_root) Item_func_substr($3,$5);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | SUBSTRING '(' expr FROM expr FOR_SYM expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_substr($3,$5,$7);
++ $$= new (thd->mem_root) Item_func_substr($3,$5,$7);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | SUBSTRING '(' expr FROM expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_substr($3,$5);
++ $$= new (thd->mem_root) Item_func_substr($3,$5);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -7775,9 +7747,9 @@
+ */
+ Lex->set_stmt_unsafe();
+ if (global_system_variables.sysdate_is_now == 0)
+- $$= new (YYTHD->mem_root) Item_func_sysdate_local();
++ $$= new (thd->mem_root) Item_func_sysdate_local();
+ else
+- $$= new (YYTHD->mem_root) Item_func_now_local();
++ $$= new (thd->mem_root) Item_func_now_local();
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ Lex->safe_to_cache_query=0;
+@@ -7785,42 +7757,42 @@
+ | SYSDATE '(' expr ')'
+ {
+ if (global_system_variables.sysdate_is_now == 0)
+- $$= new (YYTHD->mem_root) Item_func_sysdate_local($3);
++ $$= new (thd->mem_root) Item_func_sysdate_local($3);
+ else
+- $$= new (YYTHD->mem_root) Item_func_now_local($3);
++ $$= new (thd->mem_root) Item_func_now_local($3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ Lex->safe_to_cache_query=0;
+ }
+ | TIMESTAMP_ADD '(' interval_time_stamp ',' expr ',' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_date_add_interval($7,$5,$3,0);
++ $$= new (thd->mem_root) Item_date_add_interval($7,$5,$3,0);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | TIMESTAMP_DIFF '(' interval_time_stamp ',' expr ',' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_timestamp_diff($5,$7,$3);
++ $$= new (thd->mem_root) Item_func_timestamp_diff($5,$7,$3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | UTC_DATE_SYM optional_braces
+ {
+- $$= new (YYTHD->mem_root) Item_func_curdate_utc();
++ $$= new (thd->mem_root) Item_func_curdate_utc();
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ Lex->safe_to_cache_query=0;
+ }
+ | UTC_TIME_SYM optional_braces
+ {
+- $$= new (YYTHD->mem_root) Item_func_curtime_utc();
++ $$= new (thd->mem_root) Item_func_curtime_utc();
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ Lex->safe_to_cache_query=0;
+ }
+ | UTC_TIMESTAMP_SYM optional_braces
+ {
+- $$= new (YYTHD->mem_root) Item_func_now_utc();
++ $$= new (thd->mem_root) Item_func_now_utc();
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ Lex->safe_to_cache_query=0;
+@@ -7835,62 +7807,61 @@
+ function_call_conflict:
+ ASCII_SYM '(' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_ascii($3);
++ $$= new (thd->mem_root) Item_func_ascii($3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | CHARSET '(' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_charset($3);
++ $$= new (thd->mem_root) Item_func_charset($3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | COALESCE '(' expr_list ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_coalesce(* $3);
++ $$= new (thd->mem_root) Item_func_coalesce(* $3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | COLLATION_SYM '(' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_collation($3);
++ $$= new (thd->mem_root) Item_func_collation($3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | DATABASE '(' ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_database();
++ $$= new (thd->mem_root) Item_func_database();
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ Lex->safe_to_cache_query=0;
+ }
+ | IF '(' expr ',' expr ',' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_if($3,$5,$7);
++ $$= new (thd->mem_root) Item_func_if($3,$5,$7);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | MICROSECOND_SYM '(' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_microsecond($3);
++ $$= new (thd->mem_root) Item_func_microsecond($3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | MOD_SYM '(' expr ',' expr ')'
+ {
+- $$ = new (YYTHD->mem_root) Item_func_mod($3, $5);
++ $$ = new (thd->mem_root) Item_func_mod($3, $5);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | OLD_PASSWORD '(' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_old_password($3);
++ $$= new (thd->mem_root) Item_func_old_password($3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | PASSWORD '(' expr ')'
+ {
+- THD *thd= YYTHD;
+ Item* i1;
+ if (thd->variables.old_passwords)
+ i1= new (thd->mem_root) Item_func_old_password($3);
+@@ -7902,31 +7873,30 @@
+ }
+ | QUARTER_SYM '(' expr ')'
+ {
+- $$ = new (YYTHD->mem_root) Item_func_quarter($3);
++ $$ = new (thd->mem_root) Item_func_quarter($3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | REPEAT_SYM '(' expr ',' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_repeat($3,$5);
++ $$= new (thd->mem_root) Item_func_repeat($3,$5);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | REPLACE '(' expr ',' expr ',' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_replace($3,$5,$7);
++ $$= new (thd->mem_root) Item_func_replace($3,$5,$7);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | TRUNCATE_SYM '(' expr ',' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_round($3,$5,1);
++ $$= new (thd->mem_root) Item_func_round($3,$5,1);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | WEEK_SYM '(' expr ')'
+ {
+- THD *thd= YYTHD;
+ Item *i1= new (thd->mem_root) Item_int((char*) "0",
+ thd->variables.default_week_format,
+ 1);
+@@ -7938,7 +7908,7 @@
+ }
+ | WEEK_SYM '(' expr ',' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_week($3,$5);
++ $$= new (thd->mem_root) Item_func_week($3,$5);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -7960,52 +7930,52 @@
+ geometry_function:
+ CONTAINS_SYM '(' expr ',' expr ')'
+ {
+- $$= GEOM_NEW(YYTHD,
++ $$= GEOM_NEW(thd,
+ Item_func_spatial_rel($3, $5,
+ Item_func::SP_CONTAINS_FUNC));
+ }
+ | GEOMETRYCOLLECTION '(' expr_list ')'
+ {
+- $$= GEOM_NEW(YYTHD,
++ $$= GEOM_NEW(thd,
+ Item_func_spatial_collection(* $3,
+ Geometry::wkb_geometrycollection,
+ Geometry::wkb_point));
+ }
+ | LINESTRING '(' expr_list ')'
+ {
+- $$= GEOM_NEW(YYTHD,
++ $$= GEOM_NEW(thd,
+ Item_func_spatial_collection(* $3,
+ Geometry::wkb_linestring,
+ Geometry::wkb_point));
+ }
+ | MULTILINESTRING '(' expr_list ')'
+ {
+- $$= GEOM_NEW(YYTHD,
++ $$= GEOM_NEW(thd,
+ Item_func_spatial_collection(* $3,
+ Geometry::wkb_multilinestring,
+ Geometry::wkb_linestring));
+ }
+ | MULTIPOINT '(' expr_list ')'
+ {
+- $$= GEOM_NEW(YYTHD,
++ $$= GEOM_NEW(thd,
+ Item_func_spatial_collection(* $3,
+ Geometry::wkb_multipoint,
+ Geometry::wkb_point));
+ }
+ | MULTIPOLYGON '(' expr_list ')'
+ {
+- $$= GEOM_NEW(YYTHD,
++ $$= GEOM_NEW(thd,
+ Item_func_spatial_collection(* $3,
+ Geometry::wkb_multipolygon,
+ Geometry::wkb_polygon));
+ }
+ | POINT_SYM '(' expr ',' expr ')'
+ {
+- $$= GEOM_NEW(YYTHD, Item_func_point($3,$5));
++ $$= GEOM_NEW(thd, Item_func_point($3,$5));
+ }
+ | POLYGON '(' expr_list ')'
+ {
+- $$= GEOM_NEW(YYTHD,
++ $$= GEOM_NEW(thd,
+ Item_func_spatial_collection(* $3,
+ Geometry::wkb_polygon,
+ Geometry::wkb_linestring));
+@@ -8043,7 +8013,6 @@
+ }
+ opt_udf_expr_list ')'
+ {
+- THD *thd= YYTHD;
+ Create_func *builder;
+ Item *item= NULL;
+
+@@ -8097,7 +8066,6 @@
+ }
+ | ident '.' ident '(' opt_expr_list ')'
+ {
+- THD *thd= YYTHD;
+ Create_qfunc *builder;
+ Item *item= NULL;
+
+@@ -8161,7 +8129,7 @@
+ udf_expr_list:
+ udf_expr
+ {
+- $$= new (YYTHD->mem_root) List<Item>;
++ $$= new (thd->mem_root) List<Item>;
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ $$->push_back($1);
+@@ -8194,7 +8162,7 @@
+ remember_name we may get quoted or escaped names.
+ */
+ else if ($2->type() != Item::FIELD_ITEM)
+- $2->set_name($1, (uint) ($3 - $1), YYTHD->charset());
++ $2->set_name($1, (uint) ($3 - $1), thd->charset());
+ $$= $2;
+ }
+ ;
+@@ -8202,46 +8170,46 @@
+ sum_expr:
+ AVG_SYM '(' in_sum_expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_sum_avg($3);
++ $$= new (thd->mem_root) Item_sum_avg($3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | AVG_SYM '(' DISTINCT in_sum_expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_sum_avg_distinct($4);
++ $$= new (thd->mem_root) Item_sum_avg_distinct($4);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | BIT_AND '(' in_sum_expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_sum_and($3);
++ $$= new (thd->mem_root) Item_sum_and($3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | BIT_OR '(' in_sum_expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_sum_or($3);
++ $$= new (thd->mem_root) Item_sum_or($3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | BIT_XOR '(' in_sum_expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_sum_xor($3);
++ $$= new (thd->mem_root) Item_sum_xor($3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | COUNT_SYM '(' opt_all '*' ')'
+ {
+- Item *item= new (YYTHD->mem_root) Item_int((int32) 0L,1);
++ Item *item= new (thd->mem_root) Item_int((int32) 0L,1);
+ if (item == NULL)
+ MYSQL_YYABORT;
+- $$= new (YYTHD->mem_root) Item_sum_count(item);
++ $$= new (thd->mem_root) Item_sum_count(item);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | COUNT_SYM '(' in_sum_expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_sum_count($3);
++ $$= new (thd->mem_root) Item_sum_count($3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -8251,13 +8219,13 @@
+ { Select->in_sum_expr--; }
+ ')'
+ {
+- $$= new (YYTHD->mem_root) Item_sum_count_distinct(* $5);
++ $$= new (thd->mem_root) Item_sum_count_distinct(* $5);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | MIN_SYM '(' in_sum_expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_sum_min($3);
++ $$= new (thd->mem_root) Item_sum_min($3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -8268,55 +8236,55 @@
+ */
+ | MIN_SYM '(' DISTINCT in_sum_expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_sum_min($4);
++ $$= new (thd->mem_root) Item_sum_min($4);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | MAX_SYM '(' in_sum_expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_sum_max($3);
++ $$= new (thd->mem_root) Item_sum_max($3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | MAX_SYM '(' DISTINCT in_sum_expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_sum_max($4);
++ $$= new (thd->mem_root) Item_sum_max($4);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | STD_SYM '(' in_sum_expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_sum_std($3, 0);
++ $$= new (thd->mem_root) Item_sum_std($3, 0);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | VARIANCE_SYM '(' in_sum_expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_sum_variance($3, 0);
++ $$= new (thd->mem_root) Item_sum_variance($3, 0);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | STDDEV_SAMP_SYM '(' in_sum_expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_sum_std($3, 1);
++ $$= new (thd->mem_root) Item_sum_std($3, 1);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | VAR_SAMP_SYM '(' in_sum_expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_sum_variance($3, 1);
++ $$= new (thd->mem_root) Item_sum_variance($3, 1);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | SUM_SYM '(' in_sum_expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_sum_sum($3);
++ $$= new (thd->mem_root) Item_sum_sum($3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | SUM_SYM '(' DISTINCT in_sum_expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_sum_sum_distinct($4);
++ $$= new (thd->mem_root) Item_sum_sum_distinct($4);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -8328,7 +8296,7 @@
+ {
+ SELECT_LEX *sel= Select;
+ sel->in_sum_expr--;
+- $$= new (YYTHD->mem_root)
++ $$= new (thd->mem_root)
+ Item_func_group_concat(Lex->current_context(), $3, $5,
+ sel->gorder_list, $7);
+ if ($$ == NULL)
+@@ -8357,7 +8325,7 @@
+ ident_or_text SET_VAR expr
+ {
+ Item_func_set_user_var *item;
+- $$= item= new (YYTHD->mem_root) Item_func_set_user_var($1, $3);
++ $$= item= new (thd->mem_root) Item_func_set_user_var($1, $3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ LEX *lex= Lex;
+@@ -8366,7 +8334,7 @@
+ }
+ | ident_or_text
+ {
+- $$= new (YYTHD->mem_root) Item_func_get_user_var($1);
++ $$= new (thd->mem_root) Item_func_get_user_var($1);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ LEX *lex= Lex;
+@@ -8380,7 +8348,7 @@
+ my_parse_error(ER(ER_SYNTAX_ERROR));
+ MYSQL_YYABORT;
+ }
+- if (!($$= get_system_var(YYTHD, $2, $3, $4)))
++ if (!($$= get_system_var(thd, $2, $3, $4)))
+ MYSQL_YYABORT;
+ if (!((Item_func_get_system_var*) $$)->is_written_to_binlog())
+ Lex->set_stmt_unsafe();
+@@ -8395,7 +8363,7 @@
+ opt_gconcat_separator:
+ /* empty */
+ {
+- $$= new (YYTHD->mem_root) String(",", 1, &my_charset_latin1);
++ $$= new (thd->mem_root) String(",", 1, &my_charset_latin1);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -8422,9 +8390,9 @@
+
+ gorder_list:
+ gorder_list ',' order_ident order_dir
+- { if (add_gorder_to_list(YYTHD, $3,(bool) $4)) MYSQL_YYABORT; }
++ { if (add_gorder_to_list(thd, $3,(bool) $4)) MYSQL_YYABORT; }
+ | order_ident order_dir
+- { if (add_gorder_to_list(YYTHD, $1,(bool) $2)) MYSQL_YYABORT; }
++ { if (add_gorder_to_list(thd, $1,(bool) $2)) MYSQL_YYABORT; }
+ ;
+
+ in_sum_expr:
+@@ -8477,7 +8445,7 @@
+ expr_list:
+ expr
+ {
+- $$= new (YYTHD->mem_root) List<Item>;
++ $$= new (thd->mem_root) List<Item>;
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ $$->push_back($1);
+@@ -8497,7 +8465,7 @@
+ ident_list:
+ simple_ident
+ {
+- $$= new (YYTHD->mem_root) List<Item>;
++ $$= new (thd->mem_root) List<Item>;
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ $$->push_back($1);
+@@ -8595,7 +8563,7 @@
+ {
+ MYSQL_YYABORT_UNLESS($1 && $3);
+ /* Change the current name resolution context to a local context. */
+- if (push_new_name_resolution_context(YYTHD, $1, $3))
++ if (push_new_name_resolution_context(thd, $1, $3))
+ MYSQL_YYABORT;
+ Select->parsing_place= IN_ON;
+ }
+@@ -8610,7 +8578,7 @@
+ {
+ MYSQL_YYABORT_UNLESS($1 && $3);
+ /* Change the current name resolution context to a local context. */
+- if (push_new_name_resolution_context(YYTHD, $1, $3))
++ if (push_new_name_resolution_context(thd, $1, $3))
+ MYSQL_YYABORT;
+ Select->parsing_place= IN_ON;
+ }
+@@ -8640,7 +8608,7 @@
+ {
+ MYSQL_YYABORT_UNLESS($1 && $5);
+ /* Change the current name resolution context to a local context. */
+- if (push_new_name_resolution_context(YYTHD, $1, $5))
++ if (push_new_name_resolution_context(thd, $1, $5))
+ MYSQL_YYABORT;
+ Select->parsing_place= IN_ON;
+ }
+@@ -8676,7 +8644,7 @@
+ {
+ MYSQL_YYABORT_UNLESS($1 && $5);
+ /* Change the current name resolution context to a local context. */
+- if (push_new_name_resolution_context(YYTHD, $1, $5))
++ if (push_new_name_resolution_context(thd, $1, $5))
+ MYSQL_YYABORT;
+ Select->parsing_place= IN_ON;
+ }
+@@ -8724,7 +8692,7 @@
+ }
+ table_ident opt_table_alias opt_key_definition
+ {
+- if (!($$= Select->add_table_to_list(YYTHD, $2, $3,
++ if (!($$= Select->add_table_to_list(thd, $2, $3,
+ Select->get_table_join_options(),
+ Lex->lock_option,
+ Select->pop_index_hints())))
+@@ -8922,7 +8890,7 @@
+
+ opt_index_hints_list:
+ /* empty */
+- | { Select->alloc_index_hints(YYTHD); } index_hints_list
++ | { Select->alloc_index_hints(thd); } index_hints_list
+ ;
+
+ opt_key_definition:
+@@ -8931,15 +8899,15 @@
+ ;
+
+ opt_key_usage_list:
+- /* empty */ { Select->add_index_hint(YYTHD, NULL, 0); }
++ /* empty */ { Select->add_index_hint(thd, NULL, 0); }
+ | key_usage_list {}
+ ;
+
+ key_usage_element:
+ ident
+- { Select->add_index_hint(YYTHD, $1.str, $1.length); }
++ { Select->add_index_hint(thd, $1.str, $1.length); }
+ | PRIMARY_SYM
+- { Select->add_index_hint(YYTHD, (char *)"PRIMARY", 7); }
++ { Select->add_index_hint(thd, (char *)"PRIMARY", 7); }
+ ;
+
+ key_usage_list:
+@@ -8952,7 +8920,7 @@
+ {
+ if (!($$= new List<String>))
+ MYSQL_YYABORT;
+- String *s= new (YYTHD->mem_root) String((const char *) $1.str,
++ String *s= new (thd->mem_root) String((const char *) $1.str,
+ $1.length,
+ system_charset_info);
+ if (s == NULL)
+@@ -8961,7 +8929,7 @@
+ }
+ | using_list ',' ident
+ {
+- String *s= new (YYTHD->mem_root) String((const char *) $3.str,
++ String *s= new (thd->mem_root) String((const char *) $3.str,
+ $3.length,
+ system_charset_info);
+ if (s == NULL)
+@@ -9002,7 +8970,7 @@
+ implementation without changing its
+ resolution.
+ */
+- WARN_DEPRECATED(yythd, VER_CELOSIA, "FRAC_SECOND", "MICROSECOND");
++ WARN_DEPRECATED(thd, VER_CELOSIA, "FRAC_SECOND", "MICROSECOND");
+ }
+ ;
+
+@@ -9086,7 +9054,6 @@
+ }
+ | /* empty */
+ {
+- THD *thd= YYTHD;
+ Lex->escape_used= FALSE;
+ $$= ((thd->variables.sql_mode & MODE_NO_BACKSLASH_ESCAPES) ?
+ new (thd->mem_root) Item_string("", 0, &my_charset_latin1) :
+@@ -9107,9 +9074,9 @@
+
+ group_list:
+ group_list ',' order_ident order_dir
+- { if (add_group_to_list(YYTHD, $3,(bool) $4)) MYSQL_YYABORT; }
++ { if (add_group_to_list(thd, $3,(bool) $4)) MYSQL_YYABORT; }
+ | order_ident order_dir
+- { if (add_group_to_list(YYTHD, $1,(bool) $2)) MYSQL_YYABORT; }
++ { if (add_group_to_list(thd, $1,(bool) $2)) MYSQL_YYABORT; }
+ ;
+
+ olap_opt:
+@@ -9156,7 +9123,6 @@
+ alter_order_item:
+ simple_ident_nospvar order_dir
+ {
+- THD *thd= YYTHD;
+ bool ascending= ($2 == 1) ? true : false;
+ if (add_order_to_list(thd, $1, ascending))
+ MYSQL_YYABORT;
+@@ -9209,9 +9175,9 @@
+
+ order_list:
+ order_list ',' order_ident order_dir
+- { if (add_order_to_list(YYTHD, $3,(bool) $4)) MYSQL_YYABORT; }
++ { if (add_order_to_list(thd, $3,(bool) $4)) MYSQL_YYABORT; }
+ | order_ident order_dir
+- { if (add_order_to_list(YYTHD, $1,(bool) $2)) MYSQL_YYABORT; }
++ { if (add_order_to_list(thd, $1,(bool) $2)) MYSQL_YYABORT; }
+ ;
+
+ order_dir:
+@@ -9271,19 +9237,19 @@
+ }
+ | ULONGLONG_NUM
+ {
+- $$= new (YYTHD->mem_root) Item_uint($1.str, $1.length);
++ $$= new (thd->mem_root) Item_uint($1.str, $1.length);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | LONG_NUM
+ {
+- $$= new (YYTHD->mem_root) Item_uint($1.str, $1.length);
++ $$= new (thd->mem_root) Item_uint($1.str, $1.length);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | NUM
+ {
+- $$= new (YYTHD->mem_root) Item_uint($1.str, $1.length);
++ $$= new (thd->mem_root) Item_uint($1.str, $1.length);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -9365,7 +9331,7 @@
+ lex->proc_list.elements=0;
+ lex->proc_list.first=0;
+ lex->proc_list.next= &lex->proc_list.first;
+- Item_field *item= new (YYTHD->mem_root)
++ Item_field *item= new (thd->mem_root)
+ Item_field(&lex->current_select->context,
+ NULL, NULL, $2.str);
+ if (item == NULL)
+@@ -9390,8 +9356,7 @@
+ procedure_item:
+ remember_name expr remember_end
+ {
+- THD *thd= YYTHD;
+-
++
+ if (add_proc_to_list(thd, $2))
+ MYSQL_YYABORT;
+ if (!$2->name)
+@@ -9560,7 +9525,6 @@
+ }
+ | DROP FUNCTION_SYM if_exists ident '.' ident
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ sp_name *spname;
+ if ($4.str && check_db_name(&$4))
+@@ -9583,7 +9547,6 @@
+ }
+ | DROP FUNCTION_SYM if_exists ident
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ LEX_STRING db= {0, 0};
+ sp_name *spname;
+@@ -9664,7 +9627,7 @@
+ table_name:
+ table_ident
+ {
+- if (!Select->add_table_to_list(YYTHD, $1, NULL, TL_OPTION_UPDATING))
++ if (!Select->add_table_to_list(thd, $1, NULL, TL_OPTION_UPDATING))
+ MYSQL_YYABORT;
+ }
+ ;
+@@ -9677,7 +9640,7 @@
+ table_alias_ref:
+ table_ident_opt_wild
+ {
+- if (!Select->add_table_to_list(YYTHD, $1, NULL,
++ if (!Select->add_table_to_list(thd, $1, NULL,
+ TL_OPTION_UPDATING | TL_OPTION_ALIAS,
+ Lex->lock_option ))
+ MYSQL_YYABORT;
+@@ -9868,7 +9831,7 @@
+ expr { $$= $1;}
+ | DEFAULT
+ {
+- $$= new (YYTHD->mem_root) Item_default_value(Lex->current_context());
++ $$= new (thd->mem_root) Item_default_value(Lex->current_context());
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -9922,7 +9885,7 @@
+ update_elem:
+ simple_ident_nospvar equal expr_or_default
+ {
+- if (add_item_to_list(YYTHD, $1) || add_value_to_list(YYTHD, $3))
++ if (add_item_to_list(thd, $1) || add_value_to_list(thd, $3))
+ MYSQL_YYABORT;
+ }
+ ;
+@@ -9965,7 +9928,7 @@
+ single_multi:
+ FROM table_ident
+ {
+- if (!Select->add_table_to_list(YYTHD, $2, NULL, TL_OPTION_UPDATING,
++ if (!Select->add_table_to_list(thd, $2, NULL, TL_OPTION_UPDATING,
+ Lex->lock_option))
+ MYSQL_YYABORT;
+ }
+@@ -9998,7 +9961,7 @@
+ Table_ident *ti= new Table_ident($1);
+ if (ti == NULL)
+ MYSQL_YYABORT;
+- if (!Select->add_table_to_list(YYTHD,
++ if (!Select->add_table_to_list(thd,
+ ti,
+ $3,
+ TL_OPTION_UPDATING | TL_OPTION_ALIAS,
+@@ -10007,10 +9970,10 @@
+ }
+ | ident '.' ident opt_wild opt_table_alias
+ {
+- Table_ident *ti= new Table_ident(YYTHD, $1, $3, 0);
++ Table_ident *ti= new Table_ident(thd, $1, $3, 0);
+ if (ti == NULL)
+ MYSQL_YYABORT;
+- if (!Select->add_table_to_list(YYTHD,
++ if (!Select->add_table_to_list(thd,
+ ti,
+ $5,
+ TL_OPTION_UPDATING | TL_OPTION_ALIAS,
+@@ -10130,7 +10093,7 @@
+ {
+ LEX *lex= Lex;
+ lex->sql_command= SQLCOM_SHOW_DATABASES;
+- if (prepare_schema_table(YYTHD, lex, 0, SCH_SCHEMATA))
++ if (prepare_schema_table(thd, lex, 0, SCH_SCHEMATA))
+ MYSQL_YYABORT;
+ }
+ | opt_full TABLES opt_db wild_and_where
+@@ -10138,7 +10101,7 @@
+ LEX *lex= Lex;
+ lex->sql_command= SQLCOM_SHOW_TABLES;
+ lex->select_lex.db= $3;
+- if (prepare_schema_table(YYTHD, lex, 0, SCH_TABLE_NAMES))
++ if (prepare_schema_table(thd, lex, 0, SCH_TABLE_NAMES))
+ MYSQL_YYABORT;
+ }
+ | opt_full TRIGGERS_SYM opt_db wild_and_where
+@@ -10146,7 +10109,7 @@
+ LEX *lex= Lex;
+ lex->sql_command= SQLCOM_SHOW_TRIGGERS;
+ lex->select_lex.db= $3;
+- if (prepare_schema_table(YYTHD, lex, 0, SCH_TRIGGERS))
++ if (prepare_schema_table(thd, lex, 0, SCH_TRIGGERS))
+ MYSQL_YYABORT;
+ }
+ | EVENTS_SYM opt_db wild_and_where
+@@ -10154,7 +10117,7 @@
+ LEX *lex= Lex;
+ lex->sql_command= SQLCOM_SHOW_EVENTS;
+ lex->select_lex.db= $2;
+- if (prepare_schema_table(YYTHD, lex, 0, SCH_EVENTS))
++ if (prepare_schema_table(thd, lex, 0, SCH_EVENTS))
+ MYSQL_YYABORT;
+ }
+ | TABLE_SYM STATUS_SYM opt_db wild_and_where
+@@ -10162,7 +10125,7 @@
+ LEX *lex= Lex;
+ lex->sql_command= SQLCOM_SHOW_TABLE_STATUS;
+ lex->select_lex.db= $3;
+- if (prepare_schema_table(YYTHD, lex, 0, SCH_TABLES))
++ if (prepare_schema_table(thd, lex, 0, SCH_TABLES))
+ MYSQL_YYABORT;
+ }
+ | OPEN_SYM TABLES opt_db wild_and_where
+@@ -10170,22 +10133,22 @@
+ LEX *lex= Lex;
+ lex->sql_command= SQLCOM_SHOW_OPEN_TABLES;
+ lex->select_lex.db= $3;
+- if (prepare_schema_table(YYTHD, lex, 0, SCH_OPEN_TABLES))
++ if (prepare_schema_table(thd, lex, 0, SCH_OPEN_TABLES))
+ MYSQL_YYABORT;
+ }
+ | opt_full PLUGIN_SYM
+ {
+ LEX *lex= Lex;
+- WARN_DEPRECATED(yythd, "6.0", "SHOW PLUGIN", "'SHOW PLUGINS'");
++ WARN_DEPRECATED(thd, "6.0", "SHOW PLUGIN", "'SHOW PLUGINS'");
+ lex->sql_command= SQLCOM_SHOW_PLUGINS;
+- if (prepare_schema_table(YYTHD, lex, 0, SCH_PLUGINS))
++ if (prepare_schema_table(thd, lex, 0, SCH_PLUGINS))
+ MYSQL_YYABORT;
+ }
+ | PLUGINS_SYM
+ {
+ LEX *lex= Lex;
+ lex->sql_command= SQLCOM_SHOW_PLUGINS;
+- if (prepare_schema_table(YYTHD, lex, 0, SCH_PLUGINS))
++ if (prepare_schema_table(thd, lex, 0, SCH_PLUGINS))
+ MYSQL_YYABORT;
+ }
+ | ENGINE_SYM known_storage_engines show_engine_param
+@@ -10198,7 +10161,7 @@
+ lex->sql_command= SQLCOM_SHOW_FIELDS;
+ if ($5)
+ $4->change_db($5);
+- if (prepare_schema_table(YYTHD, lex, $4, SCH_COLUMNS))
++ if (prepare_schema_table(thd, lex, $4, SCH_COLUMNS))
+ MYSQL_YYABORT;
+ }
+ | NEW_SYM MASTER_SYM FOR_SYM SLAVE
+@@ -10233,7 +10196,7 @@
+ lex->sql_command= SQLCOM_SHOW_KEYS;
+ if ($4)
+ $3->change_db($4);
+- if (prepare_schema_table(YYTHD, lex, $3, SCH_STATISTICS))
++ if (prepare_schema_table(thd, lex, $3, SCH_STATISTICS))
+ MYSQL_YYABORT;
+ }
+ | COLUMN_SYM TYPES_SYM
+@@ -10245,15 +10208,15 @@
+ {
+ LEX *lex=Lex;
+ lex->sql_command= SQLCOM_SHOW_STORAGE_ENGINES;
+- WARN_DEPRECATED(yythd, "6.0", "SHOW TABLE TYPES", "'SHOW [STORAGE] ENGINES'");
+- if (prepare_schema_table(YYTHD, lex, 0, SCH_ENGINES))
++ WARN_DEPRECATED(thd, "6.0", "SHOW TABLE TYPES", "'SHOW [STORAGE] ENGINES'");
++ if (prepare_schema_table(thd, lex, 0, SCH_ENGINES))
+ MYSQL_YYABORT;
+ }
+ | opt_storage ENGINES_SYM
+ {
+ LEX *lex=Lex;
+ lex->sql_command= SQLCOM_SHOW_STORAGE_ENGINES;
+- if (prepare_schema_table(YYTHD, lex, 0, SCH_ENGINES))
++ if (prepare_schema_table(thd, lex, 0, SCH_ENGINES))
+ MYSQL_YYABORT;
+ }
+ | AUTHORS_SYM
+@@ -10285,7 +10248,7 @@
+ {
+ LEX *lex= Lex;
+ lex->sql_command= SQLCOM_SHOW_PROFILE;
+- if (prepare_schema_table(YYTHD, lex, NULL, SCH_PROFILES) != 0)
++ if (prepare_schema_table(thd, lex, NULL, SCH_PROFILES) != 0)
+ YYABORT;
+ }
+ | opt_var_type STATUS_SYM wild_and_where
+@@ -10293,7 +10256,7 @@
+ LEX *lex= Lex;
+ lex->sql_command= SQLCOM_SHOW_STATUS;
+ lex->option_type= $1;
+- if (prepare_schema_table(YYTHD, lex, 0, SCH_STATUS))
++ if (prepare_schema_table(thd, lex, 0, SCH_STATUS))
+ MYSQL_YYABORT;
+ }
+ | INNOBASE_SYM STATUS_SYM
+@@ -10301,24 +10264,24 @@
+ LEX *lex= Lex;
+ lex->sql_command = SQLCOM_SHOW_ENGINE_STATUS;
+ if (!(lex->create_info.db_type=
+- ha_resolve_by_legacy_type(YYTHD, DB_TYPE_INNODB)))
++ ha_resolve_by_legacy_type(thd, DB_TYPE_INNODB)))
+ {
+ my_error(ER_UNKNOWN_STORAGE_ENGINE, MYF(0), "InnoDB");
+ MYSQL_YYABORT;
+ }
+- WARN_DEPRECATED(yythd, "6.0", "SHOW INNODB STATUS", "'SHOW ENGINE INNODB STATUS'");
++ WARN_DEPRECATED(thd, "6.0", "SHOW INNODB STATUS", "'SHOW ENGINE INNODB STATUS'");
+ }
+ | MUTEX_SYM STATUS_SYM
+ {
+ LEX *lex= Lex;
+ lex->sql_command = SQLCOM_SHOW_ENGINE_MUTEX;
+ if (!(lex->create_info.db_type=
+- ha_resolve_by_legacy_type(YYTHD, DB_TYPE_INNODB)))
++ ha_resolve_by_legacy_type(thd, DB_TYPE_INNODB)))
+ {
+ my_error(ER_UNKNOWN_STORAGE_ENGINE, MYF(0), "InnoDB");
+ MYSQL_YYABORT;
+ }
+- WARN_DEPRECATED(yythd, "6.0", "SHOW MUTEX STATUS", "'SHOW ENGINE INNODB MUTEX'");
++ WARN_DEPRECATED(thd, "6.0", "SHOW MUTEX STATUS", "'SHOW ENGINE INNODB MUTEX'");
+ }
+ | opt_full PROCESSLIST_SYM
+ { Lex->sql_command= SQLCOM_SHOW_PROCESSLIST;}
+@@ -10327,21 +10290,21 @@
+ LEX *lex= Lex;
+ lex->sql_command= SQLCOM_SHOW_VARIABLES;
+ lex->option_type= $1;
+- if (prepare_schema_table(YYTHD, lex, 0, SCH_VARIABLES))
++ if (prepare_schema_table(thd, lex, 0, SCH_VARIABLES))
+ MYSQL_YYABORT;
+ }
+ | charset wild_and_where
+ {
+ LEX *lex= Lex;
+ lex->sql_command= SQLCOM_SHOW_CHARSETS;
+- if (prepare_schema_table(YYTHD, lex, 0, SCH_CHARSETS))
++ if (prepare_schema_table(thd, lex, 0, SCH_CHARSETS))
+ MYSQL_YYABORT;
+ }
+ | COLLATION_SYM wild_and_where
+ {
+ LEX *lex= Lex;
+ lex->sql_command= SQLCOM_SHOW_COLLATIONS;
+- if (prepare_schema_table(YYTHD, lex, 0, SCH_COLLATIONS))
++ if (prepare_schema_table(thd, lex, 0, SCH_COLLATIONS))
+ MYSQL_YYABORT;
+ }
+ | GRANTS
+@@ -10371,7 +10334,7 @@
+ {
+ LEX *lex= Lex;
+ lex->sql_command = SQLCOM_SHOW_CREATE;
+- if (!lex->select_lex.add_table_to_list(YYTHD, $3, NULL,0))
++ if (!lex->select_lex.add_table_to_list(thd, $3, NULL,0))
+ MYSQL_YYABORT;
+ lex->only_view= 0;
+ lex->create_info.storage_media= HA_SM_DEFAULT;
+@@ -10380,7 +10343,7 @@
+ {
+ LEX *lex= Lex;
+ lex->sql_command = SQLCOM_SHOW_CREATE;
+- if (!lex->select_lex.add_table_to_list(YYTHD, $3, NULL, 0))
++ if (!lex->select_lex.add_table_to_list(thd, $3, NULL, 0))
+ MYSQL_YYABORT;
+ lex->only_view= 1;
+ }
+@@ -10416,14 +10379,14 @@
+ {
+ LEX *lex= Lex;
+ lex->sql_command= SQLCOM_SHOW_STATUS_PROC;
+- if (prepare_schema_table(YYTHD, lex, 0, SCH_PROCEDURES))
++ if (prepare_schema_table(thd, lex, 0, SCH_PROCEDURES))
+ MYSQL_YYABORT;
+ }
+ | FUNCTION_SYM STATUS_SYM wild_and_where
+ {
+ LEX *lex= Lex;
+ lex->sql_command= SQLCOM_SHOW_STATUS_FUNC;
+- if (prepare_schema_table(YYTHD, lex, 0, SCH_PROCEDURES))
++ if (prepare_schema_table(thd, lex, 0, SCH_PROCEDURES))
+ MYSQL_YYABORT;
+ }
+ | PROCEDURE CODE_SYM sp_name
+@@ -10501,7 +10464,7 @@
+ /* empty */
+ | LIKE TEXT_STRING_sys
+ {
+- Lex->wild= new (YYTHD->mem_root) String($2.str, $2.length,
++ Lex->wild= new (thd->mem_root) String($2.str, $2.length,
+ system_charset_info);
+ if (Lex->wild == NULL)
+ MYSQL_YYABORT;
+@@ -10525,7 +10488,7 @@
+ lex->sql_command= SQLCOM_SHOW_FIELDS;
+ lex->select_lex.db= 0;
+ lex->verbose= 0;
+- if (prepare_schema_table(YYTHD, lex, $2, SCH_COLUMNS))
++ if (prepare_schema_table(thd, lex, $2, SCH_COLUMNS))
+ MYSQL_YYABORT;
+ }
+ opt_describe_column {}
+@@ -10554,7 +10517,7 @@
+ | text_string { Lex->wild= $1; }
+ | ident
+ {
+- Lex->wild= new (YYTHD->mem_root) String((const char*) $1.str,
++ Lex->wild= new (thd->mem_root) String((const char*) $1.str,
+ $1.length,
+ system_charset_info);
+ if (Lex->wild == NULL)
+@@ -10697,7 +10660,6 @@
+ load:
+ LOAD DATA_SYM
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+
+ if (lex->sphead)
+@@ -10711,7 +10673,7 @@
+ | LOAD TABLE_SYM table_ident FROM MASTER_SYM
+ {
+ LEX *lex=Lex;
+- WARN_DEPRECATED(yythd, "6.0", "LOAD TABLE FROM MASTER",
++ WARN_DEPRECATED(thd, "6.0", "LOAD TABLE FROM MASTER",
+ "MySQL Administrator (mysqldump, mysql)");
+ if (lex->sphead)
+ {
+@@ -10719,7 +10681,7 @@
+ MYSQL_YYABORT;
+ }
+ lex->sql_command = SQLCOM_LOAD_MASTER_TABLE;
+- if (!Select->add_table_to_list(YYTHD, $3, NULL, TL_OPTION_UPDATING))
++ if (!Select->add_table_to_list(thd, $3, NULL, TL_OPTION_UPDATING))
+ MYSQL_YYABORT;
+ }
+ ;
+@@ -10739,7 +10701,7 @@
+ opt_duplicate INTO TABLE_SYM table_ident
+ {
+ LEX *lex=Lex;
+- if (!Select->add_table_to_list(YYTHD, $9, NULL, TL_OPTION_UPDATING,
++ if (!Select->add_table_to_list(thd, $9, NULL, TL_OPTION_UPDATING,
+ lex->lock_option))
+ MYSQL_YYABORT;
+ lex->field_list.empty();
+@@ -10754,7 +10716,7 @@
+ | FROM MASTER_SYM
+ {
+ Lex->sql_command = SQLCOM_LOAD_MASTER_DATA;
+- WARN_DEPRECATED(yythd, "6.0", "LOAD DATA FROM MASTER",
++ WARN_DEPRECATED(thd, "6.0", "LOAD DATA FROM MASTER",
+ "mysqldump or future "
+ "BACKUP/RESTORE DATABASE facility");
+ }
+@@ -10872,7 +10834,7 @@
+ simple_ident_nospvar {$$= $1;}
+ | '@' ident_or_text
+ {
+- $$= new (YYTHD->mem_root) Item_user_var_as_out_param($2);
++ $$= new (thd->mem_root) Item_user_var_as_out_param($2);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -10889,7 +10851,6 @@
+ TEXT_STRING
+ {
+ LEX_STRING tmp;
+- THD *thd= YYTHD;
+ CHARSET_INFO *cs_con= thd->variables.collation_connection;
+ CHARSET_INFO *cs_cli= thd->variables.character_set_client;
+ uint repertoire= thd->lex->text_string_is_7bit &&
+@@ -10915,7 +10876,7 @@
+ uint repertoire= Lex->text_string_is_7bit ?
+ MY_REPERTOIRE_ASCII : MY_REPERTOIRE_UNICODE30;
+ DBUG_ASSERT(my_charset_is_ascii_based(national_charset_info));
+- $$= new (YYTHD->mem_root) Item_string($1.str, $1.length,
++ $$= new (thd->mem_root) Item_string($1.str, $1.length,
+ national_charset_info,
+ DERIVATION_COERCIBLE,
+ repertoire);
+@@ -10924,7 +10885,7 @@
+ }
+ | UNDERSCORE_CHARSET TEXT_STRING
+ {
+- Item_string *str= new (YYTHD->mem_root) Item_string($2.str,
++ Item_string *str= new (thd->mem_root) Item_string($2.str,
+ $2.length, $1);
+ if (str == NULL)
+ MYSQL_YYABORT;
+@@ -10943,7 +10904,7 @@
+ If the string has been pure ASCII so far,
+ check the new part.
+ */
+- CHARSET_INFO *cs= YYTHD->variables.collation_connection;
++ CHARSET_INFO *cs= thd->variables.collation_connection;
+ item->collation.repertoire|= my_string_repertoire(cs,
+ $2.str,
+ $2.length);
+@@ -10954,15 +10915,15 @@
+ text_string:
+ TEXT_STRING_literal
+ {
+- $$= new (YYTHD->mem_root) String($1.str,
++ $$= new (thd->mem_root) String($1.str,
+ $1.length,
+- YYTHD->variables.collation_connection);
++ thd->variables.collation_connection);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | HEX_NUM
+ {
+- Item *tmp= new (YYTHD->mem_root) Item_hex_string($1.str, $1.length);
++ Item *tmp= new (thd->mem_root) Item_hex_string($1.str, $1.length);
+ if (tmp == NULL)
+ MYSQL_YYABORT;
+ /*
+@@ -10974,7 +10935,7 @@
+ }
+ | BIN_NUM
+ {
+- Item *tmp= new (YYTHD->mem_root) Item_bin_string($1.str, $1.length);
++ Item *tmp= new (thd->mem_root) Item_bin_string($1.str, $1.length);
+ if (tmp == NULL)
+ MYSQL_YYABORT;
+ /*
+@@ -10989,7 +10950,6 @@
+ param_marker:
+ PARAM_MARKER
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ Lex_input_stream *lip= YYLIP;
+ Item_param *item;
+@@ -11022,38 +10982,38 @@
+ | NUM_literal { $$ = $1; }
+ | NULL_SYM
+ {
+- $$ = new (YYTHD->mem_root) Item_null();
++ $$ = new (thd->mem_root) Item_null();
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ YYLIP->next_state= MY_LEX_OPERATOR_OR_IDENT;
+ }
+ | FALSE_SYM
+ {
+- $$= new (YYTHD->mem_root) Item_int((char*) "FALSE",0,1);
++ $$= new (thd->mem_root) Item_int((char*) "FALSE",0,1);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | TRUE_SYM
+ {
+- $$= new (YYTHD->mem_root) Item_int((char*) "TRUE",1,1);
++ $$= new (thd->mem_root) Item_int((char*) "TRUE",1,1);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | HEX_NUM
+ {
+- $$ = new (YYTHD->mem_root) Item_hex_string($1.str, $1.length);
++ $$ = new (thd->mem_root) Item_hex_string($1.str, $1.length);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | BIN_NUM
+ {
+- $$= new (YYTHD->mem_root) Item_bin_string($1.str, $1.length);
++ $$= new (thd->mem_root) Item_bin_string($1.str, $1.length);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | UNDERSCORE_CHARSET HEX_NUM
+ {
+- Item *tmp= new (YYTHD->mem_root) Item_hex_string($2.str, $2.length);
++ Item *tmp= new (thd->mem_root) Item_hex_string($2.str, $2.length);
+ if (tmp == NULL)
+ MYSQL_YYABORT;
+ /*
+@@ -11064,7 +11024,7 @@
+ String *str= tmp->val_str((String*) 0);
+
+ Item_string *item_str;
+- item_str= new (YYTHD->mem_root)
++ item_str= new (thd->mem_root)
+ Item_string(NULL, /* name will be set in select_item */
+ str ? str->ptr() : "",
+ str ? str->length() : 0,
+@@ -11082,7 +11042,7 @@
+ }
+ | UNDERSCORE_CHARSET BIN_NUM
+ {
+- Item *tmp= new (YYTHD->mem_root) Item_bin_string($2.str, $2.length);
++ Item *tmp= new (thd->mem_root) Item_bin_string($2.str, $2.length);
+ if (tmp == NULL)
+ MYSQL_YYABORT;
+ /*
+@@ -11093,7 +11053,7 @@
+ String *str= tmp->val_str((String*) 0);
+
+ Item_string *item_str;
+- item_str= new (YYTHD->mem_root)
++ item_str= new (thd->mem_root)
+ Item_string(NULL, /* name will be set in select_item */
+ str ? str->ptr() : "",
+ str ? str->length() : 0,
+@@ -11117,7 +11077,7 @@
+ NUM
+ {
+ int error;
+- $$= new (YYTHD->mem_root)
++ $$= new (thd->mem_root)
+ Item_int($1.str,
+ (longlong) my_strtoll10($1.str, NULL, &error),
+ $1.length);
+@@ -11127,7 +11087,7 @@
+ | LONG_NUM
+ {
+ int error;
+- $$= new (YYTHD->mem_root)
++ $$= new (thd->mem_root)
+ Item_int($1.str,
+ (longlong) my_strtoll10($1.str, NULL, &error),
+ $1.length);
+@@ -11136,23 +11096,23 @@
+ }
+ | ULONGLONG_NUM
+ {
+- $$= new (YYTHD->mem_root) Item_uint($1.str, $1.length);
++ $$= new (thd->mem_root) Item_uint($1.str, $1.length);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | DECIMAL_NUM
+ {
+- $$= new (YYTHD->mem_root) Item_decimal($1.str, $1.length,
+- YYTHD->charset());
+- if (($$ == NULL) || (YYTHD->is_error()))
++ $$= new (thd->mem_root) Item_decimal($1.str, $1.length,
++ thd->charset());
++ if (($$ == NULL) || (thd->is_error()))
+ {
+ MYSQL_YYABORT;
+ }
+ }
+ | FLOAT_NUM
+ {
+- $$= new (YYTHD->mem_root) Item_float($1.str, $1.length);
+- if (($$ == NULL) || (YYTHD->is_error()))
++ $$= new (thd->mem_root) Item_float($1.str, $1.length);
++ if (($$ == NULL) || (thd->is_error()))
+ {
+ MYSQL_YYABORT;
+ }
+@@ -11172,7 +11132,7 @@
+ ident '.' '*'
+ {
+ SELECT_LEX *sel= Select;
+- $$= new (YYTHD->mem_root) Item_field(Lex->current_context(),
++ $$= new (thd->mem_root) Item_field(Lex->current_context(),
+ NullS, $1.str, "*");
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+@@ -11180,7 +11140,6 @@
+ }
+ | ident '.' ident '.' '*'
+ {
+- THD *thd= YYTHD;
+ SELECT_LEX *sel= Select;
+ const char* schema= thd->client_capabilities & CLIENT_NO_SCHEMA ?
+ NullS : $1.str;
+@@ -11200,7 +11159,6 @@
+ simple_ident:
+ ident
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ Lex_input_stream *lip= YYLIP;
+ sp_variable_t *spv;
+@@ -11251,7 +11209,6 @@
+ simple_ident_nospvar:
+ ident
+ {
+- THD *thd= YYTHD;
+ SELECT_LEX *sel=Select;
+ if ((sel->parsing_place != IN_HAVING) ||
+ (sel->get_in_sum_expr() > 0))
+@@ -11273,7 +11230,6 @@
+ simple_ident_q:
+ ident '.' ident
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+
+ /*
+@@ -11352,7 +11308,6 @@
+ }
+ | '.' ident '.' ident
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ SELECT_LEX *sel= lex->current_select;
+ if (sel->no_table_names_allowed)
+@@ -11377,7 +11332,6 @@
+ }
+ | ident '.' ident '.' ident
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ SELECT_LEX *sel= lex->current_select;
+ const char* schema= (thd->client_capabilities & CLIENT_NO_SCHEMA ?
+@@ -11445,7 +11399,7 @@
+ }
+ | ident '.' ident
+ {
+- $$= new Table_ident(YYTHD, $1,$3,0);
++ $$= new Table_ident(thd, $1,$3,0);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -11467,7 +11421,7 @@
+ }
+ | ident '.' ident opt_wild
+ {
+- $$= new Table_ident(YYTHD, $1,$3,0);
++ $$= new Table_ident(thd, $1,$3,0);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -11477,7 +11431,7 @@
+ ident
+ {
+ LEX_STRING db={(char*) any_db,3};
+- $$= new Table_ident(YYTHD, db,$1,0);
++ $$= new Table_ident(thd, db,$1,0);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -11487,8 +11441,7 @@
+ IDENT { $$= $1; }
+ | IDENT_QUOTED
+ {
+- THD *thd= YYTHD;
+-
++
+ if (thd->charset_is_system_charset)
+ {
+ CHARSET_INFO *cs= system_charset_info;
+@@ -11516,8 +11469,6 @@
+ TEXT_STRING_sys:
+ TEXT_STRING
+ {
+- THD *thd= YYTHD;
+-
+ if (thd->charset_is_system_charset)
+ $$= $1;
+ else
+@@ -11532,8 +11483,6 @@
+ TEXT_STRING_literal:
+ TEXT_STRING
+ {
+- THD *thd= YYTHD;
+-
+ if (thd->charset_is_collation_connection)
+ $$= $1;
+ else
+@@ -11548,8 +11497,6 @@
+ TEXT_STRING_filesystem:
+ TEXT_STRING
+ {
+- THD *thd= YYTHD;
+-
+ if (thd->charset_is_character_set_filesystem)
+ $$= $1;
+ else
+@@ -11566,7 +11513,6 @@
+ IDENT_sys { $$=$1; }
+ | keyword
+ {
+- THD *thd= YYTHD;
+ $$.str= thd->strmake($1.str, $1.length);
+ if ($$.str == NULL)
+ MYSQL_YYABORT;
+@@ -11578,7 +11524,6 @@
+ IDENT_sys { $$=$1; }
+ | keyword_sp
+ {
+- THD *thd= YYTHD;
+ $$.str= thd->strmake($1.str, $1.length);
+ if ($$.str == NULL)
+ MYSQL_YYABORT;
+@@ -11595,7 +11540,6 @@
+ user:
+ ident_or_text
+ {
+- THD *thd= YYTHD;
+ if (!($$=(LEX_USER*) thd->alloc(sizeof(st_lex_user))))
+ MYSQL_YYABORT;
+ $$->user = $1;
+@@ -11609,7 +11553,6 @@
+ }
+ | ident_or_text '@' ident_or_text
+ {
+- THD *thd= YYTHD;
+ if (!($$=(LEX_USER*) thd->alloc(sizeof(st_lex_user))))
+ MYSQL_YYABORT;
+ $$->user = $1; $$->host=$3;
+@@ -11628,7 +11571,7 @@
+ }
+ | CURRENT_USER optional_braces
+ {
+- if (!($$=(LEX_USER*) YYTHD->alloc(sizeof(st_lex_user))))
++ if (!($$=(LEX_USER*) thd->alloc(sizeof(st_lex_user))))
+ MYSQL_YYABORT;
+ /*
+ empty LEX_USER means current_user and
+@@ -11991,7 +11934,6 @@
+
+ option_type_value:
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ Lex_input_stream *lip= YYLIP;
+
+@@ -12022,7 +11964,6 @@
+ }
+ ext_option_value
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ Lex_input_stream *lip= YYLIP;
+
+@@ -12105,7 +12046,6 @@
+ sys_option_value:
+ option_type internal_variable_name equal set_expr_or_default
+ {
+- THD *thd= YYTHD;
+ LEX *lex= Lex;
+ LEX_STRING *name= &$2.base_name;
+
+@@ -12117,7 +12057,7 @@
+ my_parse_error(ER(ER_SYNTAX_ERROR));
+ MYSQL_YYABORT;
+ }
+- if (set_trigger_new_row(YYTHD, name, $4))
++ if (set_trigger_new_row(thd, name, $4))
+ MYSQL_YYABORT;
+ }
+ else if ($2.var)
+@@ -12147,7 +12087,6 @@
+ }
+ | option_type TRANSACTION_SYM ISOLATION LEVEL_SYM isolation_types
+ {
+- THD *thd= YYTHD;
+ LEX *lex=Lex;
+ lex->option_type= $1;
+ Item *item= new (thd->mem_root) Item_int((int32) $5);
+@@ -12167,7 +12106,7 @@
+ '@' ident_or_text equal expr
+ {
+ Item_func_set_user_var *item;
+- item= new (YYTHD->mem_root) Item_func_set_user_var($2, $4);
++ item= new (thd->mem_root) Item_func_set_user_var($2, $4);
+ if (item == NULL)
+ MYSQL_YYABORT;
+ set_var_user *var= new set_var_user(item);
+@@ -12177,7 +12116,6 @@
+ }
+ | '@' '@' opt_var_ident_type internal_variable_name equal set_expr_or_default
+ {
+- THD *thd= YYTHD;
+ struct sys_var_with_base tmp= $4;
+ /* Lookup if necessary: must be a system variable. */
+ if (tmp.var == NULL)
+@@ -12190,7 +12128,6 @@
+ }
+ | charset old_or_new_charset_name_or_default
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ CHARSET_INFO *cs2;
+ cs2= $2 ? $2: global_system_variables.character_set_client;
+@@ -12238,7 +12175,6 @@
+ }
+ | PASSWORD equal text_or_password
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ LEX_USER *user;
+ sp_pcontext *spc= lex->spcont;
+@@ -12278,7 +12214,6 @@
+ internal_variable_name:
+ ident
+ {
+- THD *thd= YYTHD;
+ sp_pcontext *spc= thd->lex->spcont;
+ sp_variable_t *spv;
+
+@@ -12337,7 +12272,7 @@
+ }
+ else
+ {
+- sys_var *tmp=find_sys_var(YYTHD, $3.str, $3.length);
++ sys_var *tmp=find_sys_var(thd, $3.str, $3.length);
+ if (!tmp)
+ MYSQL_YYABORT;
+ if (!tmp->is_struct())
+@@ -12348,7 +12283,7 @@
+ }
+ | DEFAULT '.' ident
+ {
+- sys_var *tmp=find_sys_var(YYTHD, $3.str, $3.length);
++ sys_var *tmp=find_sys_var(thd, $3.str, $3.length);
+ if (!tmp)
+ MYSQL_YYABORT;
+ if (!tmp->is_struct())
+@@ -12370,16 +12305,16 @@
+ TEXT_STRING { $$=$1.str;}
+ | PASSWORD '(' TEXT_STRING ')'
+ {
+- $$= $3.length ? YYTHD->variables.old_passwords ?
+- Item_func_old_password::alloc(YYTHD, $3.str, $3.length) :
+- Item_func_password::alloc(YYTHD, $3.str, $3.length) :
++ $$= $3.length ? thd->variables.old_passwords ?
++ Item_func_old_password::alloc(thd, $3.str, $3.length) :
++ Item_func_password::alloc(thd, $3.str, $3.length) :
+ $3.str;
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | OLD_PASSWORD '(' TEXT_STRING ')'
+ {
+- $$= $3.length ? Item_func_old_password::alloc(YYTHD, $3.str,
++ $$= $3.length ? Item_func_old_password::alloc(thd, $3.str,
+ $3.length) :
+ $3.str;
+ if ($$ == NULL)
+@@ -12393,19 +12328,19 @@
+ | DEFAULT { $$=0; }
+ | ON
+ {
+- $$=new (YYTHD->mem_root) Item_string("ON", 2, system_charset_info);
++ $$=new (thd->mem_root) Item_string("ON", 2, system_charset_info);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | ALL
+ {
+- $$=new (YYTHD->mem_root) Item_string("ALL", 3, system_charset_info);
++ $$=new (thd->mem_root) Item_string("ALL", 3, system_charset_info);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | BINARY
+ {
+- $$=new (YYTHD->mem_root) Item_string("binary", 6, system_charset_info);
++ $$=new (thd->mem_root) Item_string("binary", 6, system_charset_info);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -12443,7 +12378,7 @@
+ table_ident opt_table_alias lock_option
+ {
+ thr_lock_type lock_type= (thr_lock_type) $3;
+- if (!Select->add_table_to_list(YYTHD, $1, $2, 0, lock_type))
++ if (!Select->add_table_to_list(thd, $1, $2, 0, lock_type))
+ MYSQL_YYABORT;
+ /* If table is to be write locked, protect from a impending GRL. */
+ if (lock_type >= TL_WRITE_ALLOW_WRITE)
+@@ -12514,7 +12449,7 @@
+ lex->expr_allows_subselect= FALSE;
+ lex->sql_command = SQLCOM_HA_READ;
+ lex->ha_rkey_mode= HA_READ_KEY_EXACT; /* Avoid purify warnings */
+- Item *one= new (YYTHD->mem_root) Item_int((int32) 1);
++ Item *one= new (thd->mem_root) Item_int((int32) 1);
+ if (one == NULL)
+ MYSQL_YYABORT;
+ lex->current_select->select_limit= one;
+@@ -12836,10 +12771,10 @@
+ $$=$1; $1->password=$4;
+ if ($4.length)
+ {
+- if (YYTHD->variables.old_passwords)
++ if (thd->variables.old_passwords)
+ {
+ char *buff=
+- (char *) YYTHD->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH_323+1);
++ (char *) thd->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH_323+1);
+ if (buff == NULL)
+ MYSQL_YYABORT;
+ my_make_scrambled_password_323(buff, $4.str, $4.length);
+@@ -12849,7 +12784,7 @@
+ else
+ {
+ char *buff=
+- (char *) YYTHD->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH+1);
++ (char *) thd->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH+1);
+ if (buff == NULL)
+ MYSQL_YYABORT;
+ my_make_scrambled_password(buff, $4.str, $4.length);
+@@ -12881,7 +12816,7 @@
+ column_list_id:
+ ident
+ {
+- String *new_str = new (YYTHD->mem_root) String((const char*) $1.str,$1.length,system_charset_info);
++ String *new_str = new (thd->mem_root) String((const char*) $1.str,$1.length,system_charset_info);
+ if (new_str == NULL)
+ MYSQL_YYABORT;
+ List_iterator <LEX_COLUMN> iter(Lex->columns);
+@@ -12981,14 +12916,14 @@
+
+ opt_chain:
+ /* empty */
+- { $$= (YYTHD->variables.completion_type == 1); }
++ { $$= (thd->variables.completion_type == 1); }
+ | AND_SYM NO_SYM CHAIN_SYM { $$=0; }
+ | AND_SYM CHAIN_SYM { $$=1; }
+ ;
+
+ opt_release:
+ /* empty */
+- { $$= (YYTHD->variables.completion_type == 2); }
++ { $$= (thd->variables.completion_type == 2); }
+ | RELEASE_SYM { $$=1; }
+ | NO_SYM RELEASE_SYM { $$=0; }
+ ;
+@@ -13102,7 +13037,6 @@
+
+ union_order_or_limit:
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ DBUG_ASSERT(lex->current_select->linkage != GLOBAL_OPTIONS_TYPE);
+ SELECT_LEX *sel= lex->current_select;
+@@ -13118,7 +13052,6 @@
+ }
+ order_or_limit
+ {
+- THD *thd= YYTHD;
+ thd->lex->current_select->no_table_names_allowed= 0;
+ thd->where= "";
+ }
+@@ -13255,14 +13188,14 @@
+ from older master servers (i.e. to create non-suid trigger in this
+ case).
+ */
+- YYTHD->lex->definer= 0;
++ thd->lex->definer= 0;
+ }
+ ;
+
+ definer:
+ DEFINER_SYM EQ user
+ {
+- YYTHD->lex->definer= get_current_user(YYTHD, $3);
++ thd->lex->definer= get_current_user(thd, $3);
+ }
+ ;
+
+@@ -13307,7 +13240,6 @@
+ view_tail:
+ view_suid VIEW_SYM table_ident
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ lex->sql_command= SQLCOM_CREATE_VIEW;
+ /* first table in list is target VIEW name */
+@@ -13347,7 +13279,6 @@
+ }
+ view_select_aux view_check_option
+ {
+- THD *thd= YYTHD;
+ LEX *lex= Lex;
+ uint len= YYLIP->get_cpp_ptr() - lex->create_view_select.str;
+ void *create_view_select= thd->memdup(lex->create_view_select.str, len);
+@@ -13403,7 +13334,6 @@
+ EACH_SYM
+ ROW_SYM
+ { /* $15 */
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ Lex_input_stream *lip= YYLIP;
+ sp_head *sp;
+@@ -13437,8 +13367,8 @@
+ sp_head *sp= lex->sphead;
+
+ lex->sql_command= SQLCOM_CREATE_TRIGGER;
+- sp->set_stmt_end(YYTHD);
+- sp->restore_thd_mem_root(YYTHD);
++ sp->set_stmt_end(thd);
++ sp->restore_thd_mem_root(thd);
+
+ if (sp->is_not_allowed_in_function("trigger"))
+ MYSQL_YYABORT;
+@@ -13448,7 +13378,7 @@
+ sp_proc_stmt alternatives are not saving/restoring LEX, so
+ lex->query_tables can be wiped out.
+ */
+- if (!lex->select_lex.add_table_to_list(YYTHD, $9,
++ if (!lex->select_lex.add_table_to_list(thd, $9,
+ (LEX_STRING*) 0,
+ TL_OPTION_UPDATING,
+ TL_IGNORE))
+@@ -13466,7 +13396,6 @@
+ AGGREGATE_SYM remember_name FUNCTION_SYM ident
+ RETURNS_SYM udf_type SONAME_SYM TEXT_STRING_sys
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ if (is_native_function(thd, & $4))
+ {
+@@ -13484,7 +13413,6 @@
+ | remember_name FUNCTION_SYM ident
+ RETURNS_SYM udf_type SONAME_SYM TEXT_STRING_sys
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ if (is_native_function(thd, & $3))
+ {
+@@ -13507,7 +13435,6 @@
+ sp_name /* $3 */
+ '(' /* $4 */
+ { /* $5 */
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ Lex_input_stream *lip= YYLIP;
+ sp_head *sp;
+@@ -13565,7 +13492,7 @@
+ MYSQL_YYABORT;
+ }
+
+- if (sp->fill_field_definition(YYTHD, lex,
++ if (sp->fill_field_definition(thd, lex,
+ (enum enum_field_types) $11,
+ &sp->m_return_field_def))
+ MYSQL_YYABORT;
+@@ -13574,7 +13501,6 @@
+ }
+ sp_c_chistics /* $13 */
+ { /* $14 */
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ Lex_input_stream *lip= YYLIP;
+
+@@ -13583,7 +13509,6 @@
+ }
+ sp_proc_stmt /* $15 */
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ sp_head *sp= lex->sphead;
+
+@@ -13654,10 +13579,10 @@
+ sp= new sp_head();
+ if (sp == NULL)
+ MYSQL_YYABORT;
+- sp->reset_thd_mem_root(YYTHD);
++ sp->reset_thd_mem_root(thd);
+ sp->init(lex);
+ sp->m_type= TYPE_ENUM_PROCEDURE;
+- sp->init_sp_name(YYTHD, $3);
++ sp->init_sp_name(thd, $3);
+
+ lex->sphead= sp;
+ }
+@@ -13672,7 +13597,6 @@
+ sp_pdparam_list
+ ')'
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+
+ lex->sphead->m_param_end= YYLIP->get_cpp_tok_start();
+@@ -13680,7 +13604,6 @@
+ }
+ sp_c_chistics
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+
+ lex->sphead->m_chistics= &lex->sp_chistics;
+@@ -13691,9 +13614,9 @@
+ LEX *lex= Lex;
+ sp_head *sp= lex->sphead;
+
+- sp->set_stmt_end(YYTHD);
++ sp->set_stmt_end(thd);
+ lex->sql_command= SQLCOM_CREATE_PROCEDURE;
+- sp->restore_thd_mem_root(YYTHD);
++ sp->restore_thd_mem_root(thd);
+ }
+ ;
+
+@@ -13730,21 +13653,21 @@
+ text_string
+ {
+ MYSQL_YYABORT_UNLESS($1->length() <= MAXGTRIDSIZE);
+- if (!(Lex->xid=(XID *)YYTHD->alloc(sizeof(XID))))
++ if (!(Lex->xid=(XID *)thd->alloc(sizeof(XID))))
+ MYSQL_YYABORT;
+ Lex->xid->set(1L, $1->ptr(), $1->length(), 0, 0);
+ }
+ | text_string ',' text_string
+ {
+ MYSQL_YYABORT_UNLESS($1->length() <= MAXGTRIDSIZE && $3->length() <= MAXBQUALSIZE);
+- if (!(Lex->xid=(XID *)YYTHD->alloc(sizeof(XID))))
++ if (!(Lex->xid=(XID *)thd->alloc(sizeof(XID))))
+ MYSQL_YYABORT;
+ Lex->xid->set(1L, $1->ptr(), $1->length(), $3->ptr(), $3->length());
+ }
+ | text_string ',' text_string ',' ulong_num
+ {
+ MYSQL_YYABORT_UNLESS($1->length() <= MAXGTRIDSIZE && $3->length() <= MAXBQUALSIZE);
+- if (!(Lex->xid=(XID *)YYTHD->alloc(sizeof(XID))))
++ if (!(Lex->xid=(XID *)thd->alloc(sizeof(XID))))
+ MYSQL_YYABORT;
+ Lex->xid->set($5, $1->ptr(), $1->length(), $3->ptr(), $3->length());
+ }
diff --git a/package/mysql/mysql.mk b/package/mysql/mysql.mk
index 9b22c2d..27afc9f 100644
--- a/package/mysql/mysql.mk
+++ b/package/mysql/mysql.mk
@@ -25,7 +25,6 @@ MYSQL_CONF_ENV = \
MYSQL_CONF_OPT = \
--without-ndb-binlog \
- --without-server \
--without-docs \
--without-man \
--without-libedit \
@@ -34,6 +33,50 @@ MYSQL_CONF_OPT = \
--enable-thread-safe-client \
$(ENABLE_DEBUG)
+ifeq ($(BR2_PACKAGE_MYSQL_SERVER),y)
+MYSQL_DEPENDENCIES += host-mysql host-bison
+HOST_MYSQL_DEPENDENCIES =
+
+HOST_MYSQL_CONF_OPT = \
+ --with-embedded-server
+
+MYSQL_CONF_OPT += \
+ --disable-dependency-tracking \
+ --with-atomic-ops=up \
+ --with-embedded-server \
+ --without-query-cache \
+ --without-plugin-partition \
+ --without-plugin-daemon_example \
+ --without-plugin-ftexample \
+ --without-plugin-archive \
+ --without-plugin-blackhole \
+ --without-plugin-example \
+ --without-plugin-federated \
+ --without-plugin-ibmdb2i \
+ --without-plugin-innobase \
+ --without-plugin-innodb_plugin \
+ --without-plugin-ndbcluster
+
+define HOST_MYSQL_BUILD_CMDS
+ $(MAKE) -C $(@D)/include my_config.h
+ $(MAKE) -C $(@D)/mysys libmysys.a
+ $(MAKE) -C $(@D)/strings libmystrings.a
+ $(MAKE) -C $(@D)/vio libvio.a
+ $(MAKE) -C $(@D)/dbug libdbug.a
+ $(MAKE) -C $(@D)/regex libregex.a
+ $(MAKE) -C $(@D)/sql gen_lex_hash
+endef
+
+define HOST_MYSQL_INSTALL_CMDS
+ $(INSTALL) -m 0755 $(@D)/sql/gen_lex_hash $(HOST_DIR)/usr/bin/
+endef
+
+else
+MYSQL_CONF_OPT += \
+ --without-server
+endif
+
+
define MYSQL_REMOVE_TEST_PROGS
rm -rf $(TARGET_DIR)/usr/mysql-test $(TARGET_DIR)/usr/sql-bench
endef
@@ -46,3 +89,4 @@ MYSQL_POST_INSTALL_TARGET_HOOKS += MYSQL_REMOVE_TEST_PROGS
MYSQL_POST_INSTALL_TARGET_HOOKS += MYSQL_ADD_MYSQL_LIB_PATH
$(eval $(autotools-package))
+$(eval $(host-autotools-package))
--
1.7.9.5
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH 2/2] package/mysql: fix debugging options
2014-02-12 22:39 [Buildroot] [PATCH 1/2] mysql: add option to build the server Marcelo Gutiérrez
@ 2014-02-12 22:39 ` Marcelo Gutiérrez
2014-02-23 19:12 ` Yann E. MORIN
2014-02-23 19:10 ` [Buildroot] [PATCH 1/2] mysql: add option to build the server Yann E. MORIN
` (2 subsequent siblings)
3 siblings, 1 reply; 11+ messages in thread
From: Marcelo Gutiérrez @ 2014-02-12 22:39 UTC (permalink / raw)
To: buildroot
From: Marcelo Gutierrez <kuyurix@gmail.com>
The usual --{en,dis}able-debug passed by the infrastructure are not
recognised by mysql's ./configure, as it uses unusual options.
Also, debugging is only meaningfull to the server, not the client.
Signed-off-by: Marcelo Gutierrez (UTN/FRH) <kuyurix@gmail.com>
[yann.morin.1998 at free.fr: actually add the options, move in server if-block]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Arnout Vandecappelle <arnout@mind.be>
---
package/mysql/mysql.mk | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/package/mysql/mysql.mk b/package/mysql/mysql.mk
index 27afc9f..95b30b7 100644
--- a/package/mysql/mysql.mk
+++ b/package/mysql/mysql.mk
@@ -30,8 +30,7 @@ MYSQL_CONF_OPT = \
--without-libedit \
--without-readline \
--with-low-memory \
- --enable-thread-safe-client \
- $(ENABLE_DEBUG)
+ --enable-thread-safe-client
ifeq ($(BR2_PACKAGE_MYSQL_SERVER),y)
MYSQL_DEPENDENCIES += host-mysql host-bison
@@ -57,6 +56,14 @@ MYSQL_CONF_OPT += \
--without-plugin-innodb_plugin \
--without-plugin-ndbcluster
+# Debugging is only available for the server, so no need for
+# this if-block outside of the server if-block
+ifeq ($(BR2_ENABLE_DEBUG),y)
+MYSQL_CONF_OPT += --with-debug=full
+else
+MYSQL_CONF_OPT += --without-debug
+endif
+
define HOST_MYSQL_BUILD_CMDS
$(MAKE) -C $(@D)/include my_config.h
$(MAKE) -C $(@D)/mysys libmysys.a
--
1.7.9.5
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH 1/2] mysql: add option to build the server
2014-02-12 22:39 [Buildroot] [PATCH 1/2] mysql: add option to build the server Marcelo Gutiérrez
2014-02-12 22:39 ` [Buildroot] [PATCH 2/2] package/mysql: fix debugging options Marcelo Gutiérrez
@ 2014-02-23 19:10 ` Yann E. MORIN
2014-02-23 20:15 ` Peter Korsgaard
2014-03-03 22:35 ` Thomas Petazzoni
3 siblings, 0 replies; 11+ messages in thread
From: Yann E. MORIN @ 2014-02-23 19:10 UTC (permalink / raw)
To: buildroot
Marcelo, All,
On 2014-02-12 22:39 +0000, Marcelo Guti?rrez spake thusly:
> From: Marcelo Gutierrez <kuyurix@gmail.com>
>
> Signed-off-by: Marcelo Gutierrez (UTN/FRH) <kuyurix@gmail.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Sorry for the delay.
Regards,
Yann E. MORIN.
> ---
> package/mysql/Config.in | 9 +
> .../mysql-0003-ac_stack_direction-is-unset.patch | 15 +
> .../mysql-0004-Fix-gen_lex_hash-execution.patch | 32 +
> ...ql-0005-bison_3_breaks_mysql_server_build.patch | 3310 ++++++++++++++++++++
> package/mysql/mysql.mk | 46 +-
> 5 files changed, 3411 insertions(+), 1 deletion(-)
> create mode 100644 package/mysql/mysql-0003-ac_stack_direction-is-unset.patch
> create mode 100644 package/mysql/mysql-0004-Fix-gen_lex_hash-execution.patch
> create mode 100644 package/mysql/mysql-0005-bison_3_breaks_mysql_server_build.patch
>
> diff --git a/package/mysql/Config.in b/package/mysql/Config.in
> index 0def957..7133892 100644
> --- a/package/mysql/Config.in
> +++ b/package/mysql/Config.in
> @@ -10,6 +10,15 @@ config BR2_PACKAGE_MYSQL
>
> http://www.mysql.com/
>
> +if BR2_PACKAGE_MYSQL
> +
> +config BR2_PACKAGE_MYSQL_SERVER
> + bool "MySQL server"
> + help
> + Install the MySQL server on the target.
> +
> +endif
> +
> comment "MySQL needs a toolchain w/ C++, threads"
> depends on BR2_USE_MMU
> depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS
> diff --git a/package/mysql/mysql-0003-ac_stack_direction-is-unset.patch b/package/mysql/mysql-0003-ac_stack_direction-is-unset.patch
> new file mode 100644
> index 0000000..6fef0a9
> --- /dev/null
> +++ b/package/mysql/mysql-0003-ac_stack_direction-is-unset.patch
> @@ -0,0 +1,15 @@
> +misc.m4: ac_cv_c_stack_direction is unset.
> +
> +Signed-off-by: Marcelo Gutierrez (UTN/FRH) <kuyurix@gmail.com>
> +
> +--- mysql-5.1.70.orig/config/ac-macros/misc.m4
> ++++ mysql-5.1.70/config/ac-macros/misc.m4
> +@@ -477,7 +477,7 @@
> + exit(ptr_f(&a) < 0);
> + }
> + ], ac_cv_c_stack_direction=1, ac_cv_c_stack_direction=-1,
> +- ac_cv_c_stack_direction=)])
> ++ ac_cv_c_stack_direction=0)])
> + AC_DEFINE_UNQUOTED(STACK_DIRECTION, $ac_cv_c_stack_direction)
> + ])dnl
> +
> diff --git a/package/mysql/mysql-0004-Fix-gen_lex_hash-execution.patch b/package/mysql/mysql-0004-Fix-gen_lex_hash-execution.patch
> new file mode 100644
> index 0000000..b91ed4f
> --- /dev/null
> +++ b/package/mysql/mysql-0004-Fix-gen_lex_hash-execution.patch
> @@ -0,0 +1,32 @@
> +Makefile: fix cross-compiling the server
> +
> +MySQL Makefile believes it can run code it just compiled, to
> +generate a header. This does not work for cross-compilation.
> +
> +Instead, use a pre-installed host-version of the required tool.
> +
> +Signed-off-by: Marcelo Gutierrez (UTN/FRH) <kuyurix@gmail.com>
> +
> +--- mysql-5.1.70/sql/Makefile.am
> ++++ mysql-5.1.70.patch/sql/Makefile.am
> +@@ -177,7 +177,7 @@
> + # this avoid the rebuild of the built files in a source dist
> + lex_hash.h: gen_lex_hash.cc lex.h
> + $(MAKE) $(AM_MAKEFLAGS) gen_lex_hash$(EXEEXT)
> +- ./gen_lex_hash$(EXEEXT) > $@-t
> ++ gen_lex_hash$(EXEEXT) > $@-t
> + $(MV) $@-t $@
> +
> + # For testing of udf_example.so
> +
> +--- mysql-5.1.70/sql/Makefile.in
> ++++ mysql-5.1.70.patch/sql/Makefile.in
> +@@ -1310,7 +1310,7 @@
> + # this avoid the rebuild of the built files in a source dist
> + lex_hash.h: gen_lex_hash.cc lex.h
> + $(MAKE) $(AM_MAKEFLAGS) gen_lex_hash$(EXEEXT)
> +- ./gen_lex_hash$(EXEEXT) > $@-t
> ++ gen_lex_hash$(EXEEXT) > $@-t
> + $(MV) $@-t $@
> +
> + # We might have some stuff not built in this build, but that we want to install
> diff --git a/package/mysql/mysql-0005-bison_3_breaks_mysql_server_build.patch b/package/mysql/mysql-0005-bison_3_breaks_mysql_server_build.patch
> new file mode 100644
> index 0000000..918fe24
> --- /dev/null
> +++ b/package/mysql/mysql-0005-bison_3_breaks_mysql_server_build.patch
> @@ -0,0 +1,3310 @@
> +fix the yacc code in mysql
> +
> +Signed-off-by: Marcelo Gutierrez (UTN/FRH) <kuyurix@gmail.com>
> +---
> +diff -uNr mysql-5.1.73.orig/sql/sql_lex.cc mysql-5.1.73/sql/sql_lex.cc
> +--- mysql-5.1.73.orig/sql/sql_lex.cc 2013-11-04 18:52:27.000000000 +0000
> ++++ mysql-5.1.73/sql/sql_lex.cc 2014-02-12 14:12:04.244111625 +0000
> +@@ -775,14 +775,13 @@
> + (which can't be followed by a signed number)
> + */
> +
> +-int MYSQLlex(void *arg, void *yythd)
> ++int MYSQLlex(void *arg, THD *thd)
> + {
> + reg1 uchar c= 0;
> + bool comment_closed;
> + int tokval, result_state;
> + uint length;
> + enum my_lex_states state;
> +- THD *thd= (THD *)yythd;
> + Lex_input_stream *lip= & thd->m_parser_state->m_lip;
> + LEX *lex= thd->lex;
> + YYSTYPE *yylval=(YYSTYPE*) arg;
> +diff -uNr mysql-5.1.73.orig/sql/sql_lex.h mysql-5.1.73/sql/sql_lex.h
> +--- mysql-5.1.73.orig/sql/sql_lex.h 2013-11-04 18:52:27.000000000 +0000
> ++++ mysql-5.1.73/sql/sql_lex.h 2014-02-12 14:17:19.424106423 +0000
> +@@ -2072,7 +2072,7 @@
> + extern void lex_free(void);
> + extern void lex_start(THD *thd);
> + extern void lex_end(LEX *lex);
> +-extern int MYSQLlex(void *arg, void *yythd);
> ++extern int MYSQLlex(void *arg, THD *thd);
> +
> + extern void trim_whitespace(CHARSET_INFO *cs, LEX_STRING *str);
> +
> +diff -uNr mysql-5.1.73.orig/sql/sql_parse.cc mysql-5.1.73/sql/sql_parse.cc
> +--- mysql-5.1.73.orig/sql/sql_parse.cc 2013-11-04 18:52:27.000000000 +0000
> ++++ mysql-5.1.73/sql/sql_parse.cc 2014-02-12 14:19:20.424104427 +0000
> +@@ -8012,7 +8012,7 @@
> + }
> +
> +
> +-extern int MYSQLparse(void *thd); // from sql_yacc.cc
> ++extern int MYSQLparse(THD *thd); // from sql_yacc.cc
> +
> +
> + /**
> +diff -uNr mysql-5.1.73.orig/sql/sql_yacc.yy mysql-5.1.73/sql/sql_yacc.yy
> +--- mysql-5.1.73.orig/sql/sql_yacc.yy 2013-11-04 18:52:27.000000000 +0000
> ++++ mysql-5.1.73/sql/sql_yacc.yy 2014-02-12 20:17:06.707750140 +0000
> +@@ -23,19 +23,13 @@
> + */
> +
> + %{
> +-/* thd is passed as an argument to yyparse(), and subsequently to yylex().
> +-** The type will be void*, so it must be cast to (THD*) when used.
> +-** Use the YYTHD macro for this.
> +-*/
> +-#define YYPARSE_PARAM yythd
> +-#define YYLEX_PARAM yythd
> +-#define YYTHD ((THD *)yythd)
> +-#define YYLIP (& YYTHD->m_parser_state->m_lip)
> ++
> ++#define YYLIP (& thd->m_parser_state->m_lip)
> +
> + #define MYSQL_YACC
> + #define YYINITDEPTH 100
> + #define YYMAXDEPTH 3200 /* Because of 64K stack */
> +-#define Lex (YYTHD->lex)
> ++#define Lex (thd->lex)
> + #define Select Lex->current_select
> + #include "mysql_priv.h"
> + #include "slave.h"
> +@@ -55,7 +49,7 @@
> + #pragma warning (disable : 4065)
> + #endif
> +
> +-int yylex(void *yylval, void *yythd);
> ++int yylex(void *yylval, THD *thd);
> +
> + const LEX_STRING null_lex_str= {0,0};
> +
> +@@ -64,7 +58,7 @@
> + ulong val= *(F); \
> + if (my_yyoverflow((B), (D), &val)) \
> + { \
> +- yyerror((char*) (A)); \
> ++ yyerror(current_thd, (char*) (A)); \
> + return 2; \
> + } \
> + else \
> +@@ -76,7 +70,7 @@
> + #define MYSQL_YYABORT \
> + do \
> + { \
> +- LEX::cleanup_lex_after_parse_error(YYTHD);\
> ++ LEX::cleanup_lex_after_parse_error(thd);\
> + YYABORT; \
> + } while (0)
> +
> +@@ -159,9 +153,8 @@
> + to abort from the parser.
> + */
> +
> +-void MYSQLerror(const char *s)
> ++void MYSQLerror(THD *thd, const char *s)
> + {
> +- THD *thd= current_thd;
> +
> + /*
> + Restore the original LEX if it was replaced when parsing
> +@@ -675,7 +668,10 @@
> + bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize);
> + %}
> +
> +-%pure_parser /* We have threads */
> ++/* We have threads */
> ++%define api.pure
> ++%parse-param { THD *thd }
> ++%lex-param { THD *thd }
> + /*
> + Currently there are 169 shift/reduce conflicts.
> + We should not introduce new conflicts any more.
> +@@ -1516,7 +1512,6 @@
> + query:
> + END_OF_INPUT
> + {
> +- THD *thd= YYTHD;
> + if (!thd->bootstrap &&
> + (!(thd->lex->select_lex.options & OPTION_FOUND_COMMENT)))
> + {
> +@@ -1530,7 +1525,7 @@
> + {
> + Lex_input_stream *lip = YYLIP;
> +
> +- if ((YYTHD->client_capabilities & CLIENT_MULTI_QUERIES) &&
> ++ if ((thd->client_capabilities & CLIENT_MULTI_QUERIES) &&
> + ! lip->stmt_prepare_mode &&
> + ! lip->eof())
> + {
> +@@ -1626,7 +1621,6 @@
> + deallocate:
> + deallocate_or_drop PREPARE_SYM ident
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + lex->sql_command= SQLCOM_DEALLOCATE_PREPARE;
> + lex->prepared_stmt_name= $3;
> +@@ -1641,7 +1635,6 @@
> + prepare:
> + PREPARE_SYM ident FROM prepare_src
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + lex->sql_command= SQLCOM_PREPARE;
> + lex->prepared_stmt_name= $2;
> +@@ -1651,14 +1644,12 @@
> + prepare_src:
> + TEXT_STRING_sys
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + lex->prepared_stmt_code= $1;
> + lex->prepared_stmt_code_is_varref= FALSE;
> + }
> + | '@' ident_or_text
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + lex->prepared_stmt_code= $2;
> + lex->prepared_stmt_code_is_varref= TRUE;
> +@@ -1668,7 +1659,6 @@
> + execute:
> + EXECUTE_SYM ident
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + lex->sql_command= SQLCOM_EXECUTE;
> + lex->prepared_stmt_name= $2;
> +@@ -1826,7 +1816,6 @@
> + create:
> + CREATE opt_table_options TABLE_SYM opt_if_not_exists table_ident
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + lex->sql_command= SQLCOM_CREATE_TABLE;
> + if (!lex->select_lex.add_table_to_list(thd, $5, NULL,
> +@@ -1844,13 +1833,13 @@
> + }
> + create2
> + {
> +- LEX *lex= YYTHD->lex;
> ++ LEX *lex= thd->lex;
> + lex->current_select= &lex->select_lex;
> + if ((lex->create_info.used_fields & HA_CREATE_USED_ENGINE) &&
> + !lex->create_info.db_type)
> + {
> +- lex->create_info.db_type= ha_default_handlerton(YYTHD);
> +- push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_WARN,
> ++ lex->create_info.db_type= ha_default_handlerton(thd);
> ++ push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
> + ER_WARN_USING_OTHER_HANDLER,
> + ER(ER_WARN_USING_OTHER_HANDLER),
> + ha_resolve_storage_engine_name(lex->create_info.db_type),
> +@@ -1979,7 +1968,7 @@
> + event_tail:
> + remember_name EVENT_SYM opt_if_not_exists sp_name
> + {
> +- THD *thd= YYTHD;
> ++ THD *thd= thd;
> + LEX *lex=Lex;
> +
> + lex->stmt_definition_begin= $1;
> +@@ -2046,7 +2035,7 @@
> + ev_starts:
> + /* empty */
> + {
> +- Item *item= new (YYTHD->mem_root) Item_func_now_local();
> ++ Item *item= new (thd->mem_root) Item_func_now_local();
> + if (item == NULL)
> + MYSQL_YYABORT;
> + Lex->event_parse_data->item_starts= item;
> +@@ -2096,7 +2085,6 @@
> +
> + ev_sql_stmt:
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + Lex_input_stream *lip= YYLIP;
> +
> +@@ -2139,7 +2127,6 @@
> + }
> + ev_sql_stmt_inner
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> +
> + /* return back to the original memory root ASAP */
> +@@ -2198,11 +2185,10 @@
> + $$= new sp_name($1, $3, true);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> +- $$->init_qname(YYTHD);
> ++ $$->init_qname(thd);
> + }
> + | ident
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + LEX_STRING db;
> + if (check_routine_name(&$1))
> +@@ -2272,7 +2258,7 @@
> + lex->sql_command= SQLCOM_CALL;
> + lex->spname= $2;
> + lex->value_list.empty();
> +- sp_add_used_routine(lex, YYTHD, $2, TYPE_ENUM_PROCEDURE);
> ++ sp_add_used_routine(lex, thd, $2, TYPE_ENUM_PROCEDURE);
> + }
> + opt_sp_cparam_list {}
> + ;
> +@@ -2345,7 +2331,7 @@
> + (enum enum_field_types)$3,
> + sp_param_in);
> +
> +- if (lex->sphead->fill_field_definition(YYTHD, lex,
> ++ if (lex->sphead->fill_field_definition(thd, lex,
> + (enum enum_field_types) $3,
> + &spvar->field_def))
> + {
> +@@ -2382,7 +2368,7 @@
> + (enum enum_field_types)$4,
> + (sp_param_mode_t)$1);
> +
> +- if (lex->sphead->fill_field_definition(YYTHD, lex,
> ++ if (lex->sphead->fill_field_definition(thd, lex,
> + (enum enum_field_types) $4,
> + &spvar->field_def))
> + {
> +@@ -2445,13 +2431,12 @@
> + {
> + LEX *lex= Lex;
> +
> +- lex->sphead->reset_lex(YYTHD);
> ++ lex->sphead->reset_lex(thd);
> + lex->spcont->declare_var_boundary($2);
> + }
> + type
> + sp_opt_default
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= Lex;
> + sp_pcontext *pctx= lex->spcont;
> + uint num_vars= pctx->context_var_count();
> +@@ -2477,7 +2462,7 @@
> + spvar->type= var_type;
> + spvar->dflt= dflt_value_item;
> +
> +- if (lex->sphead->fill_field_definition(YYTHD, lex, var_type,
> ++ if (lex->sphead->fill_field_definition(thd, lex, var_type,
> + &spvar->field_def))
> + {
> + MYSQL_YYABORT;
> +@@ -2501,7 +2486,7 @@
> + }
> +
> + pctx->declare_var_boundary(0);
> +- if (lex->sphead->restore_lex(YYTHD))
> ++ if (lex->sphead->restore_lex(thd))
> + MYSQL_YYABORT;
> + $$.vars= $2;
> + $$.conds= $$.hndlrs= $$.curs= 0;
> +@@ -2516,7 +2501,7 @@
> + my_error(ER_SP_DUP_COND, MYF(0), $2.str);
> + MYSQL_YYABORT;
> + }
> +- if(YYTHD->lex->spcont->push_cond(&$2, $5))
> ++ if(thd->lex->spcont->push_cond(&$2, $5))
> + MYSQL_YYABORT;
> + $$.vars= $$.hndlrs= $$.curs= 0;
> + $$.conds= 1;
> +@@ -2602,7 +2587,7 @@
> +
> + sp_cursor_stmt:
> + {
> +- Lex->sphead->reset_lex(YYTHD);
> ++ Lex->sphead->reset_lex(thd);
> + }
> + select
> + {
> +@@ -2618,7 +2603,7 @@
> + }
> + lex->sp_lex_in_use= TRUE;
> + $$= lex;
> +- if (lex->sphead->restore_lex(YYTHD))
> ++ if (lex->sphead->restore_lex(thd))
> + MYSQL_YYABORT;
> + }
> + ;
> +@@ -2662,7 +2647,7 @@
> + sp_cond:
> + ulong_num
> + { /* mysql errno */
> +- $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t));
> ++ $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t));
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + $$->type= sp_cond_type_t::number;
> +@@ -2675,7 +2660,7 @@
> + my_error(ER_SP_BAD_SQLSTATE, MYF(0), $3.str);
> + MYSQL_YYABORT;
> + }
> +- $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t));
> ++ $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t));
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + $$->type= sp_cond_type_t::state;
> +@@ -2705,21 +2690,21 @@
> + }
> + | SQLWARNING_SYM /* SQLSTATEs 01??? */
> + {
> +- $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t));
> ++ $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t));
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + $$->type= sp_cond_type_t::warning;
> + }
> + | not FOUND_SYM /* SQLSTATEs 02??? */
> + {
> +- $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t));
> ++ $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t));
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + $$->type= sp_cond_type_t::notfound;
> + }
> + | SQLEXCEPTION_SYM /* All other SQLSTATEs */
> + {
> +- $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t));
> ++ $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t));
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + $$->type= sp_cond_type_t::exception;
> +@@ -2789,7 +2774,6 @@
> +
> + sp_proc_stmt_statement:
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + Lex_input_stream *lip= YYLIP;
> +
> +@@ -2798,7 +2782,6 @@
> + }
> + statement
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + Lex_input_stream *lip= YYLIP;
> + sp_head *sp= lex->sphead;
> +@@ -2845,7 +2828,7 @@
> +
> + sp_proc_stmt_return:
> + RETURN_SYM
> +- { Lex->sphead->reset_lex(YYTHD); }
> ++ { Lex->sphead->reset_lex(thd); }
> + expr
> + {
> + LEX *lex= Lex;
> +@@ -2867,7 +2850,7 @@
> + MYSQL_YYABORT;
> + sp->m_flags|= sp_head::HAS_RETURN;
> + }
> +- if (sp->restore_lex(YYTHD))
> ++ if (sp->restore_lex(thd))
> + MYSQL_YYABORT;
> + }
> + ;
> +@@ -3094,7 +3077,7 @@
> + ;
> +
> + sp_if:
> +- { Lex->sphead->reset_lex(YYTHD); }
> ++ { Lex->sphead->reset_lex(thd); }
> + expr THEN_SYM
> + {
> + LEX *lex= Lex;
> +@@ -3108,7 +3091,7 @@
> + sp->add_cont_backpatch(i) ||
> + sp->add_instr(i))
> + MYSQL_YYABORT;
> +- if (sp->restore_lex(YYTHD))
> ++ if (sp->restore_lex(thd))
> + MYSQL_YYABORT;
> + }
> + sp_proc_stmts1
> +@@ -3147,7 +3130,7 @@
> + {
> + LEX *lex= Lex;
> + case_stmt_action_case(lex);
> +- lex->sphead->reset_lex(YYTHD); /* For expr $3 */
> ++ lex->sphead->reset_lex(thd); /* For expr $3 */
> + }
> + expr
> + {
> +@@ -3156,7 +3139,7 @@
> + MYSQL_YYABORT;
> +
> + /* For expr $3 */
> +- if (lex->sphead->restore_lex(YYTHD))
> ++ if (lex->sphead->restore_lex(thd))
> + MYSQL_YYABORT;
> + }
> + simple_when_clause_list
> +@@ -3198,7 +3181,7 @@
> + simple_when_clause:
> + WHEN_SYM
> + {
> +- Lex->sphead->reset_lex(YYTHD); /* For expr $3 */
> ++ Lex->sphead->reset_lex(thd); /* For expr $3 */
> + }
> + expr
> + {
> +@@ -3208,7 +3191,7 @@
> + if (case_stmt_action_when(lex, $3, true))
> + MYSQL_YYABORT;
> + /* For expr $3 */
> +- if (lex->sphead->restore_lex(YYTHD))
> ++ if (lex->sphead->restore_lex(thd))
> + MYSQL_YYABORT;
> + }
> + THEN_SYM
> +@@ -3223,7 +3206,7 @@
> + searched_when_clause:
> + WHEN_SYM
> + {
> +- Lex->sphead->reset_lex(YYTHD); /* For expr $3 */
> ++ Lex->sphead->reset_lex(thd); /* For expr $3 */
> + }
> + expr
> + {
> +@@ -3231,7 +3214,7 @@
> + if (case_stmt_action_when(lex, $3, false))
> + MYSQL_YYABORT;
> + /* For expr $3 */
> +- if (lex->sphead->restore_lex(YYTHD))
> ++ if (lex->sphead->restore_lex(thd))
> + MYSQL_YYABORT;
> + }
> + THEN_SYM
> +@@ -3395,7 +3378,7 @@
> + MYSQL_YYABORT;
> + }
> + | WHILE_SYM
> +- { Lex->sphead->reset_lex(YYTHD); }
> ++ { Lex->sphead->reset_lex(thd); }
> + expr DO_SYM
> + {
> + LEX *lex= Lex;
> +@@ -3409,7 +3392,7 @@
> + sp->new_cont_backpatch(i) ||
> + sp->add_instr(i))
> + MYSQL_YYABORT;
> +- if (sp->restore_lex(YYTHD))
> ++ if (sp->restore_lex(thd))
> + MYSQL_YYABORT;
> + }
> + sp_proc_stmts1 END WHILE_SYM
> +@@ -3424,7 +3407,7 @@
> + lex->sphead->do_cont_backpatch();
> + }
> + | REPEAT_SYM sp_proc_stmts1 UNTIL_SYM
> +- { Lex->sphead->reset_lex(YYTHD); }
> ++ { Lex->sphead->reset_lex(thd); }
> + expr END REPEAT_SYM
> + {
> + LEX *lex= Lex;
> +@@ -3436,7 +3419,7 @@
> + if (i == NULL ||
> + lex->sphead->add_instr(i))
> + MYSQL_YYABORT;
> +- if (lex->sphead->restore_lex(YYTHD))
> ++ if (lex->sphead->restore_lex(thd))
> + MYSQL_YYABORT;
> + /* We can shortcut the cont_backpatch here */
> + i->m_cont_dest= ip+1;
> +@@ -3859,7 +3842,6 @@
> + create3 {}
> + | LIKE table_ident
> + {
> +- THD *thd= YYTHD;
> + TABLE_LIST *src_table;
> + LEX *lex= thd->lex;
> +
> +@@ -3873,7 +3855,6 @@
> + }
> + | '(' LIKE table_ident ')'
> + {
> +- THD *thd= YYTHD;
> + TABLE_LIST *src_table;
> + LEX *lex= thd->lex;
> +
> +@@ -4342,7 +4323,6 @@
> + bit_expr
> + {
> + Item *part_expr= $1;
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + Name_resolution_context *context= &lex->current_select->context;
> + TABLE_LIST *save_list= context->table_list;
> +@@ -4364,7 +4344,7 @@
> + my_error(ER_PARTITION_FUNCTION_IS_NOT_ALLOWED, MYF(0));
> + MYSQL_YYABORT;
> + }
> +- if (part_expr->fix_fields(YYTHD, (Item**)0) ||
> ++ if (part_expr->fix_fields(thd, (Item**)0) ||
> + ((context->table_list= save_list), FALSE) ||
> + (!part_expr->const_item()) ||
> + (!lex->safe_to_cache_query))
> +@@ -4629,7 +4609,7 @@
> + | TYPE_SYM opt_equal storage_engines
> + {
> + Lex->create_info.db_type= $3;
> +- WARN_DEPRECATED(yythd, "6.0", "TYPE=storage_engine",
> ++ WARN_DEPRECATED(thd, "6.0", "TYPE=storage_engine",
> + "'ENGINE=storage_engine'");
> + Lex->create_info.used_fields|= HA_CREATE_USED_ENGINE;
> + }
> +@@ -4791,19 +4771,19 @@
> + storage_engines:
> + ident_or_text
> + {
> +- plugin_ref plugin= ha_resolve_by_name(YYTHD, &$1);
> ++ plugin_ref plugin= ha_resolve_by_name(thd, &$1);
> +
> + if (plugin)
> + $$= plugin_data(plugin, handlerton*);
> + else
> + {
> +- if (YYTHD->variables.sql_mode & MODE_NO_ENGINE_SUBSTITUTION)
> ++ if (thd->variables.sql_mode & MODE_NO_ENGINE_SUBSTITUTION)
> + {
> + my_error(ER_UNKNOWN_STORAGE_ENGINE, MYF(0), $1.str);
> + MYSQL_YYABORT;
> + }
> + $$= 0;
> +- push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_WARN,
> ++ push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
> + ER_UNKNOWN_STORAGE_ENGINE,
> + ER(ER_UNKNOWN_STORAGE_ENGINE),
> + $1.str);
> +@@ -4815,7 +4795,7 @@
> + ident_or_text
> + {
> + plugin_ref plugin;
> +- if ((plugin= ha_resolve_by_name(YYTHD, &$1)))
> ++ if ((plugin= ha_resolve_by_name(thd, &$1)))
> + $$= plugin_data(plugin, handlerton*);
> + else
> + {
> +@@ -5043,7 +5023,7 @@
> + {
> + char buff[sizeof("YEAR()") + MY_INT64_NUM_DECIMAL_DIGITS + 1];
> + my_snprintf(buff, sizeof(buff), "YEAR(%lu)", length);
> +- push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_NOTE,
> ++ push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_NOTE,
> + ER_WARN_DEPRECATED_SYNTAX,
> + ER(ER_WARN_DEPRECATED_SYNTAX),
> + buff, "YEAR(4)");
> +@@ -5057,7 +5037,7 @@
> + { $$=MYSQL_TYPE_TIME; }
> + | TIMESTAMP opt_field_length
> + {
> +- if (YYTHD->variables.sql_mode & MODE_MAXDB)
> ++ if (thd->variables.sql_mode & MODE_MAXDB)
> + $$=MYSQL_TYPE_DATETIME;
> + else
> + {
> +@@ -5189,7 +5169,7 @@
> + real_type:
> + REAL
> + {
> +- $$= YYTHD->variables.sql_mode & MODE_REAL_AS_FLOAT ?
> ++ $$= thd->variables.sql_mode & MODE_REAL_AS_FLOAT ?
> + MYSQL_TYPE_FLOAT : MYSQL_TYPE_DOUBLE;
> + }
> + | DOUBLE_SYM
> +@@ -5263,7 +5243,7 @@
> + | DEFAULT now_or_signed_literal { Lex->default_value=$2; }
> + | ON UPDATE_SYM NOW_SYM optional_braces
> + {
> +- Item *item= new (YYTHD->mem_root) Item_func_now_local();
> ++ Item *item= new (thd->mem_root) Item_func_now_local();
> + if (item == NULL)
> + MYSQL_YYABORT;
> + Lex->on_update_value= item;
> +@@ -5312,7 +5292,7 @@
> + now_or_signed_literal:
> + NOW_SYM optional_braces
> + {
> +- $$= new (YYTHD->mem_root) Item_func_now_local();
> ++ $$= new (thd->mem_root) Item_func_now_local();
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> +@@ -5673,7 +5653,6 @@
> + alter:
> + ALTER opt_ignore TABLE_SYM table_ident
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + lex->name.str= 0;
> + lex->name.length= 0;
> +@@ -5799,7 +5778,7 @@
> + Event_parse_data.
> + */
> +
> +- if (!(Lex->event_parse_data= Event_parse_data::new_instance(YYTHD)))
> ++ if (!(Lex->event_parse_data= Event_parse_data::new_instance(thd)))
> + MYSQL_YYABORT;
> + Lex->event_parse_data->identifier= $4;
> +
> +@@ -6192,7 +6171,6 @@
> + {
> + if (!$4)
> + {
> +- THD *thd= YYTHD;
> + $4= thd->variables.collation_database;
> + }
> + $5= $5 ? $5 : $4;
> +@@ -6556,7 +6534,7 @@
> + assign_to_keycache:
> + table_ident cache_keys_spec
> + {
> +- if (!Select->add_table_to_list(YYTHD, $1, NULL, 0, TL_READ,
> ++ if (!Select->add_table_to_list(thd, $1, NULL, 0, TL_READ,
> + Select->pop_index_hints()))
> + MYSQL_YYABORT;
> + }
> +@@ -6585,7 +6563,7 @@
> + preload_keys:
> + table_ident cache_keys_spec opt_ignore_leaves
> + {
> +- if (!Select->add_table_to_list(YYTHD, $1, NULL, $3, TL_READ,
> ++ if (!Select->add_table_to_list(thd, $1, NULL, $3, TL_READ,
> + Select->pop_index_hints()))
> + MYSQL_YYABORT;
> + }
> +@@ -6593,7 +6571,7 @@
> +
> + cache_keys_spec:
> + {
> +- Lex->select_lex.alloc_index_hints(YYTHD);
> ++ Lex->select_lex.alloc_index_hints(thd);
> + Select->set_index_hint_type(INDEX_HINT_USE,
> + global_system_variables.old_mode ?
> + INDEX_HINT_MASK_JOIN :
> +@@ -6813,7 +6791,6 @@
> + | select_item
> + | '*'
> + {
> +- THD *thd= YYTHD;
> + Item *item= new (thd->mem_root)
> + Item_field(&thd->lex->current_select->context,
> + NULL, NULL, "*");
> +@@ -6828,7 +6805,6 @@
> + select_item:
> + remember_name select_item2 remember_end select_alias
> + {
> +- THD *thd= YYTHD;
> + DBUG_ASSERT($1 < $3);
> +
> + if (add_item_to_list(thd, $2))
> +@@ -6929,7 +6905,7 @@
> + else
> + {
> + /* X OR Y */
> +- $$ = new (YYTHD->mem_root) Item_cond_or($1, $3);
> ++ $$ = new (thd->mem_root) Item_cond_or($1, $3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> +@@ -6937,7 +6913,7 @@
> + | expr XOR expr %prec XOR
> + {
> + /* XOR is a proprietary extension */
> +- $$ = new (YYTHD->mem_root) Item_cond_xor($1, $3);
> ++ $$ = new (thd->mem_root) Item_cond_xor($1, $3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> +@@ -6979,50 +6955,50 @@
> + else
> + {
> + /* X AND Y */
> +- $$ = new (YYTHD->mem_root) Item_cond_and($1, $3);
> ++ $$ = new (thd->mem_root) Item_cond_and($1, $3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + }
> + | NOT_SYM expr %prec NOT_SYM
> + {
> +- $$= negate_expression(YYTHD, $2);
> ++ $$= negate_expression(thd, $2);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | bool_pri IS TRUE_SYM %prec IS
> + {
> +- $$= new (YYTHD->mem_root) Item_func_istrue($1);
> ++ $$= new (thd->mem_root) Item_func_istrue($1);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | bool_pri IS not TRUE_SYM %prec IS
> + {
> +- $$= new (YYTHD->mem_root) Item_func_isnottrue($1);
> ++ $$= new (thd->mem_root) Item_func_isnottrue($1);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | bool_pri IS FALSE_SYM %prec IS
> + {
> +- $$= new (YYTHD->mem_root) Item_func_isfalse($1);
> ++ $$= new (thd->mem_root) Item_func_isfalse($1);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | bool_pri IS not FALSE_SYM %prec IS
> + {
> +- $$= new (YYTHD->mem_root) Item_func_isnotfalse($1);
> ++ $$= new (thd->mem_root) Item_func_isnotfalse($1);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | bool_pri IS UNKNOWN_SYM %prec IS
> + {
> +- $$= new (YYTHD->mem_root) Item_func_isnull($1);
> ++ $$= new (thd->mem_root) Item_func_isnull($1);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | bool_pri IS not UNKNOWN_SYM %prec IS
> + {
> +- $$= new (YYTHD->mem_root) Item_func_isnotnull($1);
> ++ $$= new (thd->mem_root) Item_func_isnotnull($1);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> +@@ -7032,19 +7008,19 @@
> + bool_pri:
> + bool_pri IS NULL_SYM %prec IS
> + {
> +- $$= new (YYTHD->mem_root) Item_func_isnull($1);
> ++ $$= new (thd->mem_root) Item_func_isnull($1);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | bool_pri IS not NULL_SYM %prec IS
> + {
> +- $$= new (YYTHD->mem_root) Item_func_isnotnull($1);
> ++ $$= new (thd->mem_root) Item_func_isnotnull($1);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | bool_pri EQUAL_SYM predicate %prec EQUAL_SYM
> + {
> +- $$= new (YYTHD->mem_root) Item_func_equal($1,$3);
> ++ $$= new (thd->mem_root) Item_func_equal($1,$3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> +@@ -7066,13 +7042,12 @@
> + predicate:
> + bit_expr IN_SYM '(' subselect ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_in_subselect($1, $4);
> ++ $$= new (thd->mem_root) Item_in_subselect($1, $4);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | bit_expr not IN_SYM '(' subselect ')'
> + {
> +- THD *thd= YYTHD;
> + Item *item= new (thd->mem_root) Item_in_subselect($1, $5);
> + if (item == NULL)
> + MYSQL_YYABORT;
> +@@ -7082,7 +7057,7 @@
> + }
> + | bit_expr IN_SYM '(' expr ')'
> + {
> +- $$= handle_sql2003_note184_exception(YYTHD, $1, true, $4);
> ++ $$= handle_sql2003_note184_exception(thd, $1, true, $4);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> +@@ -7090,13 +7065,13 @@
> + {
> + $6->push_front($4);
> + $6->push_front($1);
> +- $$= new (YYTHD->mem_root) Item_func_in(*$6);
> ++ $$= new (thd->mem_root) Item_func_in(*$6);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | bit_expr not IN_SYM '(' expr ')'
> + {
> +- $$= handle_sql2003_note184_exception(YYTHD, $1, false, $5);
> ++ $$= handle_sql2003_note184_exception(thd, $1, false, $5);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> +@@ -7104,7 +7079,7 @@
> + {
> + $7->push_front($5);
> + $7->push_front($1);
> +- Item_func_in *item = new (YYTHD->mem_root) Item_func_in(*$7);
> ++ Item_func_in *item = new (thd->mem_root) Item_func_in(*$7);
> + if (item == NULL)
> + MYSQL_YYABORT;
> + item->negate();
> +@@ -7112,14 +7087,14 @@
> + }
> + | bit_expr BETWEEN_SYM bit_expr AND_SYM predicate
> + {
> +- $$= new (YYTHD->mem_root) Item_func_between($1,$3,$5);
> ++ $$= new (thd->mem_root) Item_func_between($1,$3,$5);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | bit_expr not BETWEEN_SYM bit_expr AND_SYM predicate
> + {
> + Item_func_between *item;
> +- item= new (YYTHD->mem_root) Item_func_between($1,$4,$6);
> ++ item= new (thd->mem_root) Item_func_between($1,$4,$6);
> + if (item == NULL)
> + MYSQL_YYABORT;
> + item->negate();
> +@@ -7127,42 +7102,42 @@
> + }
> + | bit_expr SOUNDS_SYM LIKE bit_expr
> + {
> +- Item *item1= new (YYTHD->mem_root) Item_func_soundex($1);
> +- Item *item4= new (YYTHD->mem_root) Item_func_soundex($4);
> ++ Item *item1= new (thd->mem_root) Item_func_soundex($1);
> ++ Item *item4= new (thd->mem_root) Item_func_soundex($4);
> + if ((item1 == NULL) || (item4 == NULL))
> + MYSQL_YYABORT;
> +- $$= new (YYTHD->mem_root) Item_func_eq(item1, item4);
> ++ $$= new (thd->mem_root) Item_func_eq(item1, item4);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | bit_expr LIKE simple_expr opt_escape
> + {
> +- $$= new (YYTHD->mem_root) Item_func_like($1,$3,$4,Lex->escape_used);
> ++ $$= new (thd->mem_root) Item_func_like($1,$3,$4,Lex->escape_used);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | bit_expr not LIKE simple_expr opt_escape
> + {
> +- Item *item= new (YYTHD->mem_root) Item_func_like($1,$4,$5,
> ++ Item *item= new (thd->mem_root) Item_func_like($1,$4,$5,
> + Lex->escape_used);
> + if (item == NULL)
> + MYSQL_YYABORT;
> +- $$= new (YYTHD->mem_root) Item_func_not(item);
> ++ $$= new (thd->mem_root) Item_func_not(item);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | bit_expr REGEXP bit_expr
> + {
> +- $$= new (YYTHD->mem_root) Item_func_regex($1,$3);
> ++ $$= new (thd->mem_root) Item_func_regex($1,$3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | bit_expr not REGEXP bit_expr
> + {
> +- Item *item= new (YYTHD->mem_root) Item_func_regex($1,$4);
> ++ Item *item= new (thd->mem_root) Item_func_regex($1,$4);
> + if (item == NULL)
> + MYSQL_YYABORT;
> +- $$= negate_expression(YYTHD, item);
> ++ $$= negate_expression(thd, item);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> +@@ -7172,85 +7147,85 @@
> + bit_expr:
> + bit_expr '|' bit_expr %prec '|'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_bit_or($1,$3);
> ++ $$= new (thd->mem_root) Item_func_bit_or($1,$3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | bit_expr '&' bit_expr %prec '&'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_bit_and($1,$3);
> ++ $$= new (thd->mem_root) Item_func_bit_and($1,$3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | bit_expr SHIFT_LEFT bit_expr %prec SHIFT_LEFT
> + {
> +- $$= new (YYTHD->mem_root) Item_func_shift_left($1,$3);
> ++ $$= new (thd->mem_root) Item_func_shift_left($1,$3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | bit_expr SHIFT_RIGHT bit_expr %prec SHIFT_RIGHT
> + {
> +- $$= new (YYTHD->mem_root) Item_func_shift_right($1,$3);
> ++ $$= new (thd->mem_root) Item_func_shift_right($1,$3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | bit_expr '+' bit_expr %prec '+'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_plus($1,$3);
> ++ $$= new (thd->mem_root) Item_func_plus($1,$3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | bit_expr '-' bit_expr %prec '-'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_minus($1,$3);
> ++ $$= new (thd->mem_root) Item_func_minus($1,$3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | bit_expr '+' INTERVAL_SYM expr interval %prec '+'
> + {
> +- $$= new (YYTHD->mem_root) Item_date_add_interval($1,$4,$5,0);
> ++ $$= new (thd->mem_root) Item_date_add_interval($1,$4,$5,0);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | bit_expr '-' INTERVAL_SYM expr interval %prec '-'
> + {
> +- $$= new (YYTHD->mem_root) Item_date_add_interval($1,$4,$5,1);
> ++ $$= new (thd->mem_root) Item_date_add_interval($1,$4,$5,1);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | bit_expr '*' bit_expr %prec '*'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_mul($1,$3);
> ++ $$= new (thd->mem_root) Item_func_mul($1,$3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | bit_expr '/' bit_expr %prec '/'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_div($1,$3);
> ++ $$= new (thd->mem_root) Item_func_div($1,$3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | bit_expr '%' bit_expr %prec '%'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_mod($1,$3);
> ++ $$= new (thd->mem_root) Item_func_mod($1,$3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | bit_expr DIV_SYM bit_expr %prec DIV_SYM
> + {
> +- $$= new (YYTHD->mem_root) Item_func_int_div($1,$3);
> ++ $$= new (thd->mem_root) Item_func_int_div($1,$3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | bit_expr MOD_SYM bit_expr %prec MOD_SYM
> + {
> +- $$= new (YYTHD->mem_root) Item_func_mod($1,$3);
> ++ $$= new (thd->mem_root) Item_func_mod($1,$3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | bit_expr '^' bit_expr
> + {
> +- $$= new (YYTHD->mem_root) Item_func_bit_xor($1,$3);
> ++ $$= new (thd->mem_root) Item_func_bit_xor($1,$3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> +@@ -7299,7 +7274,6 @@
> + | function_call_conflict
> + | simple_expr COLLATE_SYM ident_or_text %prec NEG
> + {
> +- THD *thd= YYTHD;
> + Item *i1= new (thd->mem_root) Item_string($3.str,
> + $3.length,
> + thd->charset());
> +@@ -7315,7 +7289,7 @@
> + | sum_expr
> + | simple_expr OR_OR_SYM simple_expr
> + {
> +- $$= new (YYTHD->mem_root) Item_func_concat($1, $3);
> ++ $$= new (thd->mem_root) Item_func_concat($1, $3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> +@@ -7325,25 +7299,25 @@
> + }
> + | '-' simple_expr %prec NEG
> + {
> +- $$= new (YYTHD->mem_root) Item_func_neg($2);
> ++ $$= new (thd->mem_root) Item_func_neg($2);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | '~' simple_expr %prec NEG
> + {
> +- $$= new (YYTHD->mem_root) Item_func_bit_neg($2);
> ++ $$= new (thd->mem_root) Item_func_bit_neg($2);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | not2 simple_expr %prec NEG
> + {
> +- $$= negate_expression(YYTHD, $2);
> ++ $$= negate_expression(thd, $2);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | '(' subselect ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_singlerow_subselect($2);
> ++ $$= new (thd->mem_root) Item_singlerow_subselect($2);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> +@@ -7352,20 +7326,20 @@
> + | '(' expr ',' expr_list ')'
> + {
> + $4->push_front($2);
> +- $$= new (YYTHD->mem_root) Item_row(*$4);
> ++ $$= new (thd->mem_root) Item_row(*$4);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | ROW_SYM '(' expr ',' expr_list ')'
> + {
> + $5->push_front($3);
> +- $$= new (YYTHD->mem_root) Item_row(*$5);
> ++ $$= new (thd->mem_root) Item_row(*$5);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | EXISTS '(' subselect ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_exists_subselect($3);
> ++ $$= new (thd->mem_root) Item_exists_subselect($3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> +@@ -7374,7 +7348,7 @@
> + | MATCH ident_list_arg AGAINST '(' bit_expr fulltext_options ')'
> + {
> + $2->push_front($5);
> +- Item_func_match *i1= new (YYTHD->mem_root) Item_func_match(*$2, $6);
> ++ Item_func_match *i1= new (thd->mem_root) Item_func_match(*$2, $6);
> + if (i1 == NULL)
> + MYSQL_YYABORT;
> + Select->add_ftfunc_to_list(i1);
> +@@ -7382,7 +7356,7 @@
> + }
> + | BINARY simple_expr %prec NEG
> + {
> +- $$= create_func_cast(YYTHD, $2, ITEM_CAST_CHAR, NULL, NULL,
> ++ $$= create_func_cast(thd, $2, ITEM_CAST_CHAR, NULL, NULL,
> + &my_charset_bin);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> +@@ -7390,27 +7364,27 @@
> + | CAST_SYM '(' expr AS cast_type ')'
> + {
> + LEX *lex= Lex;
> +- $$= create_func_cast(YYTHD, $3, $5, lex->length, lex->dec,
> ++ $$= create_func_cast(thd, $3, $5, lex->length, lex->dec,
> + lex->charset);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | CASE_SYM opt_expr when_list opt_else END
> + {
> +- $$= new (YYTHD->mem_root) Item_func_case(* $3, $2, $4 );
> ++ $$= new (thd->mem_root) Item_func_case(* $3, $2, $4 );
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | CONVERT_SYM '(' expr ',' cast_type ')'
> + {
> +- $$= create_func_cast(YYTHD, $3, $5, Lex->length, Lex->dec,
> ++ $$= create_func_cast(thd, $3, $5, Lex->length, Lex->dec,
> + Lex->charset);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | CONVERT_SYM '(' expr USING charset_name ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_conv_charset($3,$5);
> ++ $$= new (thd->mem_root) Item_func_conv_charset($3,$5);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> +@@ -7423,14 +7397,14 @@
> + my_error(ER_WRONG_COLUMN_NAME, MYF(0), il->my_name()->str);
> + MYSQL_YYABORT;
> + }
> +- $$= new (YYTHD->mem_root) Item_default_value(Lex->current_context(),
> ++ $$= new (thd->mem_root) Item_default_value(Lex->current_context(),
> + $3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | VALUES '(' simple_ident_nospvar ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_insert_value(Lex->current_context(),
> ++ $$= new (thd->mem_root) Item_insert_value(Lex->current_context(),
> + $3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> +@@ -7438,7 +7412,7 @@
> + | INTERVAL_SYM expr interval '+' expr %prec INTERVAL_SYM
> + /* we cannot put interval before - */
> + {
> +- $$= new (YYTHD->mem_root) Item_date_add_interval($5,$2,$3,0);
> ++ $$= new (thd->mem_root) Item_date_add_interval($5,$2,$3,0);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> +@@ -7453,19 +7427,19 @@
> + function_call_keyword:
> + CHAR_SYM '(' expr_list ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_char(*$3);
> ++ $$= new (thd->mem_root) Item_func_char(*$3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | CHAR_SYM '(' expr_list USING charset_name ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_char(*$3, $5);
> ++ $$= new (thd->mem_root) Item_func_char(*$3, $5);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | CURRENT_USER optional_braces
> + {
> +- $$= new (YYTHD->mem_root) Item_func_current_user(Lex->current_context());
> ++ $$= new (thd->mem_root) Item_func_current_user(Lex->current_context());
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + Lex->set_stmt_unsafe();
> +@@ -7473,31 +7447,30 @@
> + }
> + | DATE_SYM '(' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_date_typecast($3);
> ++ $$= new (thd->mem_root) Item_date_typecast($3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | DAY_SYM '(' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_dayofmonth($3);
> ++ $$= new (thd->mem_root) Item_func_dayofmonth($3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | HOUR_SYM '(' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_hour($3);
> ++ $$= new (thd->mem_root) Item_func_hour($3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | INSERT '(' expr ',' expr ',' expr ',' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_insert($3,$5,$7,$9);
> ++ $$= new (thd->mem_root) Item_func_insert($3,$5,$7,$9);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | INTERVAL_SYM '(' expr ',' expr ')' %prec INTERVAL_SYM
> + {
> +- THD *thd= YYTHD;
> + List<Item> *list= new (thd->mem_root) List<Item>;
> + if (list == NULL)
> + MYSQL_YYABORT;
> +@@ -7512,7 +7485,6 @@
> + }
> + | INTERVAL_SYM '(' expr ',' expr ',' expr_list ')' %prec INTERVAL_SYM
> + {
> +- THD *thd= YYTHD;
> + $7->push_front($5);
> + $7->push_front($3);
> + Item_row *item= new (thd->mem_root) Item_row(*$7);
> +@@ -7524,103 +7496,103 @@
> + }
> + | LEFT '(' expr ',' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_left($3,$5);
> ++ $$= new (thd->mem_root) Item_func_left($3,$5);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | MINUTE_SYM '(' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_minute($3);
> ++ $$= new (thd->mem_root) Item_func_minute($3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | MONTH_SYM '(' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_month($3);
> ++ $$= new (thd->mem_root) Item_func_month($3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | RIGHT '(' expr ',' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_right($3,$5);
> ++ $$= new (thd->mem_root) Item_func_right($3,$5);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | SECOND_SYM '(' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_second($3);
> ++ $$= new (thd->mem_root) Item_func_second($3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | TIME_SYM '(' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_time_typecast($3);
> ++ $$= new (thd->mem_root) Item_time_typecast($3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | TIMESTAMP '(' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_datetime_typecast($3);
> ++ $$= new (thd->mem_root) Item_datetime_typecast($3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | TIMESTAMP '(' expr ',' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_add_time($3, $5, 1, 0);
> ++ $$= new (thd->mem_root) Item_func_add_time($3, $5, 1, 0);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | TRIM '(' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_trim($3);
> ++ $$= new (thd->mem_root) Item_func_trim($3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | TRIM '(' LEADING expr FROM expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_ltrim($6,$4);
> ++ $$= new (thd->mem_root) Item_func_ltrim($6,$4);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | TRIM '(' TRAILING expr FROM expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_rtrim($6,$4);
> ++ $$= new (thd->mem_root) Item_func_rtrim($6,$4);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | TRIM '(' BOTH expr FROM expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_trim($6,$4);
> ++ $$= new (thd->mem_root) Item_func_trim($6,$4);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | TRIM '(' LEADING FROM expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_ltrim($5);
> ++ $$= new (thd->mem_root) Item_func_ltrim($5);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | TRIM '(' TRAILING FROM expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_rtrim($5);
> ++ $$= new (thd->mem_root) Item_func_rtrim($5);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | TRIM '(' BOTH FROM expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_trim($5);
> ++ $$= new (thd->mem_root) Item_func_trim($5);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | TRIM '(' expr FROM expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_trim($5,$3);
> ++ $$= new (thd->mem_root) Item_func_trim($5,$3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | USER '(' ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_user();
> ++ $$= new (thd->mem_root) Item_func_user();
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + Lex->set_stmt_unsafe();
> +@@ -7628,7 +7600,7 @@
> + }
> + | YEAR_SYM '(' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_year($3);
> ++ $$= new (thd->mem_root) Item_func_year($3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> +@@ -7649,34 +7621,34 @@
> + function_call_nonkeyword:
> + ADDDATE_SYM '(' expr ',' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_date_add_interval($3, $5,
> ++ $$= new (thd->mem_root) Item_date_add_interval($3, $5,
> + INTERVAL_DAY, 0);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | ADDDATE_SYM '(' expr ',' INTERVAL_SYM expr interval ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_date_add_interval($3, $6, $7, 0);
> ++ $$= new (thd->mem_root) Item_date_add_interval($3, $6, $7, 0);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | CURDATE optional_braces
> + {
> +- $$= new (YYTHD->mem_root) Item_func_curdate_local();
> ++ $$= new (thd->mem_root) Item_func_curdate_local();
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + Lex->safe_to_cache_query=0;
> + }
> + | CURTIME optional_braces
> + {
> +- $$= new (YYTHD->mem_root) Item_func_curtime_local();
> ++ $$= new (thd->mem_root) Item_func_curtime_local();
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + Lex->safe_to_cache_query=0;
> + }
> + | CURTIME '(' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_curtime_local($3);
> ++ $$= new (thd->mem_root) Item_func_curtime_local($3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + Lex->safe_to_cache_query=0;
> +@@ -7684,83 +7656,83 @@
> + | DATE_ADD_INTERVAL '(' expr ',' INTERVAL_SYM expr interval ')'
> + %prec INTERVAL_SYM
> + {
> +- $$= new (YYTHD->mem_root) Item_date_add_interval($3,$6,$7,0);
> ++ $$= new (thd->mem_root) Item_date_add_interval($3,$6,$7,0);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | DATE_SUB_INTERVAL '(' expr ',' INTERVAL_SYM expr interval ')'
> + %prec INTERVAL_SYM
> + {
> +- $$= new (YYTHD->mem_root) Item_date_add_interval($3,$6,$7,1);
> ++ $$= new (thd->mem_root) Item_date_add_interval($3,$6,$7,1);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | EXTRACT_SYM '(' interval FROM expr ')'
> + {
> +- $$=new (YYTHD->mem_root) Item_extract( $3, $5);
> ++ $$=new (thd->mem_root) Item_extract( $3, $5);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | GET_FORMAT '(' date_time_type ',' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_get_format($3, $5);
> ++ $$= new (thd->mem_root) Item_func_get_format($3, $5);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | NOW_SYM optional_braces
> + {
> +- $$= new (YYTHD->mem_root) Item_func_now_local();
> ++ $$= new (thd->mem_root) Item_func_now_local();
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + Lex->safe_to_cache_query=0;
> + }
> + | NOW_SYM '(' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_now_local($3);
> ++ $$= new (thd->mem_root) Item_func_now_local($3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + Lex->safe_to_cache_query=0;
> + }
> + | POSITION_SYM '(' bit_expr IN_SYM expr ')'
> + {
> +- $$ = new (YYTHD->mem_root) Item_func_locate($5,$3);
> ++ $$ = new (thd->mem_root) Item_func_locate($5,$3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | SUBDATE_SYM '(' expr ',' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_date_add_interval($3, $5,
> ++ $$= new (thd->mem_root) Item_date_add_interval($3, $5,
> + INTERVAL_DAY, 1);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | SUBDATE_SYM '(' expr ',' INTERVAL_SYM expr interval ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_date_add_interval($3, $6, $7, 1);
> ++ $$= new (thd->mem_root) Item_date_add_interval($3, $6, $7, 1);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | SUBSTRING '(' expr ',' expr ',' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_substr($3,$5,$7);
> ++ $$= new (thd->mem_root) Item_func_substr($3,$5,$7);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | SUBSTRING '(' expr ',' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_substr($3,$5);
> ++ $$= new (thd->mem_root) Item_func_substr($3,$5);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | SUBSTRING '(' expr FROM expr FOR_SYM expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_substr($3,$5,$7);
> ++ $$= new (thd->mem_root) Item_func_substr($3,$5,$7);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | SUBSTRING '(' expr FROM expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_substr($3,$5);
> ++ $$= new (thd->mem_root) Item_func_substr($3,$5);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> +@@ -7775,9 +7747,9 @@
> + */
> + Lex->set_stmt_unsafe();
> + if (global_system_variables.sysdate_is_now == 0)
> +- $$= new (YYTHD->mem_root) Item_func_sysdate_local();
> ++ $$= new (thd->mem_root) Item_func_sysdate_local();
> + else
> +- $$= new (YYTHD->mem_root) Item_func_now_local();
> ++ $$= new (thd->mem_root) Item_func_now_local();
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + Lex->safe_to_cache_query=0;
> +@@ -7785,42 +7757,42 @@
> + | SYSDATE '(' expr ')'
> + {
> + if (global_system_variables.sysdate_is_now == 0)
> +- $$= new (YYTHD->mem_root) Item_func_sysdate_local($3);
> ++ $$= new (thd->mem_root) Item_func_sysdate_local($3);
> + else
> +- $$= new (YYTHD->mem_root) Item_func_now_local($3);
> ++ $$= new (thd->mem_root) Item_func_now_local($3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + Lex->safe_to_cache_query=0;
> + }
> + | TIMESTAMP_ADD '(' interval_time_stamp ',' expr ',' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_date_add_interval($7,$5,$3,0);
> ++ $$= new (thd->mem_root) Item_date_add_interval($7,$5,$3,0);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | TIMESTAMP_DIFF '(' interval_time_stamp ',' expr ',' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_timestamp_diff($5,$7,$3);
> ++ $$= new (thd->mem_root) Item_func_timestamp_diff($5,$7,$3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | UTC_DATE_SYM optional_braces
> + {
> +- $$= new (YYTHD->mem_root) Item_func_curdate_utc();
> ++ $$= new (thd->mem_root) Item_func_curdate_utc();
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + Lex->safe_to_cache_query=0;
> + }
> + | UTC_TIME_SYM optional_braces
> + {
> +- $$= new (YYTHD->mem_root) Item_func_curtime_utc();
> ++ $$= new (thd->mem_root) Item_func_curtime_utc();
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + Lex->safe_to_cache_query=0;
> + }
> + | UTC_TIMESTAMP_SYM optional_braces
> + {
> +- $$= new (YYTHD->mem_root) Item_func_now_utc();
> ++ $$= new (thd->mem_root) Item_func_now_utc();
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + Lex->safe_to_cache_query=0;
> +@@ -7835,62 +7807,61 @@
> + function_call_conflict:
> + ASCII_SYM '(' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_ascii($3);
> ++ $$= new (thd->mem_root) Item_func_ascii($3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | CHARSET '(' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_charset($3);
> ++ $$= new (thd->mem_root) Item_func_charset($3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | COALESCE '(' expr_list ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_coalesce(* $3);
> ++ $$= new (thd->mem_root) Item_func_coalesce(* $3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | COLLATION_SYM '(' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_collation($3);
> ++ $$= new (thd->mem_root) Item_func_collation($3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | DATABASE '(' ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_database();
> ++ $$= new (thd->mem_root) Item_func_database();
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + Lex->safe_to_cache_query=0;
> + }
> + | IF '(' expr ',' expr ',' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_if($3,$5,$7);
> ++ $$= new (thd->mem_root) Item_func_if($3,$5,$7);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | MICROSECOND_SYM '(' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_microsecond($3);
> ++ $$= new (thd->mem_root) Item_func_microsecond($3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | MOD_SYM '(' expr ',' expr ')'
> + {
> +- $$ = new (YYTHD->mem_root) Item_func_mod($3, $5);
> ++ $$ = new (thd->mem_root) Item_func_mod($3, $5);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | OLD_PASSWORD '(' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_old_password($3);
> ++ $$= new (thd->mem_root) Item_func_old_password($3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | PASSWORD '(' expr ')'
> + {
> +- THD *thd= YYTHD;
> + Item* i1;
> + if (thd->variables.old_passwords)
> + i1= new (thd->mem_root) Item_func_old_password($3);
> +@@ -7902,31 +7873,30 @@
> + }
> + | QUARTER_SYM '(' expr ')'
> + {
> +- $$ = new (YYTHD->mem_root) Item_func_quarter($3);
> ++ $$ = new (thd->mem_root) Item_func_quarter($3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | REPEAT_SYM '(' expr ',' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_repeat($3,$5);
> ++ $$= new (thd->mem_root) Item_func_repeat($3,$5);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | REPLACE '(' expr ',' expr ',' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_replace($3,$5,$7);
> ++ $$= new (thd->mem_root) Item_func_replace($3,$5,$7);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | TRUNCATE_SYM '(' expr ',' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_round($3,$5,1);
> ++ $$= new (thd->mem_root) Item_func_round($3,$5,1);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | WEEK_SYM '(' expr ')'
> + {
> +- THD *thd= YYTHD;
> + Item *i1= new (thd->mem_root) Item_int((char*) "0",
> + thd->variables.default_week_format,
> + 1);
> +@@ -7938,7 +7908,7 @@
> + }
> + | WEEK_SYM '(' expr ',' expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_func_week($3,$5);
> ++ $$= new (thd->mem_root) Item_func_week($3,$5);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> +@@ -7960,52 +7930,52 @@
> + geometry_function:
> + CONTAINS_SYM '(' expr ',' expr ')'
> + {
> +- $$= GEOM_NEW(YYTHD,
> ++ $$= GEOM_NEW(thd,
> + Item_func_spatial_rel($3, $5,
> + Item_func::SP_CONTAINS_FUNC));
> + }
> + | GEOMETRYCOLLECTION '(' expr_list ')'
> + {
> +- $$= GEOM_NEW(YYTHD,
> ++ $$= GEOM_NEW(thd,
> + Item_func_spatial_collection(* $3,
> + Geometry::wkb_geometrycollection,
> + Geometry::wkb_point));
> + }
> + | LINESTRING '(' expr_list ')'
> + {
> +- $$= GEOM_NEW(YYTHD,
> ++ $$= GEOM_NEW(thd,
> + Item_func_spatial_collection(* $3,
> + Geometry::wkb_linestring,
> + Geometry::wkb_point));
> + }
> + | MULTILINESTRING '(' expr_list ')'
> + {
> +- $$= GEOM_NEW(YYTHD,
> ++ $$= GEOM_NEW(thd,
> + Item_func_spatial_collection(* $3,
> + Geometry::wkb_multilinestring,
> + Geometry::wkb_linestring));
> + }
> + | MULTIPOINT '(' expr_list ')'
> + {
> +- $$= GEOM_NEW(YYTHD,
> ++ $$= GEOM_NEW(thd,
> + Item_func_spatial_collection(* $3,
> + Geometry::wkb_multipoint,
> + Geometry::wkb_point));
> + }
> + | MULTIPOLYGON '(' expr_list ')'
> + {
> +- $$= GEOM_NEW(YYTHD,
> ++ $$= GEOM_NEW(thd,
> + Item_func_spatial_collection(* $3,
> + Geometry::wkb_multipolygon,
> + Geometry::wkb_polygon));
> + }
> + | POINT_SYM '(' expr ',' expr ')'
> + {
> +- $$= GEOM_NEW(YYTHD, Item_func_point($3,$5));
> ++ $$= GEOM_NEW(thd, Item_func_point($3,$5));
> + }
> + | POLYGON '(' expr_list ')'
> + {
> +- $$= GEOM_NEW(YYTHD,
> ++ $$= GEOM_NEW(thd,
> + Item_func_spatial_collection(* $3,
> + Geometry::wkb_polygon,
> + Geometry::wkb_linestring));
> +@@ -8043,7 +8013,6 @@
> + }
> + opt_udf_expr_list ')'
> + {
> +- THD *thd= YYTHD;
> + Create_func *builder;
> + Item *item= NULL;
> +
> +@@ -8097,7 +8066,6 @@
> + }
> + | ident '.' ident '(' opt_expr_list ')'
> + {
> +- THD *thd= YYTHD;
> + Create_qfunc *builder;
> + Item *item= NULL;
> +
> +@@ -8161,7 +8129,7 @@
> + udf_expr_list:
> + udf_expr
> + {
> +- $$= new (YYTHD->mem_root) List<Item>;
> ++ $$= new (thd->mem_root) List<Item>;
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + $$->push_back($1);
> +@@ -8194,7 +8162,7 @@
> + remember_name we may get quoted or escaped names.
> + */
> + else if ($2->type() != Item::FIELD_ITEM)
> +- $2->set_name($1, (uint) ($3 - $1), YYTHD->charset());
> ++ $2->set_name($1, (uint) ($3 - $1), thd->charset());
> + $$= $2;
> + }
> + ;
> +@@ -8202,46 +8170,46 @@
> + sum_expr:
> + AVG_SYM '(' in_sum_expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_sum_avg($3);
> ++ $$= new (thd->mem_root) Item_sum_avg($3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | AVG_SYM '(' DISTINCT in_sum_expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_sum_avg_distinct($4);
> ++ $$= new (thd->mem_root) Item_sum_avg_distinct($4);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | BIT_AND '(' in_sum_expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_sum_and($3);
> ++ $$= new (thd->mem_root) Item_sum_and($3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | BIT_OR '(' in_sum_expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_sum_or($3);
> ++ $$= new (thd->mem_root) Item_sum_or($3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | BIT_XOR '(' in_sum_expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_sum_xor($3);
> ++ $$= new (thd->mem_root) Item_sum_xor($3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | COUNT_SYM '(' opt_all '*' ')'
> + {
> +- Item *item= new (YYTHD->mem_root) Item_int((int32) 0L,1);
> ++ Item *item= new (thd->mem_root) Item_int((int32) 0L,1);
> + if (item == NULL)
> + MYSQL_YYABORT;
> +- $$= new (YYTHD->mem_root) Item_sum_count(item);
> ++ $$= new (thd->mem_root) Item_sum_count(item);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | COUNT_SYM '(' in_sum_expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_sum_count($3);
> ++ $$= new (thd->mem_root) Item_sum_count($3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> +@@ -8251,13 +8219,13 @@
> + { Select->in_sum_expr--; }
> + ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_sum_count_distinct(* $5);
> ++ $$= new (thd->mem_root) Item_sum_count_distinct(* $5);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | MIN_SYM '(' in_sum_expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_sum_min($3);
> ++ $$= new (thd->mem_root) Item_sum_min($3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> +@@ -8268,55 +8236,55 @@
> + */
> + | MIN_SYM '(' DISTINCT in_sum_expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_sum_min($4);
> ++ $$= new (thd->mem_root) Item_sum_min($4);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | MAX_SYM '(' in_sum_expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_sum_max($3);
> ++ $$= new (thd->mem_root) Item_sum_max($3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | MAX_SYM '(' DISTINCT in_sum_expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_sum_max($4);
> ++ $$= new (thd->mem_root) Item_sum_max($4);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | STD_SYM '(' in_sum_expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_sum_std($3, 0);
> ++ $$= new (thd->mem_root) Item_sum_std($3, 0);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | VARIANCE_SYM '(' in_sum_expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_sum_variance($3, 0);
> ++ $$= new (thd->mem_root) Item_sum_variance($3, 0);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | STDDEV_SAMP_SYM '(' in_sum_expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_sum_std($3, 1);
> ++ $$= new (thd->mem_root) Item_sum_std($3, 1);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | VAR_SAMP_SYM '(' in_sum_expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_sum_variance($3, 1);
> ++ $$= new (thd->mem_root) Item_sum_variance($3, 1);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | SUM_SYM '(' in_sum_expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_sum_sum($3);
> ++ $$= new (thd->mem_root) Item_sum_sum($3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | SUM_SYM '(' DISTINCT in_sum_expr ')'
> + {
> +- $$= new (YYTHD->mem_root) Item_sum_sum_distinct($4);
> ++ $$= new (thd->mem_root) Item_sum_sum_distinct($4);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> +@@ -8328,7 +8296,7 @@
> + {
> + SELECT_LEX *sel= Select;
> + sel->in_sum_expr--;
> +- $$= new (YYTHD->mem_root)
> ++ $$= new (thd->mem_root)
> + Item_func_group_concat(Lex->current_context(), $3, $5,
> + sel->gorder_list, $7);
> + if ($$ == NULL)
> +@@ -8357,7 +8325,7 @@
> + ident_or_text SET_VAR expr
> + {
> + Item_func_set_user_var *item;
> +- $$= item= new (YYTHD->mem_root) Item_func_set_user_var($1, $3);
> ++ $$= item= new (thd->mem_root) Item_func_set_user_var($1, $3);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + LEX *lex= Lex;
> +@@ -8366,7 +8334,7 @@
> + }
> + | ident_or_text
> + {
> +- $$= new (YYTHD->mem_root) Item_func_get_user_var($1);
> ++ $$= new (thd->mem_root) Item_func_get_user_var($1);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + LEX *lex= Lex;
> +@@ -8380,7 +8348,7 @@
> + my_parse_error(ER(ER_SYNTAX_ERROR));
> + MYSQL_YYABORT;
> + }
> +- if (!($$= get_system_var(YYTHD, $2, $3, $4)))
> ++ if (!($$= get_system_var(thd, $2, $3, $4)))
> + MYSQL_YYABORT;
> + if (!((Item_func_get_system_var*) $$)->is_written_to_binlog())
> + Lex->set_stmt_unsafe();
> +@@ -8395,7 +8363,7 @@
> + opt_gconcat_separator:
> + /* empty */
> + {
> +- $$= new (YYTHD->mem_root) String(",", 1, &my_charset_latin1);
> ++ $$= new (thd->mem_root) String(",", 1, &my_charset_latin1);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> +@@ -8422,9 +8390,9 @@
> +
> + gorder_list:
> + gorder_list ',' order_ident order_dir
> +- { if (add_gorder_to_list(YYTHD, $3,(bool) $4)) MYSQL_YYABORT; }
> ++ { if (add_gorder_to_list(thd, $3,(bool) $4)) MYSQL_YYABORT; }
> + | order_ident order_dir
> +- { if (add_gorder_to_list(YYTHD, $1,(bool) $2)) MYSQL_YYABORT; }
> ++ { if (add_gorder_to_list(thd, $1,(bool) $2)) MYSQL_YYABORT; }
> + ;
> +
> + in_sum_expr:
> +@@ -8477,7 +8445,7 @@
> + expr_list:
> + expr
> + {
> +- $$= new (YYTHD->mem_root) List<Item>;
> ++ $$= new (thd->mem_root) List<Item>;
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + $$->push_back($1);
> +@@ -8497,7 +8465,7 @@
> + ident_list:
> + simple_ident
> + {
> +- $$= new (YYTHD->mem_root) List<Item>;
> ++ $$= new (thd->mem_root) List<Item>;
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + $$->push_back($1);
> +@@ -8595,7 +8563,7 @@
> + {
> + MYSQL_YYABORT_UNLESS($1 && $3);
> + /* Change the current name resolution context to a local context. */
> +- if (push_new_name_resolution_context(YYTHD, $1, $3))
> ++ if (push_new_name_resolution_context(thd, $1, $3))
> + MYSQL_YYABORT;
> + Select->parsing_place= IN_ON;
> + }
> +@@ -8610,7 +8578,7 @@
> + {
> + MYSQL_YYABORT_UNLESS($1 && $3);
> + /* Change the current name resolution context to a local context. */
> +- if (push_new_name_resolution_context(YYTHD, $1, $3))
> ++ if (push_new_name_resolution_context(thd, $1, $3))
> + MYSQL_YYABORT;
> + Select->parsing_place= IN_ON;
> + }
> +@@ -8640,7 +8608,7 @@
> + {
> + MYSQL_YYABORT_UNLESS($1 && $5);
> + /* Change the current name resolution context to a local context. */
> +- if (push_new_name_resolution_context(YYTHD, $1, $5))
> ++ if (push_new_name_resolution_context(thd, $1, $5))
> + MYSQL_YYABORT;
> + Select->parsing_place= IN_ON;
> + }
> +@@ -8676,7 +8644,7 @@
> + {
> + MYSQL_YYABORT_UNLESS($1 && $5);
> + /* Change the current name resolution context to a local context. */
> +- if (push_new_name_resolution_context(YYTHD, $1, $5))
> ++ if (push_new_name_resolution_context(thd, $1, $5))
> + MYSQL_YYABORT;
> + Select->parsing_place= IN_ON;
> + }
> +@@ -8724,7 +8692,7 @@
> + }
> + table_ident opt_table_alias opt_key_definition
> + {
> +- if (!($$= Select->add_table_to_list(YYTHD, $2, $3,
> ++ if (!($$= Select->add_table_to_list(thd, $2, $3,
> + Select->get_table_join_options(),
> + Lex->lock_option,
> + Select->pop_index_hints())))
> +@@ -8922,7 +8890,7 @@
> +
> + opt_index_hints_list:
> + /* empty */
> +- | { Select->alloc_index_hints(YYTHD); } index_hints_list
> ++ | { Select->alloc_index_hints(thd); } index_hints_list
> + ;
> +
> + opt_key_definition:
> +@@ -8931,15 +8899,15 @@
> + ;
> +
> + opt_key_usage_list:
> +- /* empty */ { Select->add_index_hint(YYTHD, NULL, 0); }
> ++ /* empty */ { Select->add_index_hint(thd, NULL, 0); }
> + | key_usage_list {}
> + ;
> +
> + key_usage_element:
> + ident
> +- { Select->add_index_hint(YYTHD, $1.str, $1.length); }
> ++ { Select->add_index_hint(thd, $1.str, $1.length); }
> + | PRIMARY_SYM
> +- { Select->add_index_hint(YYTHD, (char *)"PRIMARY", 7); }
> ++ { Select->add_index_hint(thd, (char *)"PRIMARY", 7); }
> + ;
> +
> + key_usage_list:
> +@@ -8952,7 +8920,7 @@
> + {
> + if (!($$= new List<String>))
> + MYSQL_YYABORT;
> +- String *s= new (YYTHD->mem_root) String((const char *) $1.str,
> ++ String *s= new (thd->mem_root) String((const char *) $1.str,
> + $1.length,
> + system_charset_info);
> + if (s == NULL)
> +@@ -8961,7 +8929,7 @@
> + }
> + | using_list ',' ident
> + {
> +- String *s= new (YYTHD->mem_root) String((const char *) $3.str,
> ++ String *s= new (thd->mem_root) String((const char *) $3.str,
> + $3.length,
> + system_charset_info);
> + if (s == NULL)
> +@@ -9002,7 +8970,7 @@
> + implementation without changing its
> + resolution.
> + */
> +- WARN_DEPRECATED(yythd, VER_CELOSIA, "FRAC_SECOND", "MICROSECOND");
> ++ WARN_DEPRECATED(thd, VER_CELOSIA, "FRAC_SECOND", "MICROSECOND");
> + }
> + ;
> +
> +@@ -9086,7 +9054,6 @@
> + }
> + | /* empty */
> + {
> +- THD *thd= YYTHD;
> + Lex->escape_used= FALSE;
> + $$= ((thd->variables.sql_mode & MODE_NO_BACKSLASH_ESCAPES) ?
> + new (thd->mem_root) Item_string("", 0, &my_charset_latin1) :
> +@@ -9107,9 +9074,9 @@
> +
> + group_list:
> + group_list ',' order_ident order_dir
> +- { if (add_group_to_list(YYTHD, $3,(bool) $4)) MYSQL_YYABORT; }
> ++ { if (add_group_to_list(thd, $3,(bool) $4)) MYSQL_YYABORT; }
> + | order_ident order_dir
> +- { if (add_group_to_list(YYTHD, $1,(bool) $2)) MYSQL_YYABORT; }
> ++ { if (add_group_to_list(thd, $1,(bool) $2)) MYSQL_YYABORT; }
> + ;
> +
> + olap_opt:
> +@@ -9156,7 +9123,6 @@
> + alter_order_item:
> + simple_ident_nospvar order_dir
> + {
> +- THD *thd= YYTHD;
> + bool ascending= ($2 == 1) ? true : false;
> + if (add_order_to_list(thd, $1, ascending))
> + MYSQL_YYABORT;
> +@@ -9209,9 +9175,9 @@
> +
> + order_list:
> + order_list ',' order_ident order_dir
> +- { if (add_order_to_list(YYTHD, $3,(bool) $4)) MYSQL_YYABORT; }
> ++ { if (add_order_to_list(thd, $3,(bool) $4)) MYSQL_YYABORT; }
> + | order_ident order_dir
> +- { if (add_order_to_list(YYTHD, $1,(bool) $2)) MYSQL_YYABORT; }
> ++ { if (add_order_to_list(thd, $1,(bool) $2)) MYSQL_YYABORT; }
> + ;
> +
> + order_dir:
> +@@ -9271,19 +9237,19 @@
> + }
> + | ULONGLONG_NUM
> + {
> +- $$= new (YYTHD->mem_root) Item_uint($1.str, $1.length);
> ++ $$= new (thd->mem_root) Item_uint($1.str, $1.length);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | LONG_NUM
> + {
> +- $$= new (YYTHD->mem_root) Item_uint($1.str, $1.length);
> ++ $$= new (thd->mem_root) Item_uint($1.str, $1.length);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | NUM
> + {
> +- $$= new (YYTHD->mem_root) Item_uint($1.str, $1.length);
> ++ $$= new (thd->mem_root) Item_uint($1.str, $1.length);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> +@@ -9365,7 +9331,7 @@
> + lex->proc_list.elements=0;
> + lex->proc_list.first=0;
> + lex->proc_list.next= &lex->proc_list.first;
> +- Item_field *item= new (YYTHD->mem_root)
> ++ Item_field *item= new (thd->mem_root)
> + Item_field(&lex->current_select->context,
> + NULL, NULL, $2.str);
> + if (item == NULL)
> +@@ -9390,8 +9356,7 @@
> + procedure_item:
> + remember_name expr remember_end
> + {
> +- THD *thd= YYTHD;
> +-
> ++
> + if (add_proc_to_list(thd, $2))
> + MYSQL_YYABORT;
> + if (!$2->name)
> +@@ -9560,7 +9525,6 @@
> + }
> + | DROP FUNCTION_SYM if_exists ident '.' ident
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + sp_name *spname;
> + if ($4.str && check_db_name(&$4))
> +@@ -9583,7 +9547,6 @@
> + }
> + | DROP FUNCTION_SYM if_exists ident
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + LEX_STRING db= {0, 0};
> + sp_name *spname;
> +@@ -9664,7 +9627,7 @@
> + table_name:
> + table_ident
> + {
> +- if (!Select->add_table_to_list(YYTHD, $1, NULL, TL_OPTION_UPDATING))
> ++ if (!Select->add_table_to_list(thd, $1, NULL, TL_OPTION_UPDATING))
> + MYSQL_YYABORT;
> + }
> + ;
> +@@ -9677,7 +9640,7 @@
> + table_alias_ref:
> + table_ident_opt_wild
> + {
> +- if (!Select->add_table_to_list(YYTHD, $1, NULL,
> ++ if (!Select->add_table_to_list(thd, $1, NULL,
> + TL_OPTION_UPDATING | TL_OPTION_ALIAS,
> + Lex->lock_option ))
> + MYSQL_YYABORT;
> +@@ -9868,7 +9831,7 @@
> + expr { $$= $1;}
> + | DEFAULT
> + {
> +- $$= new (YYTHD->mem_root) Item_default_value(Lex->current_context());
> ++ $$= new (thd->mem_root) Item_default_value(Lex->current_context());
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> +@@ -9922,7 +9885,7 @@
> + update_elem:
> + simple_ident_nospvar equal expr_or_default
> + {
> +- if (add_item_to_list(YYTHD, $1) || add_value_to_list(YYTHD, $3))
> ++ if (add_item_to_list(thd, $1) || add_value_to_list(thd, $3))
> + MYSQL_YYABORT;
> + }
> + ;
> +@@ -9965,7 +9928,7 @@
> + single_multi:
> + FROM table_ident
> + {
> +- if (!Select->add_table_to_list(YYTHD, $2, NULL, TL_OPTION_UPDATING,
> ++ if (!Select->add_table_to_list(thd, $2, NULL, TL_OPTION_UPDATING,
> + Lex->lock_option))
> + MYSQL_YYABORT;
> + }
> +@@ -9998,7 +9961,7 @@
> + Table_ident *ti= new Table_ident($1);
> + if (ti == NULL)
> + MYSQL_YYABORT;
> +- if (!Select->add_table_to_list(YYTHD,
> ++ if (!Select->add_table_to_list(thd,
> + ti,
> + $3,
> + TL_OPTION_UPDATING | TL_OPTION_ALIAS,
> +@@ -10007,10 +9970,10 @@
> + }
> + | ident '.' ident opt_wild opt_table_alias
> + {
> +- Table_ident *ti= new Table_ident(YYTHD, $1, $3, 0);
> ++ Table_ident *ti= new Table_ident(thd, $1, $3, 0);
> + if (ti == NULL)
> + MYSQL_YYABORT;
> +- if (!Select->add_table_to_list(YYTHD,
> ++ if (!Select->add_table_to_list(thd,
> + ti,
> + $5,
> + TL_OPTION_UPDATING | TL_OPTION_ALIAS,
> +@@ -10130,7 +10093,7 @@
> + {
> + LEX *lex= Lex;
> + lex->sql_command= SQLCOM_SHOW_DATABASES;
> +- if (prepare_schema_table(YYTHD, lex, 0, SCH_SCHEMATA))
> ++ if (prepare_schema_table(thd, lex, 0, SCH_SCHEMATA))
> + MYSQL_YYABORT;
> + }
> + | opt_full TABLES opt_db wild_and_where
> +@@ -10138,7 +10101,7 @@
> + LEX *lex= Lex;
> + lex->sql_command= SQLCOM_SHOW_TABLES;
> + lex->select_lex.db= $3;
> +- if (prepare_schema_table(YYTHD, lex, 0, SCH_TABLE_NAMES))
> ++ if (prepare_schema_table(thd, lex, 0, SCH_TABLE_NAMES))
> + MYSQL_YYABORT;
> + }
> + | opt_full TRIGGERS_SYM opt_db wild_and_where
> +@@ -10146,7 +10109,7 @@
> + LEX *lex= Lex;
> + lex->sql_command= SQLCOM_SHOW_TRIGGERS;
> + lex->select_lex.db= $3;
> +- if (prepare_schema_table(YYTHD, lex, 0, SCH_TRIGGERS))
> ++ if (prepare_schema_table(thd, lex, 0, SCH_TRIGGERS))
> + MYSQL_YYABORT;
> + }
> + | EVENTS_SYM opt_db wild_and_where
> +@@ -10154,7 +10117,7 @@
> + LEX *lex= Lex;
> + lex->sql_command= SQLCOM_SHOW_EVENTS;
> + lex->select_lex.db= $2;
> +- if (prepare_schema_table(YYTHD, lex, 0, SCH_EVENTS))
> ++ if (prepare_schema_table(thd, lex, 0, SCH_EVENTS))
> + MYSQL_YYABORT;
> + }
> + | TABLE_SYM STATUS_SYM opt_db wild_and_where
> +@@ -10162,7 +10125,7 @@
> + LEX *lex= Lex;
> + lex->sql_command= SQLCOM_SHOW_TABLE_STATUS;
> + lex->select_lex.db= $3;
> +- if (prepare_schema_table(YYTHD, lex, 0, SCH_TABLES))
> ++ if (prepare_schema_table(thd, lex, 0, SCH_TABLES))
> + MYSQL_YYABORT;
> + }
> + | OPEN_SYM TABLES opt_db wild_and_where
> +@@ -10170,22 +10133,22 @@
> + LEX *lex= Lex;
> + lex->sql_command= SQLCOM_SHOW_OPEN_TABLES;
> + lex->select_lex.db= $3;
> +- if (prepare_schema_table(YYTHD, lex, 0, SCH_OPEN_TABLES))
> ++ if (prepare_schema_table(thd, lex, 0, SCH_OPEN_TABLES))
> + MYSQL_YYABORT;
> + }
> + | opt_full PLUGIN_SYM
> + {
> + LEX *lex= Lex;
> +- WARN_DEPRECATED(yythd, "6.0", "SHOW PLUGIN", "'SHOW PLUGINS'");
> ++ WARN_DEPRECATED(thd, "6.0", "SHOW PLUGIN", "'SHOW PLUGINS'");
> + lex->sql_command= SQLCOM_SHOW_PLUGINS;
> +- if (prepare_schema_table(YYTHD, lex, 0, SCH_PLUGINS))
> ++ if (prepare_schema_table(thd, lex, 0, SCH_PLUGINS))
> + MYSQL_YYABORT;
> + }
> + | PLUGINS_SYM
> + {
> + LEX *lex= Lex;
> + lex->sql_command= SQLCOM_SHOW_PLUGINS;
> +- if (prepare_schema_table(YYTHD, lex, 0, SCH_PLUGINS))
> ++ if (prepare_schema_table(thd, lex, 0, SCH_PLUGINS))
> + MYSQL_YYABORT;
> + }
> + | ENGINE_SYM known_storage_engines show_engine_param
> +@@ -10198,7 +10161,7 @@
> + lex->sql_command= SQLCOM_SHOW_FIELDS;
> + if ($5)
> + $4->change_db($5);
> +- if (prepare_schema_table(YYTHD, lex, $4, SCH_COLUMNS))
> ++ if (prepare_schema_table(thd, lex, $4, SCH_COLUMNS))
> + MYSQL_YYABORT;
> + }
> + | NEW_SYM MASTER_SYM FOR_SYM SLAVE
> +@@ -10233,7 +10196,7 @@
> + lex->sql_command= SQLCOM_SHOW_KEYS;
> + if ($4)
> + $3->change_db($4);
> +- if (prepare_schema_table(YYTHD, lex, $3, SCH_STATISTICS))
> ++ if (prepare_schema_table(thd, lex, $3, SCH_STATISTICS))
> + MYSQL_YYABORT;
> + }
> + | COLUMN_SYM TYPES_SYM
> +@@ -10245,15 +10208,15 @@
> + {
> + LEX *lex=Lex;
> + lex->sql_command= SQLCOM_SHOW_STORAGE_ENGINES;
> +- WARN_DEPRECATED(yythd, "6.0", "SHOW TABLE TYPES", "'SHOW [STORAGE] ENGINES'");
> +- if (prepare_schema_table(YYTHD, lex, 0, SCH_ENGINES))
> ++ WARN_DEPRECATED(thd, "6.0", "SHOW TABLE TYPES", "'SHOW [STORAGE] ENGINES'");
> ++ if (prepare_schema_table(thd, lex, 0, SCH_ENGINES))
> + MYSQL_YYABORT;
> + }
> + | opt_storage ENGINES_SYM
> + {
> + LEX *lex=Lex;
> + lex->sql_command= SQLCOM_SHOW_STORAGE_ENGINES;
> +- if (prepare_schema_table(YYTHD, lex, 0, SCH_ENGINES))
> ++ if (prepare_schema_table(thd, lex, 0, SCH_ENGINES))
> + MYSQL_YYABORT;
> + }
> + | AUTHORS_SYM
> +@@ -10285,7 +10248,7 @@
> + {
> + LEX *lex= Lex;
> + lex->sql_command= SQLCOM_SHOW_PROFILE;
> +- if (prepare_schema_table(YYTHD, lex, NULL, SCH_PROFILES) != 0)
> ++ if (prepare_schema_table(thd, lex, NULL, SCH_PROFILES) != 0)
> + YYABORT;
> + }
> + | opt_var_type STATUS_SYM wild_and_where
> +@@ -10293,7 +10256,7 @@
> + LEX *lex= Lex;
> + lex->sql_command= SQLCOM_SHOW_STATUS;
> + lex->option_type= $1;
> +- if (prepare_schema_table(YYTHD, lex, 0, SCH_STATUS))
> ++ if (prepare_schema_table(thd, lex, 0, SCH_STATUS))
> + MYSQL_YYABORT;
> + }
> + | INNOBASE_SYM STATUS_SYM
> +@@ -10301,24 +10264,24 @@
> + LEX *lex= Lex;
> + lex->sql_command = SQLCOM_SHOW_ENGINE_STATUS;
> + if (!(lex->create_info.db_type=
> +- ha_resolve_by_legacy_type(YYTHD, DB_TYPE_INNODB)))
> ++ ha_resolve_by_legacy_type(thd, DB_TYPE_INNODB)))
> + {
> + my_error(ER_UNKNOWN_STORAGE_ENGINE, MYF(0), "InnoDB");
> + MYSQL_YYABORT;
> + }
> +- WARN_DEPRECATED(yythd, "6.0", "SHOW INNODB STATUS", "'SHOW ENGINE INNODB STATUS'");
> ++ WARN_DEPRECATED(thd, "6.0", "SHOW INNODB STATUS", "'SHOW ENGINE INNODB STATUS'");
> + }
> + | MUTEX_SYM STATUS_SYM
> + {
> + LEX *lex= Lex;
> + lex->sql_command = SQLCOM_SHOW_ENGINE_MUTEX;
> + if (!(lex->create_info.db_type=
> +- ha_resolve_by_legacy_type(YYTHD, DB_TYPE_INNODB)))
> ++ ha_resolve_by_legacy_type(thd, DB_TYPE_INNODB)))
> + {
> + my_error(ER_UNKNOWN_STORAGE_ENGINE, MYF(0), "InnoDB");
> + MYSQL_YYABORT;
> + }
> +- WARN_DEPRECATED(yythd, "6.0", "SHOW MUTEX STATUS", "'SHOW ENGINE INNODB MUTEX'");
> ++ WARN_DEPRECATED(thd, "6.0", "SHOW MUTEX STATUS", "'SHOW ENGINE INNODB MUTEX'");
> + }
> + | opt_full PROCESSLIST_SYM
> + { Lex->sql_command= SQLCOM_SHOW_PROCESSLIST;}
> +@@ -10327,21 +10290,21 @@
> + LEX *lex= Lex;
> + lex->sql_command= SQLCOM_SHOW_VARIABLES;
> + lex->option_type= $1;
> +- if (prepare_schema_table(YYTHD, lex, 0, SCH_VARIABLES))
> ++ if (prepare_schema_table(thd, lex, 0, SCH_VARIABLES))
> + MYSQL_YYABORT;
> + }
> + | charset wild_and_where
> + {
> + LEX *lex= Lex;
> + lex->sql_command= SQLCOM_SHOW_CHARSETS;
> +- if (prepare_schema_table(YYTHD, lex, 0, SCH_CHARSETS))
> ++ if (prepare_schema_table(thd, lex, 0, SCH_CHARSETS))
> + MYSQL_YYABORT;
> + }
> + | COLLATION_SYM wild_and_where
> + {
> + LEX *lex= Lex;
> + lex->sql_command= SQLCOM_SHOW_COLLATIONS;
> +- if (prepare_schema_table(YYTHD, lex, 0, SCH_COLLATIONS))
> ++ if (prepare_schema_table(thd, lex, 0, SCH_COLLATIONS))
> + MYSQL_YYABORT;
> + }
> + | GRANTS
> +@@ -10371,7 +10334,7 @@
> + {
> + LEX *lex= Lex;
> + lex->sql_command = SQLCOM_SHOW_CREATE;
> +- if (!lex->select_lex.add_table_to_list(YYTHD, $3, NULL,0))
> ++ if (!lex->select_lex.add_table_to_list(thd, $3, NULL,0))
> + MYSQL_YYABORT;
> + lex->only_view= 0;
> + lex->create_info.storage_media= HA_SM_DEFAULT;
> +@@ -10380,7 +10343,7 @@
> + {
> + LEX *lex= Lex;
> + lex->sql_command = SQLCOM_SHOW_CREATE;
> +- if (!lex->select_lex.add_table_to_list(YYTHD, $3, NULL, 0))
> ++ if (!lex->select_lex.add_table_to_list(thd, $3, NULL, 0))
> + MYSQL_YYABORT;
> + lex->only_view= 1;
> + }
> +@@ -10416,14 +10379,14 @@
> + {
> + LEX *lex= Lex;
> + lex->sql_command= SQLCOM_SHOW_STATUS_PROC;
> +- if (prepare_schema_table(YYTHD, lex, 0, SCH_PROCEDURES))
> ++ if (prepare_schema_table(thd, lex, 0, SCH_PROCEDURES))
> + MYSQL_YYABORT;
> + }
> + | FUNCTION_SYM STATUS_SYM wild_and_where
> + {
> + LEX *lex= Lex;
> + lex->sql_command= SQLCOM_SHOW_STATUS_FUNC;
> +- if (prepare_schema_table(YYTHD, lex, 0, SCH_PROCEDURES))
> ++ if (prepare_schema_table(thd, lex, 0, SCH_PROCEDURES))
> + MYSQL_YYABORT;
> + }
> + | PROCEDURE CODE_SYM sp_name
> +@@ -10501,7 +10464,7 @@
> + /* empty */
> + | LIKE TEXT_STRING_sys
> + {
> +- Lex->wild= new (YYTHD->mem_root) String($2.str, $2.length,
> ++ Lex->wild= new (thd->mem_root) String($2.str, $2.length,
> + system_charset_info);
> + if (Lex->wild == NULL)
> + MYSQL_YYABORT;
> +@@ -10525,7 +10488,7 @@
> + lex->sql_command= SQLCOM_SHOW_FIELDS;
> + lex->select_lex.db= 0;
> + lex->verbose= 0;
> +- if (prepare_schema_table(YYTHD, lex, $2, SCH_COLUMNS))
> ++ if (prepare_schema_table(thd, lex, $2, SCH_COLUMNS))
> + MYSQL_YYABORT;
> + }
> + opt_describe_column {}
> +@@ -10554,7 +10517,7 @@
> + | text_string { Lex->wild= $1; }
> + | ident
> + {
> +- Lex->wild= new (YYTHD->mem_root) String((const char*) $1.str,
> ++ Lex->wild= new (thd->mem_root) String((const char*) $1.str,
> + $1.length,
> + system_charset_info);
> + if (Lex->wild == NULL)
> +@@ -10697,7 +10660,6 @@
> + load:
> + LOAD DATA_SYM
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> +
> + if (lex->sphead)
> +@@ -10711,7 +10673,7 @@
> + | LOAD TABLE_SYM table_ident FROM MASTER_SYM
> + {
> + LEX *lex=Lex;
> +- WARN_DEPRECATED(yythd, "6.0", "LOAD TABLE FROM MASTER",
> ++ WARN_DEPRECATED(thd, "6.0", "LOAD TABLE FROM MASTER",
> + "MySQL Administrator (mysqldump, mysql)");
> + if (lex->sphead)
> + {
> +@@ -10719,7 +10681,7 @@
> + MYSQL_YYABORT;
> + }
> + lex->sql_command = SQLCOM_LOAD_MASTER_TABLE;
> +- if (!Select->add_table_to_list(YYTHD, $3, NULL, TL_OPTION_UPDATING))
> ++ if (!Select->add_table_to_list(thd, $3, NULL, TL_OPTION_UPDATING))
> + MYSQL_YYABORT;
> + }
> + ;
> +@@ -10739,7 +10701,7 @@
> + opt_duplicate INTO TABLE_SYM table_ident
> + {
> + LEX *lex=Lex;
> +- if (!Select->add_table_to_list(YYTHD, $9, NULL, TL_OPTION_UPDATING,
> ++ if (!Select->add_table_to_list(thd, $9, NULL, TL_OPTION_UPDATING,
> + lex->lock_option))
> + MYSQL_YYABORT;
> + lex->field_list.empty();
> +@@ -10754,7 +10716,7 @@
> + | FROM MASTER_SYM
> + {
> + Lex->sql_command = SQLCOM_LOAD_MASTER_DATA;
> +- WARN_DEPRECATED(yythd, "6.0", "LOAD DATA FROM MASTER",
> ++ WARN_DEPRECATED(thd, "6.0", "LOAD DATA FROM MASTER",
> + "mysqldump or future "
> + "BACKUP/RESTORE DATABASE facility");
> + }
> +@@ -10872,7 +10834,7 @@
> + simple_ident_nospvar {$$= $1;}
> + | '@' ident_or_text
> + {
> +- $$= new (YYTHD->mem_root) Item_user_var_as_out_param($2);
> ++ $$= new (thd->mem_root) Item_user_var_as_out_param($2);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> +@@ -10889,7 +10851,6 @@
> + TEXT_STRING
> + {
> + LEX_STRING tmp;
> +- THD *thd= YYTHD;
> + CHARSET_INFO *cs_con= thd->variables.collation_connection;
> + CHARSET_INFO *cs_cli= thd->variables.character_set_client;
> + uint repertoire= thd->lex->text_string_is_7bit &&
> +@@ -10915,7 +10876,7 @@
> + uint repertoire= Lex->text_string_is_7bit ?
> + MY_REPERTOIRE_ASCII : MY_REPERTOIRE_UNICODE30;
> + DBUG_ASSERT(my_charset_is_ascii_based(national_charset_info));
> +- $$= new (YYTHD->mem_root) Item_string($1.str, $1.length,
> ++ $$= new (thd->mem_root) Item_string($1.str, $1.length,
> + national_charset_info,
> + DERIVATION_COERCIBLE,
> + repertoire);
> +@@ -10924,7 +10885,7 @@
> + }
> + | UNDERSCORE_CHARSET TEXT_STRING
> + {
> +- Item_string *str= new (YYTHD->mem_root) Item_string($2.str,
> ++ Item_string *str= new (thd->mem_root) Item_string($2.str,
> + $2.length, $1);
> + if (str == NULL)
> + MYSQL_YYABORT;
> +@@ -10943,7 +10904,7 @@
> + If the string has been pure ASCII so far,
> + check the new part.
> + */
> +- CHARSET_INFO *cs= YYTHD->variables.collation_connection;
> ++ CHARSET_INFO *cs= thd->variables.collation_connection;
> + item->collation.repertoire|= my_string_repertoire(cs,
> + $2.str,
> + $2.length);
> +@@ -10954,15 +10915,15 @@
> + text_string:
> + TEXT_STRING_literal
> + {
> +- $$= new (YYTHD->mem_root) String($1.str,
> ++ $$= new (thd->mem_root) String($1.str,
> + $1.length,
> +- YYTHD->variables.collation_connection);
> ++ thd->variables.collation_connection);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | HEX_NUM
> + {
> +- Item *tmp= new (YYTHD->mem_root) Item_hex_string($1.str, $1.length);
> ++ Item *tmp= new (thd->mem_root) Item_hex_string($1.str, $1.length);
> + if (tmp == NULL)
> + MYSQL_YYABORT;
> + /*
> +@@ -10974,7 +10935,7 @@
> + }
> + | BIN_NUM
> + {
> +- Item *tmp= new (YYTHD->mem_root) Item_bin_string($1.str, $1.length);
> ++ Item *tmp= new (thd->mem_root) Item_bin_string($1.str, $1.length);
> + if (tmp == NULL)
> + MYSQL_YYABORT;
> + /*
> +@@ -10989,7 +10950,6 @@
> + param_marker:
> + PARAM_MARKER
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + Lex_input_stream *lip= YYLIP;
> + Item_param *item;
> +@@ -11022,38 +10982,38 @@
> + | NUM_literal { $$ = $1; }
> + | NULL_SYM
> + {
> +- $$ = new (YYTHD->mem_root) Item_null();
> ++ $$ = new (thd->mem_root) Item_null();
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + YYLIP->next_state= MY_LEX_OPERATOR_OR_IDENT;
> + }
> + | FALSE_SYM
> + {
> +- $$= new (YYTHD->mem_root) Item_int((char*) "FALSE",0,1);
> ++ $$= new (thd->mem_root) Item_int((char*) "FALSE",0,1);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | TRUE_SYM
> + {
> +- $$= new (YYTHD->mem_root) Item_int((char*) "TRUE",1,1);
> ++ $$= new (thd->mem_root) Item_int((char*) "TRUE",1,1);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | HEX_NUM
> + {
> +- $$ = new (YYTHD->mem_root) Item_hex_string($1.str, $1.length);
> ++ $$ = new (thd->mem_root) Item_hex_string($1.str, $1.length);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | BIN_NUM
> + {
> +- $$= new (YYTHD->mem_root) Item_bin_string($1.str, $1.length);
> ++ $$= new (thd->mem_root) Item_bin_string($1.str, $1.length);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | UNDERSCORE_CHARSET HEX_NUM
> + {
> +- Item *tmp= new (YYTHD->mem_root) Item_hex_string($2.str, $2.length);
> ++ Item *tmp= new (thd->mem_root) Item_hex_string($2.str, $2.length);
> + if (tmp == NULL)
> + MYSQL_YYABORT;
> + /*
> +@@ -11064,7 +11024,7 @@
> + String *str= tmp->val_str((String*) 0);
> +
> + Item_string *item_str;
> +- item_str= new (YYTHD->mem_root)
> ++ item_str= new (thd->mem_root)
> + Item_string(NULL, /* name will be set in select_item */
> + str ? str->ptr() : "",
> + str ? str->length() : 0,
> +@@ -11082,7 +11042,7 @@
> + }
> + | UNDERSCORE_CHARSET BIN_NUM
> + {
> +- Item *tmp= new (YYTHD->mem_root) Item_bin_string($2.str, $2.length);
> ++ Item *tmp= new (thd->mem_root) Item_bin_string($2.str, $2.length);
> + if (tmp == NULL)
> + MYSQL_YYABORT;
> + /*
> +@@ -11093,7 +11053,7 @@
> + String *str= tmp->val_str((String*) 0);
> +
> + Item_string *item_str;
> +- item_str= new (YYTHD->mem_root)
> ++ item_str= new (thd->mem_root)
> + Item_string(NULL, /* name will be set in select_item */
> + str ? str->ptr() : "",
> + str ? str->length() : 0,
> +@@ -11117,7 +11077,7 @@
> + NUM
> + {
> + int error;
> +- $$= new (YYTHD->mem_root)
> ++ $$= new (thd->mem_root)
> + Item_int($1.str,
> + (longlong) my_strtoll10($1.str, NULL, &error),
> + $1.length);
> +@@ -11127,7 +11087,7 @@
> + | LONG_NUM
> + {
> + int error;
> +- $$= new (YYTHD->mem_root)
> ++ $$= new (thd->mem_root)
> + Item_int($1.str,
> + (longlong) my_strtoll10($1.str, NULL, &error),
> + $1.length);
> +@@ -11136,23 +11096,23 @@
> + }
> + | ULONGLONG_NUM
> + {
> +- $$= new (YYTHD->mem_root) Item_uint($1.str, $1.length);
> ++ $$= new (thd->mem_root) Item_uint($1.str, $1.length);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | DECIMAL_NUM
> + {
> +- $$= new (YYTHD->mem_root) Item_decimal($1.str, $1.length,
> +- YYTHD->charset());
> +- if (($$ == NULL) || (YYTHD->is_error()))
> ++ $$= new (thd->mem_root) Item_decimal($1.str, $1.length,
> ++ thd->charset());
> ++ if (($$ == NULL) || (thd->is_error()))
> + {
> + MYSQL_YYABORT;
> + }
> + }
> + | FLOAT_NUM
> + {
> +- $$= new (YYTHD->mem_root) Item_float($1.str, $1.length);
> +- if (($$ == NULL) || (YYTHD->is_error()))
> ++ $$= new (thd->mem_root) Item_float($1.str, $1.length);
> ++ if (($$ == NULL) || (thd->is_error()))
> + {
> + MYSQL_YYABORT;
> + }
> +@@ -11172,7 +11132,7 @@
> + ident '.' '*'
> + {
> + SELECT_LEX *sel= Select;
> +- $$= new (YYTHD->mem_root) Item_field(Lex->current_context(),
> ++ $$= new (thd->mem_root) Item_field(Lex->current_context(),
> + NullS, $1.str, "*");
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> +@@ -11180,7 +11140,6 @@
> + }
> + | ident '.' ident '.' '*'
> + {
> +- THD *thd= YYTHD;
> + SELECT_LEX *sel= Select;
> + const char* schema= thd->client_capabilities & CLIENT_NO_SCHEMA ?
> + NullS : $1.str;
> +@@ -11200,7 +11159,6 @@
> + simple_ident:
> + ident
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + Lex_input_stream *lip= YYLIP;
> + sp_variable_t *spv;
> +@@ -11251,7 +11209,6 @@
> + simple_ident_nospvar:
> + ident
> + {
> +- THD *thd= YYTHD;
> + SELECT_LEX *sel=Select;
> + if ((sel->parsing_place != IN_HAVING) ||
> + (sel->get_in_sum_expr() > 0))
> +@@ -11273,7 +11230,6 @@
> + simple_ident_q:
> + ident '.' ident
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> +
> + /*
> +@@ -11352,7 +11308,6 @@
> + }
> + | '.' ident '.' ident
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + SELECT_LEX *sel= lex->current_select;
> + if (sel->no_table_names_allowed)
> +@@ -11377,7 +11332,6 @@
> + }
> + | ident '.' ident '.' ident
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + SELECT_LEX *sel= lex->current_select;
> + const char* schema= (thd->client_capabilities & CLIENT_NO_SCHEMA ?
> +@@ -11445,7 +11399,7 @@
> + }
> + | ident '.' ident
> + {
> +- $$= new Table_ident(YYTHD, $1,$3,0);
> ++ $$= new Table_ident(thd, $1,$3,0);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> +@@ -11467,7 +11421,7 @@
> + }
> + | ident '.' ident opt_wild
> + {
> +- $$= new Table_ident(YYTHD, $1,$3,0);
> ++ $$= new Table_ident(thd, $1,$3,0);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> +@@ -11477,7 +11431,7 @@
> + ident
> + {
> + LEX_STRING db={(char*) any_db,3};
> +- $$= new Table_ident(YYTHD, db,$1,0);
> ++ $$= new Table_ident(thd, db,$1,0);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> +@@ -11487,8 +11441,7 @@
> + IDENT { $$= $1; }
> + | IDENT_QUOTED
> + {
> +- THD *thd= YYTHD;
> +-
> ++
> + if (thd->charset_is_system_charset)
> + {
> + CHARSET_INFO *cs= system_charset_info;
> +@@ -11516,8 +11469,6 @@
> + TEXT_STRING_sys:
> + TEXT_STRING
> + {
> +- THD *thd= YYTHD;
> +-
> + if (thd->charset_is_system_charset)
> + $$= $1;
> + else
> +@@ -11532,8 +11483,6 @@
> + TEXT_STRING_literal:
> + TEXT_STRING
> + {
> +- THD *thd= YYTHD;
> +-
> + if (thd->charset_is_collation_connection)
> + $$= $1;
> + else
> +@@ -11548,8 +11497,6 @@
> + TEXT_STRING_filesystem:
> + TEXT_STRING
> + {
> +- THD *thd= YYTHD;
> +-
> + if (thd->charset_is_character_set_filesystem)
> + $$= $1;
> + else
> +@@ -11566,7 +11513,6 @@
> + IDENT_sys { $$=$1; }
> + | keyword
> + {
> +- THD *thd= YYTHD;
> + $$.str= thd->strmake($1.str, $1.length);
> + if ($$.str == NULL)
> + MYSQL_YYABORT;
> +@@ -11578,7 +11524,6 @@
> + IDENT_sys { $$=$1; }
> + | keyword_sp
> + {
> +- THD *thd= YYTHD;
> + $$.str= thd->strmake($1.str, $1.length);
> + if ($$.str == NULL)
> + MYSQL_YYABORT;
> +@@ -11595,7 +11540,6 @@
> + user:
> + ident_or_text
> + {
> +- THD *thd= YYTHD;
> + if (!($$=(LEX_USER*) thd->alloc(sizeof(st_lex_user))))
> + MYSQL_YYABORT;
> + $$->user = $1;
> +@@ -11609,7 +11553,6 @@
> + }
> + | ident_or_text '@' ident_or_text
> + {
> +- THD *thd= YYTHD;
> + if (!($$=(LEX_USER*) thd->alloc(sizeof(st_lex_user))))
> + MYSQL_YYABORT;
> + $$->user = $1; $$->host=$3;
> +@@ -11628,7 +11571,7 @@
> + }
> + | CURRENT_USER optional_braces
> + {
> +- if (!($$=(LEX_USER*) YYTHD->alloc(sizeof(st_lex_user))))
> ++ if (!($$=(LEX_USER*) thd->alloc(sizeof(st_lex_user))))
> + MYSQL_YYABORT;
> + /*
> + empty LEX_USER means current_user and
> +@@ -11991,7 +11934,6 @@
> +
> + option_type_value:
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + Lex_input_stream *lip= YYLIP;
> +
> +@@ -12022,7 +11964,6 @@
> + }
> + ext_option_value
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + Lex_input_stream *lip= YYLIP;
> +
> +@@ -12105,7 +12046,6 @@
> + sys_option_value:
> + option_type internal_variable_name equal set_expr_or_default
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= Lex;
> + LEX_STRING *name= &$2.base_name;
> +
> +@@ -12117,7 +12057,7 @@
> + my_parse_error(ER(ER_SYNTAX_ERROR));
> + MYSQL_YYABORT;
> + }
> +- if (set_trigger_new_row(YYTHD, name, $4))
> ++ if (set_trigger_new_row(thd, name, $4))
> + MYSQL_YYABORT;
> + }
> + else if ($2.var)
> +@@ -12147,7 +12087,6 @@
> + }
> + | option_type TRANSACTION_SYM ISOLATION LEVEL_SYM isolation_types
> + {
> +- THD *thd= YYTHD;
> + LEX *lex=Lex;
> + lex->option_type= $1;
> + Item *item= new (thd->mem_root) Item_int((int32) $5);
> +@@ -12167,7 +12106,7 @@
> + '@' ident_or_text equal expr
> + {
> + Item_func_set_user_var *item;
> +- item= new (YYTHD->mem_root) Item_func_set_user_var($2, $4);
> ++ item= new (thd->mem_root) Item_func_set_user_var($2, $4);
> + if (item == NULL)
> + MYSQL_YYABORT;
> + set_var_user *var= new set_var_user(item);
> +@@ -12177,7 +12116,6 @@
> + }
> + | '@' '@' opt_var_ident_type internal_variable_name equal set_expr_or_default
> + {
> +- THD *thd= YYTHD;
> + struct sys_var_with_base tmp= $4;
> + /* Lookup if necessary: must be a system variable. */
> + if (tmp.var == NULL)
> +@@ -12190,7 +12128,6 @@
> + }
> + | charset old_or_new_charset_name_or_default
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + CHARSET_INFO *cs2;
> + cs2= $2 ? $2: global_system_variables.character_set_client;
> +@@ -12238,7 +12175,6 @@
> + }
> + | PASSWORD equal text_or_password
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + LEX_USER *user;
> + sp_pcontext *spc= lex->spcont;
> +@@ -12278,7 +12214,6 @@
> + internal_variable_name:
> + ident
> + {
> +- THD *thd= YYTHD;
> + sp_pcontext *spc= thd->lex->spcont;
> + sp_variable_t *spv;
> +
> +@@ -12337,7 +12272,7 @@
> + }
> + else
> + {
> +- sys_var *tmp=find_sys_var(YYTHD, $3.str, $3.length);
> ++ sys_var *tmp=find_sys_var(thd, $3.str, $3.length);
> + if (!tmp)
> + MYSQL_YYABORT;
> + if (!tmp->is_struct())
> +@@ -12348,7 +12283,7 @@
> + }
> + | DEFAULT '.' ident
> + {
> +- sys_var *tmp=find_sys_var(YYTHD, $3.str, $3.length);
> ++ sys_var *tmp=find_sys_var(thd, $3.str, $3.length);
> + if (!tmp)
> + MYSQL_YYABORT;
> + if (!tmp->is_struct())
> +@@ -12370,16 +12305,16 @@
> + TEXT_STRING { $$=$1.str;}
> + | PASSWORD '(' TEXT_STRING ')'
> + {
> +- $$= $3.length ? YYTHD->variables.old_passwords ?
> +- Item_func_old_password::alloc(YYTHD, $3.str, $3.length) :
> +- Item_func_password::alloc(YYTHD, $3.str, $3.length) :
> ++ $$= $3.length ? thd->variables.old_passwords ?
> ++ Item_func_old_password::alloc(thd, $3.str, $3.length) :
> ++ Item_func_password::alloc(thd, $3.str, $3.length) :
> + $3.str;
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | OLD_PASSWORD '(' TEXT_STRING ')'
> + {
> +- $$= $3.length ? Item_func_old_password::alloc(YYTHD, $3.str,
> ++ $$= $3.length ? Item_func_old_password::alloc(thd, $3.str,
> + $3.length) :
> + $3.str;
> + if ($$ == NULL)
> +@@ -12393,19 +12328,19 @@
> + | DEFAULT { $$=0; }
> + | ON
> + {
> +- $$=new (YYTHD->mem_root) Item_string("ON", 2, system_charset_info);
> ++ $$=new (thd->mem_root) Item_string("ON", 2, system_charset_info);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | ALL
> + {
> +- $$=new (YYTHD->mem_root) Item_string("ALL", 3, system_charset_info);
> ++ $$=new (thd->mem_root) Item_string("ALL", 3, system_charset_info);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> + | BINARY
> + {
> +- $$=new (YYTHD->mem_root) Item_string("binary", 6, system_charset_info);
> ++ $$=new (thd->mem_root) Item_string("binary", 6, system_charset_info);
> + if ($$ == NULL)
> + MYSQL_YYABORT;
> + }
> +@@ -12443,7 +12378,7 @@
> + table_ident opt_table_alias lock_option
> + {
> + thr_lock_type lock_type= (thr_lock_type) $3;
> +- if (!Select->add_table_to_list(YYTHD, $1, $2, 0, lock_type))
> ++ if (!Select->add_table_to_list(thd, $1, $2, 0, lock_type))
> + MYSQL_YYABORT;
> + /* If table is to be write locked, protect from a impending GRL. */
> + if (lock_type >= TL_WRITE_ALLOW_WRITE)
> +@@ -12514,7 +12449,7 @@
> + lex->expr_allows_subselect= FALSE;
> + lex->sql_command = SQLCOM_HA_READ;
> + lex->ha_rkey_mode= HA_READ_KEY_EXACT; /* Avoid purify warnings */
> +- Item *one= new (YYTHD->mem_root) Item_int((int32) 1);
> ++ Item *one= new (thd->mem_root) Item_int((int32) 1);
> + if (one == NULL)
> + MYSQL_YYABORT;
> + lex->current_select->select_limit= one;
> +@@ -12836,10 +12771,10 @@
> + $$=$1; $1->password=$4;
> + if ($4.length)
> + {
> +- if (YYTHD->variables.old_passwords)
> ++ if (thd->variables.old_passwords)
> + {
> + char *buff=
> +- (char *) YYTHD->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH_323+1);
> ++ (char *) thd->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH_323+1);
> + if (buff == NULL)
> + MYSQL_YYABORT;
> + my_make_scrambled_password_323(buff, $4.str, $4.length);
> +@@ -12849,7 +12784,7 @@
> + else
> + {
> + char *buff=
> +- (char *) YYTHD->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH+1);
> ++ (char *) thd->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH+1);
> + if (buff == NULL)
> + MYSQL_YYABORT;
> + my_make_scrambled_password(buff, $4.str, $4.length);
> +@@ -12881,7 +12816,7 @@
> + column_list_id:
> + ident
> + {
> +- String *new_str = new (YYTHD->mem_root) String((const char*) $1.str,$1.length,system_charset_info);
> ++ String *new_str = new (thd->mem_root) String((const char*) $1.str,$1.length,system_charset_info);
> + if (new_str == NULL)
> + MYSQL_YYABORT;
> + List_iterator <LEX_COLUMN> iter(Lex->columns);
> +@@ -12981,14 +12916,14 @@
> +
> + opt_chain:
> + /* empty */
> +- { $$= (YYTHD->variables.completion_type == 1); }
> ++ { $$= (thd->variables.completion_type == 1); }
> + | AND_SYM NO_SYM CHAIN_SYM { $$=0; }
> + | AND_SYM CHAIN_SYM { $$=1; }
> + ;
> +
> + opt_release:
> + /* empty */
> +- { $$= (YYTHD->variables.completion_type == 2); }
> ++ { $$= (thd->variables.completion_type == 2); }
> + | RELEASE_SYM { $$=1; }
> + | NO_SYM RELEASE_SYM { $$=0; }
> + ;
> +@@ -13102,7 +13037,6 @@
> +
> + union_order_or_limit:
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + DBUG_ASSERT(lex->current_select->linkage != GLOBAL_OPTIONS_TYPE);
> + SELECT_LEX *sel= lex->current_select;
> +@@ -13118,7 +13052,6 @@
> + }
> + order_or_limit
> + {
> +- THD *thd= YYTHD;
> + thd->lex->current_select->no_table_names_allowed= 0;
> + thd->where= "";
> + }
> +@@ -13255,14 +13188,14 @@
> + from older master servers (i.e. to create non-suid trigger in this
> + case).
> + */
> +- YYTHD->lex->definer= 0;
> ++ thd->lex->definer= 0;
> + }
> + ;
> +
> + definer:
> + DEFINER_SYM EQ user
> + {
> +- YYTHD->lex->definer= get_current_user(YYTHD, $3);
> ++ thd->lex->definer= get_current_user(thd, $3);
> + }
> + ;
> +
> +@@ -13307,7 +13240,6 @@
> + view_tail:
> + view_suid VIEW_SYM table_ident
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + lex->sql_command= SQLCOM_CREATE_VIEW;
> + /* first table in list is target VIEW name */
> +@@ -13347,7 +13279,6 @@
> + }
> + view_select_aux view_check_option
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= Lex;
> + uint len= YYLIP->get_cpp_ptr() - lex->create_view_select.str;
> + void *create_view_select= thd->memdup(lex->create_view_select.str, len);
> +@@ -13403,7 +13334,6 @@
> + EACH_SYM
> + ROW_SYM
> + { /* $15 */
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + Lex_input_stream *lip= YYLIP;
> + sp_head *sp;
> +@@ -13437,8 +13367,8 @@
> + sp_head *sp= lex->sphead;
> +
> + lex->sql_command= SQLCOM_CREATE_TRIGGER;
> +- sp->set_stmt_end(YYTHD);
> +- sp->restore_thd_mem_root(YYTHD);
> ++ sp->set_stmt_end(thd);
> ++ sp->restore_thd_mem_root(thd);
> +
> + if (sp->is_not_allowed_in_function("trigger"))
> + MYSQL_YYABORT;
> +@@ -13448,7 +13378,7 @@
> + sp_proc_stmt alternatives are not saving/restoring LEX, so
> + lex->query_tables can be wiped out.
> + */
> +- if (!lex->select_lex.add_table_to_list(YYTHD, $9,
> ++ if (!lex->select_lex.add_table_to_list(thd, $9,
> + (LEX_STRING*) 0,
> + TL_OPTION_UPDATING,
> + TL_IGNORE))
> +@@ -13466,7 +13396,6 @@
> + AGGREGATE_SYM remember_name FUNCTION_SYM ident
> + RETURNS_SYM udf_type SONAME_SYM TEXT_STRING_sys
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + if (is_native_function(thd, & $4))
> + {
> +@@ -13484,7 +13413,6 @@
> + | remember_name FUNCTION_SYM ident
> + RETURNS_SYM udf_type SONAME_SYM TEXT_STRING_sys
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + if (is_native_function(thd, & $3))
> + {
> +@@ -13507,7 +13435,6 @@
> + sp_name /* $3 */
> + '(' /* $4 */
> + { /* $5 */
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + Lex_input_stream *lip= YYLIP;
> + sp_head *sp;
> +@@ -13565,7 +13492,7 @@
> + MYSQL_YYABORT;
> + }
> +
> +- if (sp->fill_field_definition(YYTHD, lex,
> ++ if (sp->fill_field_definition(thd, lex,
> + (enum enum_field_types) $11,
> + &sp->m_return_field_def))
> + MYSQL_YYABORT;
> +@@ -13574,7 +13501,6 @@
> + }
> + sp_c_chistics /* $13 */
> + { /* $14 */
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + Lex_input_stream *lip= YYLIP;
> +
> +@@ -13583,7 +13509,6 @@
> + }
> + sp_proc_stmt /* $15 */
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> + sp_head *sp= lex->sphead;
> +
> +@@ -13654,10 +13579,10 @@
> + sp= new sp_head();
> + if (sp == NULL)
> + MYSQL_YYABORT;
> +- sp->reset_thd_mem_root(YYTHD);
> ++ sp->reset_thd_mem_root(thd);
> + sp->init(lex);
> + sp->m_type= TYPE_ENUM_PROCEDURE;
> +- sp->init_sp_name(YYTHD, $3);
> ++ sp->init_sp_name(thd, $3);
> +
> + lex->sphead= sp;
> + }
> +@@ -13672,7 +13597,6 @@
> + sp_pdparam_list
> + ')'
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> +
> + lex->sphead->m_param_end= YYLIP->get_cpp_tok_start();
> +@@ -13680,7 +13604,6 @@
> + }
> + sp_c_chistics
> + {
> +- THD *thd= YYTHD;
> + LEX *lex= thd->lex;
> +
> + lex->sphead->m_chistics= &lex->sp_chistics;
> +@@ -13691,9 +13614,9 @@
> + LEX *lex= Lex;
> + sp_head *sp= lex->sphead;
> +
> +- sp->set_stmt_end(YYTHD);
> ++ sp->set_stmt_end(thd);
> + lex->sql_command= SQLCOM_CREATE_PROCEDURE;
> +- sp->restore_thd_mem_root(YYTHD);
> ++ sp->restore_thd_mem_root(thd);
> + }
> + ;
> +
> +@@ -13730,21 +13653,21 @@
> + text_string
> + {
> + MYSQL_YYABORT_UNLESS($1->length() <= MAXGTRIDSIZE);
> +- if (!(Lex->xid=(XID *)YYTHD->alloc(sizeof(XID))))
> ++ if (!(Lex->xid=(XID *)thd->alloc(sizeof(XID))))
> + MYSQL_YYABORT;
> + Lex->xid->set(1L, $1->ptr(), $1->length(), 0, 0);
> + }
> + | text_string ',' text_string
> + {
> + MYSQL_YYABORT_UNLESS($1->length() <= MAXGTRIDSIZE && $3->length() <= MAXBQUALSIZE);
> +- if (!(Lex->xid=(XID *)YYTHD->alloc(sizeof(XID))))
> ++ if (!(Lex->xid=(XID *)thd->alloc(sizeof(XID))))
> + MYSQL_YYABORT;
> + Lex->xid->set(1L, $1->ptr(), $1->length(), $3->ptr(), $3->length());
> + }
> + | text_string ',' text_string ',' ulong_num
> + {
> + MYSQL_YYABORT_UNLESS($1->length() <= MAXGTRIDSIZE && $3->length() <= MAXBQUALSIZE);
> +- if (!(Lex->xid=(XID *)YYTHD->alloc(sizeof(XID))))
> ++ if (!(Lex->xid=(XID *)thd->alloc(sizeof(XID))))
> + MYSQL_YYABORT;
> + Lex->xid->set($5, $1->ptr(), $1->length(), $3->ptr(), $3->length());
> + }
> diff --git a/package/mysql/mysql.mk b/package/mysql/mysql.mk
> index 9b22c2d..27afc9f 100644
> --- a/package/mysql/mysql.mk
> +++ b/package/mysql/mysql.mk
> @@ -25,7 +25,6 @@ MYSQL_CONF_ENV = \
>
> MYSQL_CONF_OPT = \
> --without-ndb-binlog \
> - --without-server \
> --without-docs \
> --without-man \
> --without-libedit \
> @@ -34,6 +33,50 @@ MYSQL_CONF_OPT = \
> --enable-thread-safe-client \
> $(ENABLE_DEBUG)
>
> +ifeq ($(BR2_PACKAGE_MYSQL_SERVER),y)
> +MYSQL_DEPENDENCIES += host-mysql host-bison
> +HOST_MYSQL_DEPENDENCIES =
> +
> +HOST_MYSQL_CONF_OPT = \
> + --with-embedded-server
> +
> +MYSQL_CONF_OPT += \
> + --disable-dependency-tracking \
> + --with-atomic-ops=up \
> + --with-embedded-server \
> + --without-query-cache \
> + --without-plugin-partition \
> + --without-plugin-daemon_example \
> + --without-plugin-ftexample \
> + --without-plugin-archive \
> + --without-plugin-blackhole \
> + --without-plugin-example \
> + --without-plugin-federated \
> + --without-plugin-ibmdb2i \
> + --without-plugin-innobase \
> + --without-plugin-innodb_plugin \
> + --without-plugin-ndbcluster
> +
> +define HOST_MYSQL_BUILD_CMDS
> + $(MAKE) -C $(@D)/include my_config.h
> + $(MAKE) -C $(@D)/mysys libmysys.a
> + $(MAKE) -C $(@D)/strings libmystrings.a
> + $(MAKE) -C $(@D)/vio libvio.a
> + $(MAKE) -C $(@D)/dbug libdbug.a
> + $(MAKE) -C $(@D)/regex libregex.a
> + $(MAKE) -C $(@D)/sql gen_lex_hash
> +endef
> +
> +define HOST_MYSQL_INSTALL_CMDS
> + $(INSTALL) -m 0755 $(@D)/sql/gen_lex_hash $(HOST_DIR)/usr/bin/
> +endef
> +
> +else
> +MYSQL_CONF_OPT += \
> + --without-server
> +endif
> +
> +
> define MYSQL_REMOVE_TEST_PROGS
> rm -rf $(TARGET_DIR)/usr/mysql-test $(TARGET_DIR)/usr/sql-bench
> endef
> @@ -46,3 +89,4 @@ MYSQL_POST_INSTALL_TARGET_HOOKS += MYSQL_REMOVE_TEST_PROGS
> MYSQL_POST_INSTALL_TARGET_HOOKS += MYSQL_ADD_MYSQL_LIB_PATH
>
> $(eval $(autotools-package))
> +$(eval $(host-autotools-package))
> --
> 1.7.9.5
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH 2/2] package/mysql: fix debugging options
2014-02-12 22:39 ` [Buildroot] [PATCH 2/2] package/mysql: fix debugging options Marcelo Gutiérrez
@ 2014-02-23 19:12 ` Yann E. MORIN
0 siblings, 0 replies; 11+ messages in thread
From: Yann E. MORIN @ 2014-02-23 19:12 UTC (permalink / raw)
To: buildroot
Marcello, All,
On 2014-02-12 22:39 +0000, Marcelo Guti?rrez spake thusly:
> From: Marcelo Gutierrez <kuyurix@gmail.com>
>
> The usual --{en,dis}able-debug passed by the infrastructure are not
> recognised by mysql's ./configure, as it uses unusual options.
>
> Also, debugging is only meaningfull to the server, not the client.
>
> Signed-off-by: Marcelo Gutierrez (UTN/FRH) <kuyurix@gmail.com>
> [yann.morin.1998 at free.fr: actually add the options, move in server if-block]
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> Cc: Arnout Vandecappelle <arnout@mind.be>
Obviously, this already has my SoB-line.
So this is just a reminder for Peter. ;-)
Regards,
Yann E. MORIN.
> ---
> package/mysql/mysql.mk | 11 +++++++++--
> 1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/package/mysql/mysql.mk b/package/mysql/mysql.mk
> index 27afc9f..95b30b7 100644
> --- a/package/mysql/mysql.mk
> +++ b/package/mysql/mysql.mk
> @@ -30,8 +30,7 @@ MYSQL_CONF_OPT = \
> --without-libedit \
> --without-readline \
> --with-low-memory \
> - --enable-thread-safe-client \
> - $(ENABLE_DEBUG)
> + --enable-thread-safe-client
>
> ifeq ($(BR2_PACKAGE_MYSQL_SERVER),y)
> MYSQL_DEPENDENCIES += host-mysql host-bison
> @@ -57,6 +56,14 @@ MYSQL_CONF_OPT += \
> --without-plugin-innodb_plugin \
> --without-plugin-ndbcluster
>
> +# Debugging is only available for the server, so no need for
> +# this if-block outside of the server if-block
> +ifeq ($(BR2_ENABLE_DEBUG),y)
> +MYSQL_CONF_OPT += --with-debug=full
> +else
> +MYSQL_CONF_OPT += --without-debug
> +endif
> +
> define HOST_MYSQL_BUILD_CMDS
> $(MAKE) -C $(@D)/include my_config.h
> $(MAKE) -C $(@D)/mysys libmysys.a
> --
> 1.7.9.5
>
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH 1/2] mysql: add option to build the server
2014-02-12 22:39 [Buildroot] [PATCH 1/2] mysql: add option to build the server Marcelo Gutiérrez
2014-02-12 22:39 ` [Buildroot] [PATCH 2/2] package/mysql: fix debugging options Marcelo Gutiérrez
2014-02-23 19:10 ` [Buildroot] [PATCH 1/2] mysql: add option to build the server Yann E. MORIN
@ 2014-02-23 20:15 ` Peter Korsgaard
2014-02-24 19:38 ` Marcelo Gutierrez
2014-03-03 22:35 ` Thomas Petazzoni
3 siblings, 1 reply; 11+ messages in thread
From: Peter Korsgaard @ 2014-02-23 20:15 UTC (permalink / raw)
To: buildroot
>>>>> "Marcelo" == Marcelo Guti?rrez <kuyurix@gmail.com> writes:
> From: Marcelo Gutierrez <kuyurix@gmail.com>
> Signed-off-by: Marcelo Gutierrez (UTN/FRH) <kuyurix@gmail.com>
Thanks, see below for a few comments.
> diff --git a/package/mysql/mysql-0003-ac_stack_direction-is-unset.patch b/package/mysql/mysql-0003-ac_stack_direction-is-unset.patch
> new file mode 100644
> index 0000000..6fef0a9
> --- /dev/null
> +++ b/package/mysql/mysql-0003-ac_stack_direction-is-unset.patch
> @@ -0,0 +1,15 @@
> +misc.m4: ac_cv_c_stack_direction is unset.
> +
> +Signed-off-by: Marcelo Gutierrez (UTN/FRH) <kuyurix@gmail.com>
Ok, please don't forget to send upstream.
> +++ b/package/mysql/mysql-0004-Fix-gen_lex_hash-execution.patch
> @@ -0,0 +1,32 @@
> +Makefile: fix cross-compiling the server
> +
> +MySQL Makefile believes it can run code it just compiled, to
> +generate a header. This does not work for cross-compilation.
> +
> +Instead, use a pre-installed host-version of the required tool.
> +
> +Signed-off-by: Marcelo Gutierrez (UTN/FRH) <kuyurix@gmail.com>
Like this it cannot go upstream. Would upstream be interested in a patch
doing it right (E.G. using CC_FOR_BUILD)?
> diff --git a/package/mysql/mysql-0005-bison_3_breaks_mysql_server_build.patch b/package/mysql/mysql-0005-bison_3_breaks_mysql_server_build.patch
> new file mode 100644
> index 0000000..918fe24
> --- /dev/null
> +++ b/package/mysql/mysql-0005-bison_3_breaks_mysql_server_build.patch
> @@ -0,0 +1,3310 @@
> +fix the yacc code in mysql
Fix in what way?
> +++ b/package/mysql/mysql.mk
> @@ -25,7 +25,6 @@ MYSQL_CONF_ENV = \
> MYSQL_CONF_OPT = \
> --without-ndb-binlog \
> - --without-server \
> --without-docs \
> --without-man \
> --without-libedit \
> @@ -34,6 +33,50 @@ MYSQL_CONF_OPT = \
> --enable-thread-safe-client \
> $(ENABLE_DEBUG)
> +ifeq ($(BR2_PACKAGE_MYSQL_SERVER),y)
> +MYSQL_DEPENDENCIES += host-mysql host-bison
> +HOST_MYSQL_DEPENDENCIES =
> +
> +HOST_MYSQL_CONF_OPT = \
> + --with-embedded-server
It is imho cleaner to unconditionally define the host mysql variables,
so the host-autotools-package macro does the right thing.
--
Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH 1/2] mysql: add option to build the server
2014-02-23 20:15 ` Peter Korsgaard
@ 2014-02-24 19:38 ` Marcelo Gutierrez
0 siblings, 0 replies; 11+ messages in thread
From: Marcelo Gutierrez @ 2014-02-24 19:38 UTC (permalink / raw)
To: buildroot
Hi Peter, all,
> > diff --git a/package/mysql/mysql-0005-
> bison_3_breaks_mysql_server_build.patch
> b/package/mysql/mysql-0005-bison_3_breaks_mysql_server_build.patch
> > new file mode 100644
> > index 0000000..918fe24
> > --- /dev/null
> > +++ b/package/mysql/mysql-0005-bison_3_breaks_mysql_server_build.patch
> > @@ -0,0 +1,3310 @@
> > +fix the yacc code in mysql
>
> Fix in what way?
Build fails due to changes in the newest Bison, so I made porting to Bison
3.x to fix this MySQL bug:
http://bugs.mysql.com/bug.php?id=71250
Regards,
Marcelo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20140224/7a48582a/attachment.html>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH 1/2] mysql: add option to build the server
2014-02-12 22:39 [Buildroot] [PATCH 1/2] mysql: add option to build the server Marcelo Gutiérrez
` (2 preceding siblings ...)
2014-02-23 20:15 ` Peter Korsgaard
@ 2014-03-03 22:35 ` Thomas Petazzoni
2014-03-04 2:39 ` Marcelo Gutierrez
3 siblings, 1 reply; 11+ messages in thread
From: Thomas Petazzoni @ 2014-03-03 22:35 UTC (permalink / raw)
To: buildroot
Dear Marcelo Guti?rrez,
On Wed, 12 Feb 2014 22:39:33 +0000, Marcelo Guti?rrez wrote:
> From: Marcelo Gutierrez <kuyurix@gmail.com>
>
>
> Signed-off-by: Marcelo Gutierrez (UTN/FRH) <kuyurix@gmail.com>
> ---
> package/mysql/Config.in | 9 +
> .../mysql-0003-ac_stack_direction-is-unset.patch | 15 +
> .../mysql-0004-Fix-gen_lex_hash-execution.patch | 32 +
> ...ql-0005-bison_3_breaks_mysql_server_build.patch | 3310 ++++++++++++++++++++
> package/mysql/mysql.mk | 46 +-
> 5 files changed, 3411 insertions(+), 1 deletion(-)
> create mode 100644 package/mysql/mysql-0003-ac_stack_direction-is-unset.patch
> create mode 100644 package/mysql/mysql-0004-Fix-gen_lex_hash-execution.patch
> create mode 100644 package/mysql/mysql-0005-bison_3_breaks_mysql_server_build.patch
I've applied this, but:
1/ The package lacks an init script to start the MySQL server
automatically.
2/ When mysqld_safe is started automatically, it looks for stuff
in /usr/var that doesn't exist:
700101 00:00:22 mysqld_safe Starting mysqld daemon with databases from /usr/var
/usr/bin/mysqld_safe: line 595: can't create /usr/var/buildroot.err: nonexistent directory
/usr/bin/mysqld_safe: eval: line 1: can't create /usr/var/buildroot.err: nonexistent directory
3/ Peter made some comments that have not been addressed. Since the
patch was large, I thought it would be easier to have it merged
first, and then do incremental changes.
Could you work on those changes, and submit the corresponding patches?
Thanks,
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH 1/2] mysql: add option to build the server
2014-03-03 22:35 ` Thomas Petazzoni
@ 2014-03-04 2:39 ` Marcelo Gutierrez
2014-03-04 5:51 ` Baruch Siach
0 siblings, 1 reply; 11+ messages in thread
From: Marcelo Gutierrez @ 2014-03-04 2:39 UTC (permalink / raw)
To: buildroot
Hi Thomas, all
I've applied this, but:
>
> 1/ The package lacks an init script to start the MySQL server
> automatically.
>
> 2/ When mysqld_safe is started automatically, it looks for stuff
> in /usr/var that doesn't exist:
>
> 700101 00:00:22 mysqld_safe Starting mysqld daemon with databases from
> /usr/var
> /usr/bin/mysqld_safe: line 595: can't create /usr/var/buildroot.err:
> nonexistent directory
> /usr/bin/mysqld_safe: eval: line 1: can't create /usr/var/buildroot.err:
> nonexistent directory
>
I can fix that but we'll need to add a mysql user and I have no idea how do
it
Regard,
Marcelo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20140303/fe014a7e/attachment.html>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH 1/2] mysql: add option to build the server
2014-03-04 2:39 ` Marcelo Gutierrez
@ 2014-03-04 5:51 ` Baruch Siach
2014-03-04 17:53 ` Marcelo Gutierrez
0 siblings, 1 reply; 11+ messages in thread
From: Baruch Siach @ 2014-03-04 5:51 UTC (permalink / raw)
To: buildroot
Hi Marcelo,
On Mon, Mar 03, 2014 at 11:39:59PM -0300, Marcelo Gutierrez wrote:
> I've applied this, but:
> >
> > 1/ The package lacks an init script to start the MySQL server
> > automatically.
> >
> > 2/ When mysqld_safe is started automatically, it looks for stuff
> > in /usr/var that doesn't exist:
> >
> > 700101 00:00:22 mysqld_safe Starting mysqld daemon with databases from
> > /usr/var
> > /usr/bin/mysqld_safe: line 595: can't create /usr/var/buildroot.err:
> > nonexistent directory
> > /usr/bin/mysqld_safe: eval: line 1: can't create /usr/var/buildroot.err:
> > nonexistent directory
> >
>
> I can fix that but we'll need to add a mysql user and I have no idea how do
> it
You can to this by setting the MYSQL_USERS variable. See the example in
section 7.2.4 of the manual
(http://buildroot.net/downloads/manual/manual.html), and section 12.2 for
syntax details.
baruch
--
http://baruch.siach.name/blog/ ~. .~ Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
- baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH 1/2] mysql: add option to build the server
2014-03-04 5:51 ` Baruch Siach
@ 2014-03-04 17:53 ` Marcelo Gutierrez
0 siblings, 0 replies; 11+ messages in thread
From: Marcelo Gutierrez @ 2014-03-04 17:53 UTC (permalink / raw)
To: buildroot
Hi all,
You can to this by setting the MYSQL_USERS variable. See the example in
> section 7.2.4 of the manual
> (http://buildroot.net/downloads/manual/manual.html), and section 12.2 for
> syntax details.
>
@Baruch: Thank you so much for the information.
700101 00:00:22 mysqld_safe Starting mysqld daemon with databases from
> /usr/var
> /usr/bin/mysqld_safe: line 595: can't create /usr/var/buildroot.err:
> nonexistent directory
> /usr/bin/mysqld_safe: eval: line 1: can't create /usr/var/buildroot.err:
> nonexistent directory
>
@Thomas: Issue fixed.(http://patchwork.ozlabs.org/patch/326422/)
Regards,
Marcelo.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20140304/b41d65be/attachment.html>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH 1/2] mysql: add option to build the server
2014-02-04 15:41 [Buildroot] [PATCH 0/2] MySQL debug fix, and Mysql server on target Yann E. MORIN
@ 2014-02-04 15:41 ` Yann E. MORIN
0 siblings, 0 replies; 11+ messages in thread
From: Yann E. MORIN @ 2014-02-04 15:41 UTC (permalink / raw)
To: buildroot
From: Marcelo Guti?rrez(UTN/FRH) <kuyurix@gmail.com>
Signed-off-by: Marcelo Guti?rrez <kuyurix@gmail.com>
[yann.morin.1998 at free.fr: fix menuconfig layout]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
package/mysql/Config.in | 9 +++++
.../mysql-0003-ac_stack_direction-is-unset.patch | 15 +++++++
.../mysql-0004-Fix-gen_lex_hash-execution.patch | 32 +++++++++++++++
package/mysql/mysql.mk | 46 +++++++++++++++++++++-
4 files changed, 101 insertions(+), 1 deletion(-)
create mode 100644 package/mysql/mysql-0003-ac_stack_direction-is-unset.patch
create mode 100644 package/mysql/mysql-0004-Fix-gen_lex_hash-execution.patch
diff --git a/package/mysql/Config.in b/package/mysql/Config.in
index 0def957..7133892 100644
--- a/package/mysql/Config.in
+++ b/package/mysql/Config.in
@@ -10,6 +10,15 @@ config BR2_PACKAGE_MYSQL
http://www.mysql.com/
+if BR2_PACKAGE_MYSQL
+
+config BR2_PACKAGE_MYSQL_SERVER
+ bool "MySQL server"
+ help
+ Install the MySQL server on the target.
+
+endif
+
comment "MySQL needs a toolchain w/ C++, threads"
depends on BR2_USE_MMU
depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/mysql/mysql-0003-ac_stack_direction-is-unset.patch b/package/mysql/mysql-0003-ac_stack_direction-is-unset.patch
new file mode 100644
index 0000000..6fef0a9
--- /dev/null
+++ b/package/mysql/mysql-0003-ac_stack_direction-is-unset.patch
@@ -0,0 +1,15 @@
+misc.m4: ac_cv_c_stack_direction is unset.
+
+Signed-off-by: Marcelo Gutierrez (UTN/FRH) <kuyurix@gmail.com>
+
+--- mysql-5.1.70.orig/config/ac-macros/misc.m4
++++ mysql-5.1.70/config/ac-macros/misc.m4
+@@ -477,7 +477,7 @@
+ exit(ptr_f(&a) < 0);
+ }
+ ], ac_cv_c_stack_direction=1, ac_cv_c_stack_direction=-1,
+- ac_cv_c_stack_direction=)])
++ ac_cv_c_stack_direction=0)])
+ AC_DEFINE_UNQUOTED(STACK_DIRECTION, $ac_cv_c_stack_direction)
+ ])dnl
+
diff --git a/package/mysql/mysql-0004-Fix-gen_lex_hash-execution.patch b/package/mysql/mysql-0004-Fix-gen_lex_hash-execution.patch
new file mode 100644
index 0000000..b91ed4f
--- /dev/null
+++ b/package/mysql/mysql-0004-Fix-gen_lex_hash-execution.patch
@@ -0,0 +1,32 @@
+Makefile: fix cross-compiling the server
+
+MySQL Makefile believes it can run code it just compiled, to
+generate a header. This does not work for cross-compilation.
+
+Instead, use a pre-installed host-version of the required tool.
+
+Signed-off-by: Marcelo Gutierrez (UTN/FRH) <kuyurix@gmail.com>
+
+--- mysql-5.1.70/sql/Makefile.am
++++ mysql-5.1.70.patch/sql/Makefile.am
+@@ -177,7 +177,7 @@
+ # this avoid the rebuild of the built files in a source dist
+ lex_hash.h: gen_lex_hash.cc lex.h
+ $(MAKE) $(AM_MAKEFLAGS) gen_lex_hash$(EXEEXT)
+- ./gen_lex_hash$(EXEEXT) > $@-t
++ gen_lex_hash$(EXEEXT) > $@-t
+ $(MV) $@-t $@
+
+ # For testing of udf_example.so
+
+--- mysql-5.1.70/sql/Makefile.in
++++ mysql-5.1.70.patch/sql/Makefile.in
+@@ -1310,7 +1310,7 @@
+ # this avoid the rebuild of the built files in a source dist
+ lex_hash.h: gen_lex_hash.cc lex.h
+ $(MAKE) $(AM_MAKEFLAGS) gen_lex_hash$(EXEEXT)
+- ./gen_lex_hash$(EXEEXT) > $@-t
++ gen_lex_hash$(EXEEXT) > $@-t
+ $(MV) $@-t $@
+
+ # We might have some stuff not built in this build, but that we want to install
diff --git a/package/mysql/mysql.mk b/package/mysql/mysql.mk
index 9b22c2d..9bcbf4f 100644
--- a/package/mysql/mysql.mk
+++ b/package/mysql/mysql.mk
@@ -25,7 +25,6 @@ MYSQL_CONF_ENV = \
MYSQL_CONF_OPT = \
--without-ndb-binlog \
- --without-server \
--without-docs \
--without-man \
--without-libedit \
@@ -34,6 +33,50 @@ MYSQL_CONF_OPT = \
--enable-thread-safe-client \
$(ENABLE_DEBUG)
+ifeq ($(BR2_PACKAGE_MYSQL_SERVER),y)
+MYSQL_DEPENDENCIES += host-mysql
+HOST_MYSQL_DEPENDENCIES =
+
+HOST_MYSQL_CONF_OPT = \
+ --with-embedded-server
+
+MYSQL_CONF_OPT += \
+ --disable-dependency-tracking \
+ --with-atomic-ops=up \
+ --with-embedded-server \
+ --without-query-cache \
+ --without-plugin-partition \
+ --without-plugin-daemon_example \
+ --without-plugin-ftexample \
+ --without-plugin-archive \
+ --without-plugin-blackhole \
+ --without-plugin-example \
+ --without-plugin-federated \
+ --without-plugin-ibmdb2i \
+ --without-plugin-innobase \
+ --without-plugin-innodb_plugin \
+ --without-plugin-ndbcluster
+
+define HOST_MYSQL_BUILD_CMDS
+ $(MAKE) -C $(@D)/include my_config.h
+ $(MAKE) -C $(@D)/mysys libmysys.a
+ $(MAKE) -C $(@D)/strings libmystrings.a
+ $(MAKE) -C $(@D)/vio libvio.a
+ $(MAKE) -C $(@D)/dbug libdbug.a
+ $(MAKE) -C $(@D)/regex libregex.a
+ $(MAKE) -C $(@D)/sql gen_lex_hash
+endef
+
+define HOST_MYSQL_INSTALL_CMDS
+ $(INSTALL) -m 0755 $(@D)/sql/gen_lex_hash $(HOST_DIR)/usr/bin/
+endef
+
+else
+MYSQL_CONF_OPT += \
+ --without-server
+endif
+
+
define MYSQL_REMOVE_TEST_PROGS
rm -rf $(TARGET_DIR)/usr/mysql-test $(TARGET_DIR)/usr/sql-bench
endef
@@ -46,3 +89,4 @@ MYSQL_POST_INSTALL_TARGET_HOOKS += MYSQL_REMOVE_TEST_PROGS
MYSQL_POST_INSTALL_TARGET_HOOKS += MYSQL_ADD_MYSQL_LIB_PATH
$(eval $(autotools-package))
+$(eval $(host-autotools-package))
--
1.8.1.2
^ permalink raw reply related [flat|nested] 11+ messages in thread
end of thread, other threads:[~2014-03-04 17:53 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-02-12 22:39 [Buildroot] [PATCH 1/2] mysql: add option to build the server Marcelo Gutiérrez
2014-02-12 22:39 ` [Buildroot] [PATCH 2/2] package/mysql: fix debugging options Marcelo Gutiérrez
2014-02-23 19:12 ` Yann E. MORIN
2014-02-23 19:10 ` [Buildroot] [PATCH 1/2] mysql: add option to build the server Yann E. MORIN
2014-02-23 20:15 ` Peter Korsgaard
2014-02-24 19:38 ` Marcelo Gutierrez
2014-03-03 22:35 ` Thomas Petazzoni
2014-03-04 2:39 ` Marcelo Gutierrez
2014-03-04 5:51 ` Baruch Siach
2014-03-04 17:53 ` Marcelo Gutierrez
-- strict thread matches above, loose matches on Subject: below --
2014-02-04 15:41 [Buildroot] [PATCH 0/2] MySQL debug fix, and Mysql server on target Yann E. MORIN
2014-02-04 15:41 ` [Buildroot] [PATCH 1/2] mysql: add option to build the server Yann E. MORIN
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.