* [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 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 ` 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 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 0/2] MySQL debug fix, and Mysql server on target
@ 2014-02-04 15:41 Yann E. MORIN
2014-02-04 15:41 ` [Buildroot] [PATCH 1/2] mysql: add option to build the server Yann E. MORIN
0 siblings, 1 reply; 11+ messages in thread
From: Yann E. MORIN @ 2014-02-04 15:41 UTC (permalink / raw)
To: buildroot
From: "Yann E. MORIN" <yann.morin.1998@free.fr>
Hello All!
Here is a consolidated series aboiut the MySQL changes.
Thanks to all involved in the initial patches! :-)
Regards,
Yann E. MORIN.
----------------------------------------------------------------
Marcelo Guti?rrez (1):
package/mysql: fix debugging options
Marcelo Guti?rrez(UTN/FRH) (1):
mysql: add option to build the server
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 | 57 ++++++++++++++++++++--
4 files changed, 110 insertions(+), 3 deletions(-)
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
--
.-----------------.--------------------.------------------.--------------------.
| 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-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 a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox