From: Ryan Coe Date: Fri, 16 Dec 2016 22:26:51 +0000 (-0800) Subject: mysql: rename package to oracle-mysql, make a virtual package X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3d707d2b4fa6362cb37754f6c5fbb06240f5faf5;p=buildroot.git mysql: rename package to oracle-mysql, make a virtual package This commit turns mysql into a virtual package, after renaming the original mysql package to oracle-mysql. This way, all existing packages that "depends on" or "select" BR2_PACKAGE_MYSQL continue to work with no modification. Signed-off-by: Ryan Coe Signed-off-by: Thomas Petazzoni --- diff --git a/package/Config.in b/package/Config.in index 8ed3622356..f7e8c0ab9b 100644 --- a/package/Config.in +++ b/package/Config.in @@ -925,7 +925,6 @@ menu "Database" source "package/kompexsqlite/Config.in" source "package/leveldb/Config.in" source "package/libpqxx/Config.in" - source "package/mariadb/Config.in" source "package/mongodb/Config.in" source "package/mysql/Config.in" source "package/postgresql/Config.in" diff --git a/package/mariadb/Config.in b/package/mariadb/Config.in deleted file mode 100644 index 86de194cca..0000000000 --- a/package/mariadb/Config.in +++ /dev/null @@ -1,32 +0,0 @@ -config BR2_PACKAGE_MARIADB - bool "mariadb" - depends on BR2_INSTALL_LIBSTDCPP - depends on BR2_USE_MMU # fork() - depends on BR2_TOOLCHAIN_HAS_THREADS - depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS - depends on !BR2_PACKAGE_MYSQL - select BR2_PACKAGE_LIBAIO - select BR2_PACKAGE_LIBXML2 - select BR2_PACKAGE_NCURSES - select BR2_PACKAGE_OPENSSL - select BR2_PACKAGE_READLINE - help - MariaDB is one of the most popular database servers in the world. - It's made by the original developers of MySQL and guaranteed to - stay open source. - - http://www.mariadb.org/ - -if BR2_PACKAGE_MARIADB - -config BR2_PACKAGE_MARIADB_SERVER - bool "mariadb server" - help - Install the mariadb server on the target. - -endif - -comment "mariadb needs a toolchain w/ C++, threads" - depends on BR2_USE_MMU - depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS - depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/mariadb/mariadb.mk b/package/mariadb/mariadb.mk index 7b47557bdd..6c609da60f 100644 --- a/package/mariadb/mariadb.mk +++ b/package/mariadb/mariadb.mk @@ -10,6 +10,7 @@ MARIADB_SITE = https://downloads.mariadb.org/interstitial/mariadb-$(MARIADB_VERS MARIADB_LICENSE = GPLv2 (server), GPLv2 with FLOSS exception (GPL client library), LGPLv2 (LGPL client library) MARIADB_LICENSE_FILES = README COPYING COPYING.LESSER MARIADB_INSTALL_STAGING = YES +MARIADB_PROVIDES = mysql MARIADB_DEPENDENCIES = \ host-mariadb \ diff --git a/package/mysql/0000-ac_cache_check.patch b/package/mysql/0000-ac_cache_check.patch deleted file mode 100644 index c3b55ba8d3..0000000000 --- a/package/mysql/0000-ac_cache_check.patch +++ /dev/null @@ -1,156 +0,0 @@ -Patch borrowed from -http://code.google.com/p/minimyth/source/browse/trunk/gar-minimyth/script/db/mysql/files/mysql-5.1.47-ac_cache_check.patch?r=6493. - -It allows to override through ac_cv_* variables various checks that -cannot be performed when cross-compiling. - -Signed-off-by: Thomas Petazzoni - ---- - storage/innodb_plugin/plug.in | 59 ++++++++++++++++++++++++++++-------------- - 1 file changed, 40 insertions(+), 19 deletions(-) - -Index: mysql-5.1.53/storage/innodb_plugin/plug.in -=================================================================== ---- mysql-5.1.53.orig/storage/innodb_plugin/plug.in -+++ mysql-5.1.53/storage/innodb_plugin/plug.in -@@ -53,9 +53,10 @@ - esac - AC_SUBST(INNODB_DYNAMIC_CFLAGS) - -- AC_MSG_CHECKING(whether GCC atomic builtins are available) -+ AC_CACHE_CHECK([whether GCC atomic builtins are available], -+ [ac_cv_have_decl_HAVE_IB_GCC_ATOMIC_BUILTINS], - # either define HAVE_IB_GCC_ATOMIC_BUILTINS or not -- AC_TRY_RUN( -+ [AC_TRY_RUN( - [ - int main() - { -@@ -95,18 +96,23 @@ - } - ], - [ -- AC_DEFINE([HAVE_IB_GCC_ATOMIC_BUILTINS], [1], -- [GCC atomic builtins are available]) - AC_MSG_RESULT(yes) -+ ac_cv_have_decl_HAVE_IB_GCC_ATOMIC_BUILTINS=yes - ], - [ - AC_MSG_RESULT(no) -+ ac_cv_have_decl_HAVE_IB_GCC_ATOMIC_BUILTINS=no - ] -- ) -+ )]) -+ if test "x$ac_cv_have_decl_HAVE_IB_GCC_ATOMIC_BUILTINS"= "xyes" ; then -+ AC_DEFINE([HAVE_IB_GCC_ATOMIC_BUILTINS], [1], -+ [GCC atomic builtins are available]) -+ fi - -- AC_MSG_CHECKING(whether pthread_t can be used by GCC atomic builtins) -+ AC_CACHE_CHECK([whether pthread_t can be used by GCC atomic builtins], -+ [ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_GCC], - # either define HAVE_IB_ATOMIC_PTHREAD_T_GCC or not -- AC_TRY_RUN( -+ [AC_TRY_RUN( - [ - #include - #include -@@ -126,14 +132,18 @@ - } - ], - [ -- AC_DEFINE([HAVE_IB_ATOMIC_PTHREAD_T_GCC], [1], -- [pthread_t can be used by GCC atomic builtins]) - AC_MSG_RESULT(yes) -+ ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_GCC=yes - ], - [ - AC_MSG_RESULT(no) -+ ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_GCC=no - ] -- ) -+ )]) -+ if test "x$ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_GCC"= "xyes" ; then -+ AC_DEFINE([HAVE_IB_ATOMIC_PTHREAD_T_GCC], [1], -+ [pthread_t can be used by GCC atomic builtins]) -+ fi - - AC_MSG_CHECKING(whether Solaris libc atomic functions are available) - # either define HAVE_IB_SOLARIS_ATOMICS or not -@@ -148,9 +158,10 @@ - are available]) - ) - -- AC_MSG_CHECKING(whether pthread_t can be used by Solaris libc atomic functions) -+ AC_CACHE_CHECK([whether pthread_t can be used by Solaris libc atomic functions], -+ [ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS], - # either define HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS or not -- AC_TRY_RUN( -+ [AC_TRY_RUN( - [ - #include - #include -@@ -181,28 +192,33 @@ - } - ], - [ -- AC_DEFINE([HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS], [1], -- [pthread_t can be used by solaris atomics]) - AC_MSG_RESULT(yes) -+ ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS=yes - ], - [ - AC_MSG_RESULT(no) -+ ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS=no - ] -- ) -+ )]) -+ if test "x$ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS"= "xyes" ; then -+ AC_DEFINE([HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS], [1], -+ [pthread_t can be used by solaris atomics]) -+ fi - - # this is needed to know which one of atomic_cas_32() or atomic_cas_64() - # to use in the source - AC_CHECK_SIZEOF([pthread_t], [], [#include ]) - - # Check for x86 PAUSE instruction -- AC_MSG_CHECKING(for x86 PAUSE instruction) -+ AC_CACHE_CHECK([for x86 PAUSE instruction], -+ [ac_cv_have_decl_HAVE_IB_PAUSE_INSTRUCTION], - # We have to actually try running the test program, because of a bug - # in Solaris on x86_64, where it wrongly reports that PAUSE is not - # supported when trying to run an application. See - # http://bugs.opensolaris.org/bugdatabase/printableBug.do?bug_id=6478684 - # We use ib_ prefix to avoid collisoins if this code is added to - # mysql's configure.in. -- AC_TRY_RUN( -+ [AC_TRY_RUN( - [ - int main() { - __asm__ __volatile__ ("pause"); -@@ -210,16 +226,21 @@ - } - ], - [ -- AC_DEFINE([HAVE_IB_PAUSE_INSTRUCTION], [1], [Does x86 PAUSE instruction exist]) - AC_MSG_RESULT(yes) -+ ac_cv_have_decl_HAVE_IB_PAUSE_INSTRUCTION=yes - ], - [ - AC_MSG_RESULT(no) -+ ac_cv_have_decl_HAVE_IB_PAUSE_INSTRUCTION=no - ], - [ - AC_MSG_RESULT(no) -+ ac_cv_have_decl_HAVE_IB_PAUSE_INSTRUCTION=no - ] -- ) -+ )]) -+ if test "x$ac_cv_have_decl_HAVE_IB_PAUSE_INSTRUCTION"= "xyes" ; then -+ AC_DEFINE([HAVE_IB_PAUSE_INSTRUCTION], [1], [Does x86 PAUSE instruction exist]) -+ fi - ]) - - # vim: set ft=config: diff --git a/package/mysql/0001-configure-ps-cache-check.patch b/package/mysql/0001-configure-ps-cache-check.patch deleted file mode 100644 index 336e80e0b7..0000000000 --- a/package/mysql/0001-configure-ps-cache-check.patch +++ /dev/null @@ -1,39 +0,0 @@ -Patch borrowed from -http://cgit.openembedded.org/cgit.cgi/openembedded/tree/recipes/mysql/files/configure-ps-cache-check.patch - -It allows to specify through ac_cv_FIND_PROC how ps should be used on -the target to find the PID of a program. - -Signed-off-by: Thomas Petazzoni - ---- - configure.in | 9 +++++---- - 1 file changed, 5 insertions(+), 4 deletions(-) - -Index: mysql-5.1.53/configure.in -=================================================================== ---- mysql-5.1.53.orig/configure.in -+++ mysql-5.1.53/configure.in -@@ -462,8 +462,8 @@ - # then Make, then shell. The autoconf substitution uses single quotes, so - # no unprotected single quotes should appear in the expression. - AC_PATH_PROG(PS, ps, ps) --AC_MSG_CHECKING("how to check if pid exists") --PS=$ac_cv_path_PS -+AC_CACHE_CHECK([how to check if pid exists], [ac_cv_FIND_PROC], -+[ - # Linux style - if $PS wwwp $$ 2> /dev/null | grep -- "$0" > /dev/null - then -@@ -502,8 +502,9 @@ - AC_MSG_ERROR([Could not find the right ps and/or grep switches. Which OS is this? See the Installation chapter in the Reference Manual.]) - esac - fi --AC_SUBST(FIND_PROC) --AC_MSG_RESULT("$FIND_PROC") -+ac_cv_FIND_PROC="$FIND_PROC" -+]) -+AC_SUBST([FIND_PROC], [$ac_cv_FIND_PROC]) - - # Check if a pid is valid - AC_PATH_PROG(KILL, kill, kill) diff --git a/package/mysql/0002-use-new-readline-iface.patch b/package/mysql/0002-use-new-readline-iface.patch deleted file mode 100644 index c5906563ce..0000000000 --- a/package/mysql/0002-use-new-readline-iface.patch +++ /dev/null @@ -1,21 +0,0 @@ -Tell MySQL to use the new readline interface even when an external -readline is being used. - -Signed-off-by: Thomas Petazzoni - ---- - configure.in | 1 + - 1 file changed, 1 insertion(+) - -Index: mysql-5.1.53/configure.in -=================================================================== ---- mysql-5.1.53.orig/configure.in -+++ mysql-5.1.53/configure.in -@@ -2689,6 +2689,7 @@ - # this way we avoid linking commercial source with GPL readline - readline_link="-lreadline" - want_to_use_readline="yes" -+ AC_DEFINE_UNQUOTED(USE_NEW_READLINE_INTERFACE, 1) - elif [test "$mysql_cv_libedit_interface" = "yes"] - then - # Use libedit diff --git a/package/mysql/0003-ac_stack_direction-is-unset.patch b/package/mysql/0003-ac_stack_direction-is-unset.patch deleted file mode 100644 index 6fef0a9acf..0000000000 --- a/package/mysql/0003-ac_stack_direction-is-unset.patch +++ /dev/null @@ -1,15 +0,0 @@ -misc.m4: ac_cv_c_stack_direction is unset. - -Signed-off-by: Marcelo Gutierrez (UTN/FRH) - ---- 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/0004-Fix-gen_lex_hash-execution.patch b/package/mysql/0004-Fix-gen_lex_hash-execution.patch deleted file mode 100644 index b91ed4fef9..0000000000 --- a/package/mysql/0004-Fix-gen_lex_hash-execution.patch +++ /dev/null @@ -1,32 +0,0 @@ -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) - ---- 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/0005-bison_3_breaks_mysql_server_build.patch b/package/mysql/0005-bison_3_breaks_mysql_server_build.patch deleted file mode 100644 index 918fe2456a..0000000000 --- a/package/mysql/0005-bison_3_breaks_mysql_server_build.patch +++ /dev/null @@ -1,3310 +0,0 @@ -fix the yacc code in mysql - -Signed-off-by: Marcelo Gutierrez (UTN/FRH) ---- -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 *list= new (thd->mem_root) List; - 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; -+ $$= new (thd->mem_root) List; - 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; -+ $$= new (thd->mem_root) List; - if ($$ == NULL) - MYSQL_YYABORT; - $$->push_back($1); -@@ -8497,7 +8465,7 @@ - ident_list: - simple_ident - { -- $$= new (YYTHD->mem_root) List; -+ $$= new (thd->mem_root) List; - 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)) - 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 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/0006-no-force-static-build.patch b/package/mysql/0006-no-force-static-build.patch deleted file mode 100644 index 8172a9848e..0000000000 --- a/package/mysql/0006-no-force-static-build.patch +++ /dev/null @@ -1,18 +0,0 @@ -configure: do not force a static link for non-installed programs - -Otherwise, it tries to link against a static libz, which may not exist -in a shared-only system. - -Signed-off-by: "Yann E. MORIN" - -diff -durN mysql-5.1.73.orig/configure.in mysql-5.1.73/configure.in ---- mysql-5.1.73.orig/configure.in 2014-12-22 00:04:46.550508208 +0100 -+++ mysql-5.1.73/configure.in 2014-12-22 00:05:56.415307480 +0100 -@@ -562,7 +562,6 @@ - AC_MSG_ERROR([MySQL requires an ANSI C compiler (and a C++ compiler). Try gcc. See the Installation chapter in the Reference Manual.]) - fi - --NOINST_LDFLAGS="-static" - - static_nss="" - STATIC_NSS_FLAGS="" diff --git a/package/mysql/0007-dont-install-in-mysql-directory.patch b/package/mysql/0007-dont-install-in-mysql-directory.patch deleted file mode 100644 index 971b9ceeb5..0000000000 --- a/package/mysql/0007-dont-install-in-mysql-directory.patch +++ /dev/null @@ -1,182 +0,0 @@ -Don't install in mysql directory - -Installing libraries in a subdirectory of /usr/lib leads to no end of -trouble. It requires either setting a RUN_PATH in the ELF files linked -with it or adding the path to ld.so.conf and calling ldconfig on the -target. - -So to simplify things, put everything in /usr/lib instead of -/usr/lib/mysql - -Signed-off-by: Arnout Vandecappelle (Essensium/Mind) - -diff -Nrup mysql-5.1.73.orig/dbug/Makefile.am mysql-5.1.73/dbug/Makefile.am ---- mysql-5.1.73.orig/dbug/Makefile.am 2013-11-04 19:52:27.000000000 +0100 -+++ mysql-5.1.73/dbug/Makefile.am 2015-12-14 00:34:58.567937603 +0100 -@@ -17,7 +17,7 @@ - - INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include - LDADD = libdbug.a ../mysys/libmysys.a ../strings/libmystrings.a --pkglib_LIBRARIES = libdbug.a -+lib_LIBRARIES = libdbug.a - noinst_HEADERS = dbug_long.h - libdbug_a_SOURCES = dbug.c sanity.c - EXTRA_DIST = CMakeLists.txt example1.c example2.c example3.c \ -diff -Nrup mysql-5.1.73.orig/libmysql/Makefile.shared mysql-5.1.73/libmysql/Makefile.shared ---- mysql-5.1.73.orig/libmysql/Makefile.shared 2013-11-04 19:52:27.000000000 +0100 -+++ mysql-5.1.73/libmysql/Makefile.shared 2015-12-14 00:34:58.567937603 +0100 -@@ -25,7 +25,7 @@ MYSQLBASEdir= $(prefix) - ## We'll use CLIENT_EXTRA_LDFLAGS for threaded and non-threaded - ## until someone complains that they need separate options. - LDADD = @CLIENT_EXTRA_LDFLAGS@ $(target) --pkglib_LTLIBRARIES = $(target) -+lib_LTLIBRARIES = $(target) - - noinst_PROGRAMS = conf_to_src - -diff -Nrup mysql-5.1.73.orig/libmysqld/Makefile.am mysql-5.1.73/libmysqld/Makefile.am ---- mysql-5.1.73.orig/libmysqld/Makefile.am 2013-11-04 19:52:27.000000000 +0100 -+++ mysql-5.1.73/libmysqld/Makefile.am 2015-12-14 00:34:58.567937603 +0100 -@@ -38,7 +38,7 @@ INCLUDES= -I$(top_builddir)/include -I$ - @condition_dependent_plugin_includes@ - - noinst_LIBRARIES = libmysqld_int.a --pkglib_LIBRARIES = libmysqld.a -+lib_LIBRARIES = libmysqld.a - SUBDIRS = . examples - libmysqld_sources= libmysqld.c lib_sql.cc emb_qcache.cc - libmysqlsources = errmsg.c get_password.c libmysql.c client.c pack.c \ -diff -Nrup mysql-5.1.73.orig/mysys/Makefile.am mysql-5.1.73/mysys/Makefile.am ---- mysql-5.1.73.orig/mysys/Makefile.am 2013-11-04 19:52:27.000000000 +0100 -+++ mysql-5.1.73/mysys/Makefile.am 2015-12-14 00:34:58.567937603 +0100 -@@ -18,7 +18,7 @@ MYSQLSHAREdir = $(pkgdatadir) - MYSQLBASEdir= $(prefix) - INCLUDES = @ZLIB_INCLUDES@ -I$(top_builddir)/include \ - -I$(top_srcdir)/include -I$(srcdir) --pkglib_LIBRARIES = libmysys.a -+lib_LIBRARIES = libmysys.a - LDADD = libmysys.a $(top_builddir)/strings/libmystrings.a $(top_builddir)/dbug/libdbug.a - noinst_HEADERS = mysys_priv.h my_static.h my_handler_errors.h - libmysys_a_SOURCES = my_init.c my_getwd.c mf_getdate.c my_mmap.c \ -diff -Nrup mysql-5.1.73.orig/storage/csv/Makefile.am mysql-5.1.73/storage/csv/Makefile.am ---- mysql-5.1.73.orig/storage/csv/Makefile.am 2013-11-04 19:52:27.000000000 +0100 -+++ mysql-5.1.73/storage/csv/Makefile.am 2015-12-14 00:34:58.563937596 +0100 -@@ -30,7 +30,7 @@ DEFS = @DEFS@ - noinst_HEADERS = ha_tina.h transparent_file.h - - EXTRA_LTLIBRARIES = ha_csv.la --pkglib_LTLIBRARIES = @plugin_csv_shared_target@ -+lib_LTLIBRARIES = @plugin_csv_shared_target@ - ha_csv_la_LDFLAGS = -module -rpath $(MYSQLLIBdir) - ha_csv_la_CXXFLAGS = $(AM_CXXFLAGS) -DMYSQL_PLUGIN - ha_csv_la_SOURCES = transparent_file.cc ha_tina.cc -diff -Nrup mysql-5.1.73.orig/storage/heap/Makefile.am mysql-5.1.73/storage/heap/Makefile.am ---- mysql-5.1.73.orig/storage/heap/Makefile.am 2013-11-04 19:52:27.000000000 +0100 -+++ mysql-5.1.73/storage/heap/Makefile.am 2015-12-14 00:34:58.563937596 +0100 -@@ -26,7 +26,7 @@ WRAPLIBS= - LDADD = - - DEFS = @DEFS@ --pkglib_LIBRARIES = libheap.a -+lib_LIBRARIES = libheap.a - noinst_PROGRAMS = hp_test1 hp_test2 - noinst_LIBRARIES = libheap.a - hp_test1_LDFLAGS = @NOINST_LDFLAGS@ -diff -Nrup mysql-5.1.73.orig/storage/myisam/Makefile.am mysql-5.1.73/storage/myisam/Makefile.am ---- mysql-5.1.73.orig/storage/myisam/Makefile.am 2013-11-04 19:52:27.000000000 +0100 -+++ mysql-5.1.73/storage/myisam/Makefile.am 2015-12-14 00:34:58.563937596 +0100 -@@ -30,7 +30,7 @@ DEFS = @DEFS@ - EXTRA_DIST = mi_test_all.sh mi_test_all.res ft_stem.c CMakeLists.txt plug.in - pkgdata_DATA = mi_test_all mi_test_all.res - --pkglib_LIBRARIES = libmyisam.a -+lib_LIBRARIES = libmyisam.a - bin_PROGRAMS = myisamchk myisamlog myisampack myisam_ftdump - myisamchk_DEPENDENCIES= $(LIBRARIES) - myisamchk_LDADD= @CLIENT_EXTRA_LDFLAGS@ libmyisam.a \ -diff -Nrup mysql-5.1.73.orig/storage/myisammrg/Makefile.am mysql-5.1.73/storage/myisammrg/Makefile.am ---- mysql-5.1.73.orig/storage/myisammrg/Makefile.am 2013-11-04 19:52:27.000000000 +0100 -+++ mysql-5.1.73/storage/myisammrg/Makefile.am 2015-12-14 00:34:58.563937596 +0100 -@@ -26,7 +26,7 @@ WRAPLIBS= - LDADD = - - DEFS = @DEFS@ --pkglib_LIBRARIES = libmyisammrg.a -+lib_LIBRARIES = libmyisammrg.a - noinst_HEADERS = myrg_def.h ha_myisammrg.h - noinst_LIBRARIES = libmyisammrg.a - libmyisammrg_a_SOURCES = myrg_open.c myrg_extra.c myrg_info.c myrg_locking.c \ -diff -Nrup mysql-5.1.73.orig/strings/Makefile.am mysql-5.1.73/strings/Makefile.am ---- mysql-5.1.73.orig/strings/Makefile.am 2013-11-04 19:52:27.000000000 +0100 -+++ mysql-5.1.73/strings/Makefile.am 2015-12-14 00:34:58.567937603 +0100 -@@ -16,7 +16,7 @@ - # This file is public domain and comes with NO WARRANTY of any kind - - INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include --pkglib_LIBRARIES = libmystrings.a -+lib_LIBRARIES = libmystrings.a - - # Exact one of ASSEMBLER_X - if ASSEMBLER_x86 -@@ -69,15 +69,15 @@ conf_to_src_LDFLAGS= @NOINST_LDFLAGS@ - - FLAGS=$(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) @NOINST_LDFLAGS@ - --str_test: str_test.c $(pkglib_LIBRARIES) -- $(LINK) $(FLAGS) -DMAIN $(INCLUDES) $(srcdir)/str_test.c $(LDADD) $(pkglib_LIBRARIES) -+str_test: str_test.c $(lib_LIBRARIES) -+ $(LINK) $(FLAGS) -DMAIN $(INCLUDES) $(srcdir)/str_test.c $(LDADD) $(lib_LIBRARIES) - - uctypedump: uctypedump.c - $(LINK) $(INCLUDES) $(srcdir)/uctypedump.c - --test_decimal$(EXEEXT): decimal.c $(pkglib_LIBRARIES) -+test_decimal$(EXEEXT): decimal.c $(lib_LIBRARIES) - $(CP) $(srcdir)/decimal.c ./test_decimal.c -- $(LINK) $(FLAGS) -DMAIN ./test_decimal.c $(LDADD) $(pkglib_LIBRARIES) -+ $(LINK) $(FLAGS) -DMAIN ./test_decimal.c $(LDADD) $(lib_LIBRARIES) - $(RM) -f ./test_decimal.c - - # Don't update the files from bitkeeper -diff -Nrup mysql-5.1.73.orig/tests/Makefile.am mysql-5.1.73/tests/Makefile.am ---- mysql-5.1.73.orig/tests/Makefile.am 2013-11-04 19:52:27.000000000 +0100 -+++ mysql-5.1.73/tests/Makefile.am 2015-12-14 00:34:58.567937603 +0100 -@@ -51,11 +51,11 @@ mysql_client_test.o: mysql_client_fw.c - - insert_test_SOURCES= insert_test.c - select_test_SOURCES= select_test.c --insert_test_DEPENDENCIES= $(LIBRARIES) $(pkglib_LTLIBRARIES) --select_test_DEPENDENCIES= $(LIBRARIES) $(pkglib_LTLIBRARIES) -+insert_test_DEPENDENCIES= $(LIBRARIES) $(lib_LTLIBRARIES) -+select_test_DEPENDENCIES= $(LIBRARIES) $(lib_LTLIBRARIES) - - bug25714_SOURCES= bug25714.c --bug25714_DEPENDENCIES= $(LIBRARIES) $(pkglib_LTLIBRARIES) -+bug25714_DEPENDENCIES= $(LIBRARIES) $(lib_LTLIBRARIES) - - # Fix for mit-threads - DEFS = -DMYSQL_CLIENT_NO_THREADS -diff -Nrup mysql-5.1.73.orig/vio/Makefile.am mysql-5.1.73/vio/Makefile.am ---- mysql-5.1.73.orig/vio/Makefile.am 2013-11-04 19:52:27.000000000 +0100 -+++ mysql-5.1.73/vio/Makefile.am 2015-12-14 00:34:58.567937603 +0100 -@@ -16,7 +16,7 @@ - INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ - $(openssl_includes) - LDADD = @CLIENT_EXTRA_LDFLAGS@ $(openssl_libs) $(yassl_libs) --pkglib_LIBRARIES = libvio.a -+lib_LIBRARIES = libvio.a - - noinst_HEADERS = vio_priv.h - -diff -Nrup mysql-5.1.73.orig/zlib/Makefile.am mysql-5.1.73/zlib/Makefile.am ---- mysql-5.1.73.orig/zlib/Makefile.am 2013-11-04 19:52:27.000000000 +0100 -+++ mysql-5.1.73/zlib/Makefile.am 2015-12-14 00:34:58.567937603 +0100 -@@ -19,7 +19,7 @@ INCLUDES= -I$(top_builddir)/include -I$ - - LIBS= $(NON_THREADED_LIBS) - --pkglib_LTLIBRARIES = libz.la -+lib_LTLIBRARIES = libz.la - noinst_LTLIBRARIES = libzlt.la - - libz_la_LDFLAGS = -static diff --git a/package/mysql/Config.in b/package/mysql/Config.in index 7e7d22450d..e485d6b99f 100644 --- a/package/mysql/Config.in +++ b/package/mysql/Config.in @@ -1,25 +1,83 @@ config BR2_PACKAGE_MYSQL - bool "MySQL" + bool "mysql support" + help + Select the desired mysql provider. + +if BR2_PACKAGE_MYSQL + +choice + prompt "mysql variant" + default BR2_PACKAGE_ORACLE_MYSQL + help + Select either the oracle mysql server or the mariadb server + +config BR2_PACKAGE_MARIADB + bool "mariadb" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS + select BR2_PACKAGE_LIBAIO + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_READLINE + select BR2_PACKAGE_HAS_MYSQL + help + MariaDB is one of the most popular database servers in the world. + It's made by the original developers of MySQL and guaranteed to + stay open source. + + http://www.mariadb.org/ + +config BR2_PACKAGE_ORACLE_MYSQL + bool "oracle mysql" depends on BR2_INSTALL_LIBSTDCPP depends on BR2_USE_MMU # fork() depends on BR2_TOOLCHAIN_HAS_THREADS - depends on !BR2_PACKAGE_MARIADB select BR2_PACKAGE_NCURSES select BR2_PACKAGE_READLINE + select BR2_PACKAGE_HAS_MYSQL help The MySQL Open Source Database System http://www.mysql.com/ -if BR2_PACKAGE_MYSQL +endchoice + +comment "mariadb needs a toolchain w/ C++, threads" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS + +comment "oracle mysql needs a toolchain w/ C++, threads" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS + +if BR2_PACKAGE_MARIADB + +config BR2_PACKAGE_MARIADB_SERVER + bool "mariadb server" + help + Install the mariadb server on the target. -config BR2_PACKAGE_MYSQL_SERVER - bool "MySQL server" +endif + +if BR2_PACKAGE_ORACLE_MYSQL + +config BR2_PACKAGE_ORACLE_MYSQL_SERVER + bool "oracle 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 +config BR2_PACKAGE_HAS_MYSQL + bool + +config BR2_PACKAGE_PROVIDES_MYSQL + string + default "mariadb" if BR2_PACKAGE_MARIADB + default "oracle-mysql" if BR2_PACKAGE_ORACLE_MYSQL + +endif diff --git a/package/mysql/S97mysqld b/package/mysql/S97mysqld deleted file mode 100644 index 110ca2cd12..0000000000 --- a/package/mysql/S97mysqld +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/sh - -MYSQL_DIR="/var/mysql" -MYSQL_USER="mysql" - -[ -r /etc/default/mysql ] && . /etc/default/mysql - -case "$1" in - start) - if [ ! -d $MYSQL_DIR/mysql ] ; then - echo "Creating MySQL system tables..." - mysql_install_db --user=$MYSQL_USER --ldata=$MYSQL_DIR - fi - - # mysqld runs as user mysql, but /run is only writable by root - # so create a subdirectory for mysql. - install -d -o mysql -g root -m 0755 /run/mysql - - # We don't use start-stop-daemon because mysqld has - # its own wrapper script. - printf "Starting mysql..." - /usr/bin/mysqld_safe --pid-file=/run/mysql/mysqld.pid & - echo "done." - ;; - stop) - printf "Stopping mysql..." - if test -f /run/mysql/mysqld.pid ; then - kill `cat /run/mysql/mysqld.pid` - fi - echo "done." - ;; - restart) - $0 stop - $0 start - ;; - *) - echo "Usage: /etc/init.d/mysqld {start|stop|restart}" - ;; -esac diff --git a/package/mysql/mysql.hash b/package/mysql/mysql.hash deleted file mode 100644 index bc309ec9a8..0000000000 --- a/package/mysql/mysql.hash +++ /dev/null @@ -1,4 +0,0 @@ -# From https://downloads.mariadb.com/archives/mysql-5.1/mysql-5.1.73.tar.gz.md5 -md5 887f869bcc757957067b9198f707f32f mysql-5.1.73.tar.gz -# Locally computed -sha256 05ebe21305408b24407d14b77607a3e5ffa3c300e03f1359d3066f301989dcb5 mysql-5.1.73.tar.gz diff --git a/package/mysql/mysql.mk b/package/mysql/mysql.mk index ea330f2515..d65562563d 100644 --- a/package/mysql/mysql.mk +++ b/package/mysql/mysql.mk @@ -4,132 +4,4 @@ # ################################################################################ -MYSQL_VERSION_MAJOR = 5.1 -MYSQL_VERSION = $(MYSQL_VERSION_MAJOR).73 -MYSQL_SOURCE = mysql-$(MYSQL_VERSION).tar.gz -MYSQL_SITE = http://dev.mysql.com/get/Downloads/MySQL-$(MYSQL_VERSION_MAJOR) -MYSQL_INSTALL_STAGING = YES -MYSQL_DEPENDENCIES = readline ncurses -MYSQL_AUTORECONF = YES -MYSQL_LICENSE = GPLv2 -MYSQL_LICENSE_FILES = README COPYING - -# Unix socket. This variable can also be consulted by other buildroot packages -MYSQL_SOCKET = /run/mysql/mysql.sock - -MYSQL_CONF_ENV = \ - ac_cv_sys_restartable_syscalls=yes \ - ac_cv_path_PS=/bin/ps \ - ac_cv_FIND_PROC="/bin/ps p \$\$PID | grep -v grep | grep mysqld > /dev/null" \ - ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_GCC=yes \ - ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS=no \ - ac_cv_have_decl_HAVE_IB_GCC_ATOMIC_BUILTINS=yes \ - mysql_cv_new_rl_interface=yes - -MYSQL_CONF_OPTS = \ - --without-ndb-binlog \ - --without-docs \ - --without-man \ - --without-libedit \ - --without-readline \ - --with-low-memory \ - --enable-thread-safe-client \ - --with-unix-socket-path=$(MYSQL_SOCKET) \ - --disable-mysql-maintainer-mode - -# host-mysql only installs what is needed to build mysql, i.e. the -# gen_lex_hash tool, and it only builds the parts that are needed to -# create this tool -HOST_MYSQL_DEPENDENCIES = host-zlib host-ncurses - -HOST_MYSQL_CONF_OPTS = \ - --with-embedded-server \ - --disable-mysql-maintainer-mode - -define HOST_MYSQL_BUILD_CMDS - $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/include my_config.h - $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/mysys libmysys.a - $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/strings libmystrings.a - $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/vio libvio.a - $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/dbug libdbug.a - $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/regex libregex.a - $(HOST_MAKE_ENV) $(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 - -ifeq ($(BR2_PACKAGE_OPENSSL),y) -MYSQL_DEPENDENCIES += openssl -endif - -ifeq ($(BR2_PACKAGE_ZLIB),y) -MYSQL_DEPENDENCIES += zlib -endif - -ifeq ($(BR2_PACKAGE_MYSQL_SERVER),y) -MYSQL_DEPENDENCIES += host-mysql host-bison - -MYSQL_CONF_OPTS += \ - --localstatedir=/var/mysql \ - --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 - -# 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_OPTS += --with-debug=full -else -MYSQL_CONF_OPTS += --without-debug -endif - -define MYSQL_USERS - mysql -1 nogroup -1 * /var/mysql - - MySQL daemon -endef - -define MYSQL_ADD_FOLDER - $(INSTALL) -d $(TARGET_DIR)/var/mysql -endef - -MYSQL_POST_INSTALL_TARGET_HOOKS += MYSQL_ADD_FOLDER - -define MYSQL_INSTALL_INIT_SYSV - $(INSTALL) -D -m 0755 package/mysql/S97mysqld \ - $(TARGET_DIR)/etc/init.d/S97mysqld -endef - -define MYSQL_INSTALL_INIT_SYSTEMD - $(INSTALL) -D -m 644 package/mysql/mysqld.service \ - $(TARGET_DIR)/usr/lib/systemd/system/mysqld.service - mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants - ln -sf ../../../../usr/lib/systemd/system/mysqld.service \ - $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/mysqld.service -endef - -else -MYSQL_CONF_OPTS += \ - --without-server -endif - - -define MYSQL_REMOVE_TEST_PROGS - rm -rf $(TARGET_DIR)/usr/mysql-test $(TARGET_DIR)/usr/sql-bench -endef - -MYSQL_POST_INSTALL_TARGET_HOOKS += MYSQL_REMOVE_TEST_PROGS - -$(eval $(autotools-package)) -$(eval $(host-autotools-package)) +$(eval $(virtual-package)) diff --git a/package/mysql/mysqld.service b/package/mysql/mysqld.service deleted file mode 100644 index c9e5e42f71..0000000000 --- a/package/mysql/mysqld.service +++ /dev/null @@ -1,13 +0,0 @@ -[Unit] -Description=MySQL database server - -[Service] -ExecStartPre=/bin/sh -c 'test -d /var/mysql/mysql || mysql_install_db --user=mysql --ldata=/var/mysql' -ExecStart=/usr/bin/mysqld_safe -Restart=always -User=mysql -RuntimeDirectory=mysql -RuntimeDirectoryMode=0755 - -[Install] -WantedBy=multi-user.target diff --git a/package/oracle-mysql/0000-ac_cache_check.patch b/package/oracle-mysql/0000-ac_cache_check.patch new file mode 100644 index 0000000000..c3b55ba8d3 --- /dev/null +++ b/package/oracle-mysql/0000-ac_cache_check.patch @@ -0,0 +1,156 @@ +Patch borrowed from +http://code.google.com/p/minimyth/source/browse/trunk/gar-minimyth/script/db/mysql/files/mysql-5.1.47-ac_cache_check.patch?r=6493. + +It allows to override through ac_cv_* variables various checks that +cannot be performed when cross-compiling. + +Signed-off-by: Thomas Petazzoni + +--- + storage/innodb_plugin/plug.in | 59 ++++++++++++++++++++++++++++-------------- + 1 file changed, 40 insertions(+), 19 deletions(-) + +Index: mysql-5.1.53/storage/innodb_plugin/plug.in +=================================================================== +--- mysql-5.1.53.orig/storage/innodb_plugin/plug.in ++++ mysql-5.1.53/storage/innodb_plugin/plug.in +@@ -53,9 +53,10 @@ + esac + AC_SUBST(INNODB_DYNAMIC_CFLAGS) + +- AC_MSG_CHECKING(whether GCC atomic builtins are available) ++ AC_CACHE_CHECK([whether GCC atomic builtins are available], ++ [ac_cv_have_decl_HAVE_IB_GCC_ATOMIC_BUILTINS], + # either define HAVE_IB_GCC_ATOMIC_BUILTINS or not +- AC_TRY_RUN( ++ [AC_TRY_RUN( + [ + int main() + { +@@ -95,18 +96,23 @@ + } + ], + [ +- AC_DEFINE([HAVE_IB_GCC_ATOMIC_BUILTINS], [1], +- [GCC atomic builtins are available]) + AC_MSG_RESULT(yes) ++ ac_cv_have_decl_HAVE_IB_GCC_ATOMIC_BUILTINS=yes + ], + [ + AC_MSG_RESULT(no) ++ ac_cv_have_decl_HAVE_IB_GCC_ATOMIC_BUILTINS=no + ] +- ) ++ )]) ++ if test "x$ac_cv_have_decl_HAVE_IB_GCC_ATOMIC_BUILTINS"= "xyes" ; then ++ AC_DEFINE([HAVE_IB_GCC_ATOMIC_BUILTINS], [1], ++ [GCC atomic builtins are available]) ++ fi + +- AC_MSG_CHECKING(whether pthread_t can be used by GCC atomic builtins) ++ AC_CACHE_CHECK([whether pthread_t can be used by GCC atomic builtins], ++ [ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_GCC], + # either define HAVE_IB_ATOMIC_PTHREAD_T_GCC or not +- AC_TRY_RUN( ++ [AC_TRY_RUN( + [ + #include + #include +@@ -126,14 +132,18 @@ + } + ], + [ +- AC_DEFINE([HAVE_IB_ATOMIC_PTHREAD_T_GCC], [1], +- [pthread_t can be used by GCC atomic builtins]) + AC_MSG_RESULT(yes) ++ ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_GCC=yes + ], + [ + AC_MSG_RESULT(no) ++ ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_GCC=no + ] +- ) ++ )]) ++ if test "x$ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_GCC"= "xyes" ; then ++ AC_DEFINE([HAVE_IB_ATOMIC_PTHREAD_T_GCC], [1], ++ [pthread_t can be used by GCC atomic builtins]) ++ fi + + AC_MSG_CHECKING(whether Solaris libc atomic functions are available) + # either define HAVE_IB_SOLARIS_ATOMICS or not +@@ -148,9 +158,10 @@ + are available]) + ) + +- AC_MSG_CHECKING(whether pthread_t can be used by Solaris libc atomic functions) ++ AC_CACHE_CHECK([whether pthread_t can be used by Solaris libc atomic functions], ++ [ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS], + # either define HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS or not +- AC_TRY_RUN( ++ [AC_TRY_RUN( + [ + #include + #include +@@ -181,28 +192,33 @@ + } + ], + [ +- AC_DEFINE([HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS], [1], +- [pthread_t can be used by solaris atomics]) + AC_MSG_RESULT(yes) ++ ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS=yes + ], + [ + AC_MSG_RESULT(no) ++ ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS=no + ] +- ) ++ )]) ++ if test "x$ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS"= "xyes" ; then ++ AC_DEFINE([HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS], [1], ++ [pthread_t can be used by solaris atomics]) ++ fi + + # this is needed to know which one of atomic_cas_32() or atomic_cas_64() + # to use in the source + AC_CHECK_SIZEOF([pthread_t], [], [#include ]) + + # Check for x86 PAUSE instruction +- AC_MSG_CHECKING(for x86 PAUSE instruction) ++ AC_CACHE_CHECK([for x86 PAUSE instruction], ++ [ac_cv_have_decl_HAVE_IB_PAUSE_INSTRUCTION], + # We have to actually try running the test program, because of a bug + # in Solaris on x86_64, where it wrongly reports that PAUSE is not + # supported when trying to run an application. See + # http://bugs.opensolaris.org/bugdatabase/printableBug.do?bug_id=6478684 + # We use ib_ prefix to avoid collisoins if this code is added to + # mysql's configure.in. +- AC_TRY_RUN( ++ [AC_TRY_RUN( + [ + int main() { + __asm__ __volatile__ ("pause"); +@@ -210,16 +226,21 @@ + } + ], + [ +- AC_DEFINE([HAVE_IB_PAUSE_INSTRUCTION], [1], [Does x86 PAUSE instruction exist]) + AC_MSG_RESULT(yes) ++ ac_cv_have_decl_HAVE_IB_PAUSE_INSTRUCTION=yes + ], + [ + AC_MSG_RESULT(no) ++ ac_cv_have_decl_HAVE_IB_PAUSE_INSTRUCTION=no + ], + [ + AC_MSG_RESULT(no) ++ ac_cv_have_decl_HAVE_IB_PAUSE_INSTRUCTION=no + ] +- ) ++ )]) ++ if test "x$ac_cv_have_decl_HAVE_IB_PAUSE_INSTRUCTION"= "xyes" ; then ++ AC_DEFINE([HAVE_IB_PAUSE_INSTRUCTION], [1], [Does x86 PAUSE instruction exist]) ++ fi + ]) + + # vim: set ft=config: diff --git a/package/oracle-mysql/0001-configure-ps-cache-check.patch b/package/oracle-mysql/0001-configure-ps-cache-check.patch new file mode 100644 index 0000000000..336e80e0b7 --- /dev/null +++ b/package/oracle-mysql/0001-configure-ps-cache-check.patch @@ -0,0 +1,39 @@ +Patch borrowed from +http://cgit.openembedded.org/cgit.cgi/openembedded/tree/recipes/mysql/files/configure-ps-cache-check.patch + +It allows to specify through ac_cv_FIND_PROC how ps should be used on +the target to find the PID of a program. + +Signed-off-by: Thomas Petazzoni + +--- + configure.in | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +Index: mysql-5.1.53/configure.in +=================================================================== +--- mysql-5.1.53.orig/configure.in ++++ mysql-5.1.53/configure.in +@@ -462,8 +462,8 @@ + # then Make, then shell. The autoconf substitution uses single quotes, so + # no unprotected single quotes should appear in the expression. + AC_PATH_PROG(PS, ps, ps) +-AC_MSG_CHECKING("how to check if pid exists") +-PS=$ac_cv_path_PS ++AC_CACHE_CHECK([how to check if pid exists], [ac_cv_FIND_PROC], ++[ + # Linux style + if $PS wwwp $$ 2> /dev/null | grep -- "$0" > /dev/null + then +@@ -502,8 +502,9 @@ + AC_MSG_ERROR([Could not find the right ps and/or grep switches. Which OS is this? See the Installation chapter in the Reference Manual.]) + esac + fi +-AC_SUBST(FIND_PROC) +-AC_MSG_RESULT("$FIND_PROC") ++ac_cv_FIND_PROC="$FIND_PROC" ++]) ++AC_SUBST([FIND_PROC], [$ac_cv_FIND_PROC]) + + # Check if a pid is valid + AC_PATH_PROG(KILL, kill, kill) diff --git a/package/oracle-mysql/0002-use-new-readline-iface.patch b/package/oracle-mysql/0002-use-new-readline-iface.patch new file mode 100644 index 0000000000..c5906563ce --- /dev/null +++ b/package/oracle-mysql/0002-use-new-readline-iface.patch @@ -0,0 +1,21 @@ +Tell MySQL to use the new readline interface even when an external +readline is being used. + +Signed-off-by: Thomas Petazzoni + +--- + configure.in | 1 + + 1 file changed, 1 insertion(+) + +Index: mysql-5.1.53/configure.in +=================================================================== +--- mysql-5.1.53.orig/configure.in ++++ mysql-5.1.53/configure.in +@@ -2689,6 +2689,7 @@ + # this way we avoid linking commercial source with GPL readline + readline_link="-lreadline" + want_to_use_readline="yes" ++ AC_DEFINE_UNQUOTED(USE_NEW_READLINE_INTERFACE, 1) + elif [test "$mysql_cv_libedit_interface" = "yes"] + then + # Use libedit diff --git a/package/oracle-mysql/0003-ac_stack_direction-is-unset.patch b/package/oracle-mysql/0003-ac_stack_direction-is-unset.patch new file mode 100644 index 0000000000..6fef0a9acf --- /dev/null +++ b/package/oracle-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) + +--- 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/oracle-mysql/0004-Fix-gen_lex_hash-execution.patch b/package/oracle-mysql/0004-Fix-gen_lex_hash-execution.patch new file mode 100644 index 0000000000..b91ed4fef9 --- /dev/null +++ b/package/oracle-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) + +--- 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/oracle-mysql/0005-bison_3_breaks_mysql_server_build.patch b/package/oracle-mysql/0005-bison_3_breaks_mysql_server_build.patch new file mode 100644 index 0000000000..918fe2456a --- /dev/null +++ b/package/oracle-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) +--- +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 *list= new (thd->mem_root) List; + 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; ++ $$= new (thd->mem_root) List; + 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; ++ $$= new (thd->mem_root) List; + if ($$ == NULL) + MYSQL_YYABORT; + $$->push_back($1); +@@ -8497,7 +8465,7 @@ + ident_list: + simple_ident + { +- $$= new (YYTHD->mem_root) List; ++ $$= new (thd->mem_root) List; + 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)) + 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 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/oracle-mysql/0006-no-force-static-build.patch b/package/oracle-mysql/0006-no-force-static-build.patch new file mode 100644 index 0000000000..8172a9848e --- /dev/null +++ b/package/oracle-mysql/0006-no-force-static-build.patch @@ -0,0 +1,18 @@ +configure: do not force a static link for non-installed programs + +Otherwise, it tries to link against a static libz, which may not exist +in a shared-only system. + +Signed-off-by: "Yann E. MORIN" + +diff -durN mysql-5.1.73.orig/configure.in mysql-5.1.73/configure.in +--- mysql-5.1.73.orig/configure.in 2014-12-22 00:04:46.550508208 +0100 ++++ mysql-5.1.73/configure.in 2014-12-22 00:05:56.415307480 +0100 +@@ -562,7 +562,6 @@ + AC_MSG_ERROR([MySQL requires an ANSI C compiler (and a C++ compiler). Try gcc. See the Installation chapter in the Reference Manual.]) + fi + +-NOINST_LDFLAGS="-static" + + static_nss="" + STATIC_NSS_FLAGS="" diff --git a/package/oracle-mysql/0007-dont-install-in-mysql-directory.patch b/package/oracle-mysql/0007-dont-install-in-mysql-directory.patch new file mode 100644 index 0000000000..971b9ceeb5 --- /dev/null +++ b/package/oracle-mysql/0007-dont-install-in-mysql-directory.patch @@ -0,0 +1,182 @@ +Don't install in mysql directory + +Installing libraries in a subdirectory of /usr/lib leads to no end of +trouble. It requires either setting a RUN_PATH in the ELF files linked +with it or adding the path to ld.so.conf and calling ldconfig on the +target. + +So to simplify things, put everything in /usr/lib instead of +/usr/lib/mysql + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) + +diff -Nrup mysql-5.1.73.orig/dbug/Makefile.am mysql-5.1.73/dbug/Makefile.am +--- mysql-5.1.73.orig/dbug/Makefile.am 2013-11-04 19:52:27.000000000 +0100 ++++ mysql-5.1.73/dbug/Makefile.am 2015-12-14 00:34:58.567937603 +0100 +@@ -17,7 +17,7 @@ + + INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include + LDADD = libdbug.a ../mysys/libmysys.a ../strings/libmystrings.a +-pkglib_LIBRARIES = libdbug.a ++lib_LIBRARIES = libdbug.a + noinst_HEADERS = dbug_long.h + libdbug_a_SOURCES = dbug.c sanity.c + EXTRA_DIST = CMakeLists.txt example1.c example2.c example3.c \ +diff -Nrup mysql-5.1.73.orig/libmysql/Makefile.shared mysql-5.1.73/libmysql/Makefile.shared +--- mysql-5.1.73.orig/libmysql/Makefile.shared 2013-11-04 19:52:27.000000000 +0100 ++++ mysql-5.1.73/libmysql/Makefile.shared 2015-12-14 00:34:58.567937603 +0100 +@@ -25,7 +25,7 @@ MYSQLBASEdir= $(prefix) + ## We'll use CLIENT_EXTRA_LDFLAGS for threaded and non-threaded + ## until someone complains that they need separate options. + LDADD = @CLIENT_EXTRA_LDFLAGS@ $(target) +-pkglib_LTLIBRARIES = $(target) ++lib_LTLIBRARIES = $(target) + + noinst_PROGRAMS = conf_to_src + +diff -Nrup mysql-5.1.73.orig/libmysqld/Makefile.am mysql-5.1.73/libmysqld/Makefile.am +--- mysql-5.1.73.orig/libmysqld/Makefile.am 2013-11-04 19:52:27.000000000 +0100 ++++ mysql-5.1.73/libmysqld/Makefile.am 2015-12-14 00:34:58.567937603 +0100 +@@ -38,7 +38,7 @@ INCLUDES= -I$(top_builddir)/include -I$ + @condition_dependent_plugin_includes@ + + noinst_LIBRARIES = libmysqld_int.a +-pkglib_LIBRARIES = libmysqld.a ++lib_LIBRARIES = libmysqld.a + SUBDIRS = . examples + libmysqld_sources= libmysqld.c lib_sql.cc emb_qcache.cc + libmysqlsources = errmsg.c get_password.c libmysql.c client.c pack.c \ +diff -Nrup mysql-5.1.73.orig/mysys/Makefile.am mysql-5.1.73/mysys/Makefile.am +--- mysql-5.1.73.orig/mysys/Makefile.am 2013-11-04 19:52:27.000000000 +0100 ++++ mysql-5.1.73/mysys/Makefile.am 2015-12-14 00:34:58.567937603 +0100 +@@ -18,7 +18,7 @@ MYSQLSHAREdir = $(pkgdatadir) + MYSQLBASEdir= $(prefix) + INCLUDES = @ZLIB_INCLUDES@ -I$(top_builddir)/include \ + -I$(top_srcdir)/include -I$(srcdir) +-pkglib_LIBRARIES = libmysys.a ++lib_LIBRARIES = libmysys.a + LDADD = libmysys.a $(top_builddir)/strings/libmystrings.a $(top_builddir)/dbug/libdbug.a + noinst_HEADERS = mysys_priv.h my_static.h my_handler_errors.h + libmysys_a_SOURCES = my_init.c my_getwd.c mf_getdate.c my_mmap.c \ +diff -Nrup mysql-5.1.73.orig/storage/csv/Makefile.am mysql-5.1.73/storage/csv/Makefile.am +--- mysql-5.1.73.orig/storage/csv/Makefile.am 2013-11-04 19:52:27.000000000 +0100 ++++ mysql-5.1.73/storage/csv/Makefile.am 2015-12-14 00:34:58.563937596 +0100 +@@ -30,7 +30,7 @@ DEFS = @DEFS@ + noinst_HEADERS = ha_tina.h transparent_file.h + + EXTRA_LTLIBRARIES = ha_csv.la +-pkglib_LTLIBRARIES = @plugin_csv_shared_target@ ++lib_LTLIBRARIES = @plugin_csv_shared_target@ + ha_csv_la_LDFLAGS = -module -rpath $(MYSQLLIBdir) + ha_csv_la_CXXFLAGS = $(AM_CXXFLAGS) -DMYSQL_PLUGIN + ha_csv_la_SOURCES = transparent_file.cc ha_tina.cc +diff -Nrup mysql-5.1.73.orig/storage/heap/Makefile.am mysql-5.1.73/storage/heap/Makefile.am +--- mysql-5.1.73.orig/storage/heap/Makefile.am 2013-11-04 19:52:27.000000000 +0100 ++++ mysql-5.1.73/storage/heap/Makefile.am 2015-12-14 00:34:58.563937596 +0100 +@@ -26,7 +26,7 @@ WRAPLIBS= + LDADD = + + DEFS = @DEFS@ +-pkglib_LIBRARIES = libheap.a ++lib_LIBRARIES = libheap.a + noinst_PROGRAMS = hp_test1 hp_test2 + noinst_LIBRARIES = libheap.a + hp_test1_LDFLAGS = @NOINST_LDFLAGS@ +diff -Nrup mysql-5.1.73.orig/storage/myisam/Makefile.am mysql-5.1.73/storage/myisam/Makefile.am +--- mysql-5.1.73.orig/storage/myisam/Makefile.am 2013-11-04 19:52:27.000000000 +0100 ++++ mysql-5.1.73/storage/myisam/Makefile.am 2015-12-14 00:34:58.563937596 +0100 +@@ -30,7 +30,7 @@ DEFS = @DEFS@ + EXTRA_DIST = mi_test_all.sh mi_test_all.res ft_stem.c CMakeLists.txt plug.in + pkgdata_DATA = mi_test_all mi_test_all.res + +-pkglib_LIBRARIES = libmyisam.a ++lib_LIBRARIES = libmyisam.a + bin_PROGRAMS = myisamchk myisamlog myisampack myisam_ftdump + myisamchk_DEPENDENCIES= $(LIBRARIES) + myisamchk_LDADD= @CLIENT_EXTRA_LDFLAGS@ libmyisam.a \ +diff -Nrup mysql-5.1.73.orig/storage/myisammrg/Makefile.am mysql-5.1.73/storage/myisammrg/Makefile.am +--- mysql-5.1.73.orig/storage/myisammrg/Makefile.am 2013-11-04 19:52:27.000000000 +0100 ++++ mysql-5.1.73/storage/myisammrg/Makefile.am 2015-12-14 00:34:58.563937596 +0100 +@@ -26,7 +26,7 @@ WRAPLIBS= + LDADD = + + DEFS = @DEFS@ +-pkglib_LIBRARIES = libmyisammrg.a ++lib_LIBRARIES = libmyisammrg.a + noinst_HEADERS = myrg_def.h ha_myisammrg.h + noinst_LIBRARIES = libmyisammrg.a + libmyisammrg_a_SOURCES = myrg_open.c myrg_extra.c myrg_info.c myrg_locking.c \ +diff -Nrup mysql-5.1.73.orig/strings/Makefile.am mysql-5.1.73/strings/Makefile.am +--- mysql-5.1.73.orig/strings/Makefile.am 2013-11-04 19:52:27.000000000 +0100 ++++ mysql-5.1.73/strings/Makefile.am 2015-12-14 00:34:58.567937603 +0100 +@@ -16,7 +16,7 @@ + # This file is public domain and comes with NO WARRANTY of any kind + + INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include +-pkglib_LIBRARIES = libmystrings.a ++lib_LIBRARIES = libmystrings.a + + # Exact one of ASSEMBLER_X + if ASSEMBLER_x86 +@@ -69,15 +69,15 @@ conf_to_src_LDFLAGS= @NOINST_LDFLAGS@ + + FLAGS=$(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) @NOINST_LDFLAGS@ + +-str_test: str_test.c $(pkglib_LIBRARIES) +- $(LINK) $(FLAGS) -DMAIN $(INCLUDES) $(srcdir)/str_test.c $(LDADD) $(pkglib_LIBRARIES) ++str_test: str_test.c $(lib_LIBRARIES) ++ $(LINK) $(FLAGS) -DMAIN $(INCLUDES) $(srcdir)/str_test.c $(LDADD) $(lib_LIBRARIES) + + uctypedump: uctypedump.c + $(LINK) $(INCLUDES) $(srcdir)/uctypedump.c + +-test_decimal$(EXEEXT): decimal.c $(pkglib_LIBRARIES) ++test_decimal$(EXEEXT): decimal.c $(lib_LIBRARIES) + $(CP) $(srcdir)/decimal.c ./test_decimal.c +- $(LINK) $(FLAGS) -DMAIN ./test_decimal.c $(LDADD) $(pkglib_LIBRARIES) ++ $(LINK) $(FLAGS) -DMAIN ./test_decimal.c $(LDADD) $(lib_LIBRARIES) + $(RM) -f ./test_decimal.c + + # Don't update the files from bitkeeper +diff -Nrup mysql-5.1.73.orig/tests/Makefile.am mysql-5.1.73/tests/Makefile.am +--- mysql-5.1.73.orig/tests/Makefile.am 2013-11-04 19:52:27.000000000 +0100 ++++ mysql-5.1.73/tests/Makefile.am 2015-12-14 00:34:58.567937603 +0100 +@@ -51,11 +51,11 @@ mysql_client_test.o: mysql_client_fw.c + + insert_test_SOURCES= insert_test.c + select_test_SOURCES= select_test.c +-insert_test_DEPENDENCIES= $(LIBRARIES) $(pkglib_LTLIBRARIES) +-select_test_DEPENDENCIES= $(LIBRARIES) $(pkglib_LTLIBRARIES) ++insert_test_DEPENDENCIES= $(LIBRARIES) $(lib_LTLIBRARIES) ++select_test_DEPENDENCIES= $(LIBRARIES) $(lib_LTLIBRARIES) + + bug25714_SOURCES= bug25714.c +-bug25714_DEPENDENCIES= $(LIBRARIES) $(pkglib_LTLIBRARIES) ++bug25714_DEPENDENCIES= $(LIBRARIES) $(lib_LTLIBRARIES) + + # Fix for mit-threads + DEFS = -DMYSQL_CLIENT_NO_THREADS +diff -Nrup mysql-5.1.73.orig/vio/Makefile.am mysql-5.1.73/vio/Makefile.am +--- mysql-5.1.73.orig/vio/Makefile.am 2013-11-04 19:52:27.000000000 +0100 ++++ mysql-5.1.73/vio/Makefile.am 2015-12-14 00:34:58.567937603 +0100 +@@ -16,7 +16,7 @@ + INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ + $(openssl_includes) + LDADD = @CLIENT_EXTRA_LDFLAGS@ $(openssl_libs) $(yassl_libs) +-pkglib_LIBRARIES = libvio.a ++lib_LIBRARIES = libvio.a + + noinst_HEADERS = vio_priv.h + +diff -Nrup mysql-5.1.73.orig/zlib/Makefile.am mysql-5.1.73/zlib/Makefile.am +--- mysql-5.1.73.orig/zlib/Makefile.am 2013-11-04 19:52:27.000000000 +0100 ++++ mysql-5.1.73/zlib/Makefile.am 2015-12-14 00:34:58.567937603 +0100 +@@ -19,7 +19,7 @@ INCLUDES= -I$(top_builddir)/include -I$ + + LIBS= $(NON_THREADED_LIBS) + +-pkglib_LTLIBRARIES = libz.la ++lib_LTLIBRARIES = libz.la + noinst_LTLIBRARIES = libzlt.la + + libz_la_LDFLAGS = -static diff --git a/package/oracle-mysql/S97mysqld b/package/oracle-mysql/S97mysqld new file mode 100644 index 0000000000..110ca2cd12 --- /dev/null +++ b/package/oracle-mysql/S97mysqld @@ -0,0 +1,39 @@ +#!/bin/sh + +MYSQL_DIR="/var/mysql" +MYSQL_USER="mysql" + +[ -r /etc/default/mysql ] && . /etc/default/mysql + +case "$1" in + start) + if [ ! -d $MYSQL_DIR/mysql ] ; then + echo "Creating MySQL system tables..." + mysql_install_db --user=$MYSQL_USER --ldata=$MYSQL_DIR + fi + + # mysqld runs as user mysql, but /run is only writable by root + # so create a subdirectory for mysql. + install -d -o mysql -g root -m 0755 /run/mysql + + # We don't use start-stop-daemon because mysqld has + # its own wrapper script. + printf "Starting mysql..." + /usr/bin/mysqld_safe --pid-file=/run/mysql/mysqld.pid & + echo "done." + ;; + stop) + printf "Stopping mysql..." + if test -f /run/mysql/mysqld.pid ; then + kill `cat /run/mysql/mysqld.pid` + fi + echo "done." + ;; + restart) + $0 stop + $0 start + ;; + *) + echo "Usage: /etc/init.d/mysqld {start|stop|restart}" + ;; +esac diff --git a/package/oracle-mysql/mysqld.service b/package/oracle-mysql/mysqld.service new file mode 100644 index 0000000000..c9e5e42f71 --- /dev/null +++ b/package/oracle-mysql/mysqld.service @@ -0,0 +1,13 @@ +[Unit] +Description=MySQL database server + +[Service] +ExecStartPre=/bin/sh -c 'test -d /var/mysql/mysql || mysql_install_db --user=mysql --ldata=/var/mysql' +ExecStart=/usr/bin/mysqld_safe +Restart=always +User=mysql +RuntimeDirectory=mysql +RuntimeDirectoryMode=0755 + +[Install] +WantedBy=multi-user.target diff --git a/package/oracle-mysql/oracle-mysql.hash b/package/oracle-mysql/oracle-mysql.hash new file mode 100644 index 0000000000..bc309ec9a8 --- /dev/null +++ b/package/oracle-mysql/oracle-mysql.hash @@ -0,0 +1,4 @@ +# From https://downloads.mariadb.com/archives/mysql-5.1/mysql-5.1.73.tar.gz.md5 +md5 887f869bcc757957067b9198f707f32f mysql-5.1.73.tar.gz +# Locally computed +sha256 05ebe21305408b24407d14b77607a3e5ffa3c300e03f1359d3066f301989dcb5 mysql-5.1.73.tar.gz diff --git a/package/oracle-mysql/oracle-mysql.mk b/package/oracle-mysql/oracle-mysql.mk new file mode 100644 index 0000000000..ed3c0ea983 --- /dev/null +++ b/package/oracle-mysql/oracle-mysql.mk @@ -0,0 +1,136 @@ +################################################################################ +# +# oracle-mysql +# +################################################################################ + +ORACLE_MYSQL_VERSION_MAJOR = 5.1 +ORACLE_MYSQL_VERSION = $(ORACLE_MYSQL_VERSION_MAJOR).73 +ORACLE_MYSQL_SOURCE = mysql-$(ORACLE_MYSQL_VERSION).tar.gz +ORACLE_MYSQL_SITE = http://dev.mysql.com/get/Downloads/MySQL-$(ORACLE_MYSQL_VERSION_MAJOR) +ORACLE_MYSQL_INSTALL_STAGING = YES +ORACLE_MYSQL_DEPENDENCIES = readline ncurses +ORACLE_MYSQL_AUTORECONF = YES +ORACLE_MYSQL_LICENSE = GPLv2 +ORACLE_MYSQL_LICENSE_FILES = README COPYING +ORACLE_MYSQL_PROVIDES = mysql + +# Unix socket. This variable can also be consulted by other buildroot packages +MYSQL_SOCKET = /run/mysql/mysql.sock + +ORACLE_MYSQL_CONF_ENV = \ + ac_cv_sys_restartable_syscalls=yes \ + ac_cv_path_PS=/bin/ps \ + ac_cv_FIND_PROC="/bin/ps p \$\$PID | grep -v grep | grep mysqld > /dev/null" \ + ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_GCC=yes \ + ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS=no \ + ac_cv_have_decl_HAVE_IB_GCC_ATOMIC_BUILTINS=yes \ + mysql_cv_new_rl_interface=yes + +ORACLE_MYSQL_CONF_OPTS = \ + --without-ndb-binlog \ + --without-docs \ + --without-man \ + --without-libedit \ + --without-readline \ + --with-low-memory \ + --enable-thread-safe-client \ + --with-unix-socket-path=$(MYSQL_SOCKET) \ + --disable-mysql-maintainer-mode + +# host-oracle-mysql only installs what is needed to build mysql, i.e. the +# gen_lex_hash tool, and it only builds the parts that are needed to +# create this tool +HOST_ORACLE_MYSQL_DEPENDENCIES = host-zlib host-ncurses + +HOST_ORACLE_MYSQL_CONF_OPTS = \ + --with-embedded-server \ + --disable-mysql-maintainer-mode + +define HOST_ORACLE_MYSQL_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/include my_config.h + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/mysys libmysys.a + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/strings libmystrings.a + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/vio libvio.a + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/dbug libdbug.a + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/regex libregex.a + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/sql gen_lex_hash +endef + +define HOST_ORACLE_MYSQL_INSTALL_CMDS + $(INSTALL) -m 0755 $(@D)/sql/gen_lex_hash $(HOST_DIR)/usr/bin/ +endef + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +ORACLE_MYSQL_DEPENDENCIES += openssl +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +ORACLE_MYSQL_DEPENDENCIES += zlib +endif + +ifeq ($(BR2_PACKAGE_ORACLE_MYSQL_SERVER),y) +ORACLE_MYSQL_DEPENDENCIES += host-oracle-mysql host-bison + +ORACLE_MYSQL_CONF_OPTS += \ + --localstatedir=/var/mysql \ + --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 + +# 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) +ORACLE_MYSQL_CONF_OPTS += --with-debug=full +else +ORACLE_MYSQL_CONF_OPTS += --without-debug +endif + +define ORACLE_MYSQL_USERS + mysql -1 nogroup -1 * /var/mysql - - MySQL daemon +endef + +define ORACLE_MYSQL_ADD_FOLDER + $(INSTALL) -d $(TARGET_DIR)/var/mysql +endef + +ORACLE_MYSQL_POST_INSTALL_TARGET_HOOKS += ORACLE_MYSQL_ADD_FOLDER + +define ORACLE_MYSQL_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/oracle-mysql/S97mysqld \ + $(TARGET_DIR)/etc/init.d/S97mysqld +endef + +define ORACLE_MYSQL_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/mysql/mysqld.service \ + $(TARGET_DIR)/usr/lib/systemd/system/mysqld.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/mysqld.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/mysqld.service +endef + +else +ORACLE_MYSQL_CONF_OPTS += \ + --without-server +endif + + +define ORACLE_MYSQL_REMOVE_TEST_PROGS + rm -rf $(TARGET_DIR)/usr/mysql-test $(TARGET_DIR)/usr/sql-bench +endef + +ORACLE_MYSQL_POST_INSTALL_TARGET_HOOKS += ORACLE_MYSQL_REMOVE_TEST_PROGS + +$(eval $(autotools-package)) +$(eval $(host-autotools-package))