[Buildroot] [PATCH 1/1] [RFC] mysql: replace mysql with mariadb 10.0

Ryan Coe bluemrp9 at gmail.com
Mon Sep 12 22:05:51 UTC 2016


Replaces the old mysql 5.1 with mariadb 10.0. The package was not renamed
as mariadb is a drop-in replacement for mysql.

Based on the work by Sylvain Raybaud <sylvain.raybaud at green-communications.fr>

https://patchwork.ozlabs.org/patch/538045/

Signed-off-by: Ryan Coe <bluemrp9 at gmail.com>
---
 package/Config.in                                  |    2 +-
 package/mysql/0000-ac_cache_check.patch            |  156 -
 package/mysql/0001-configure-ps-cache-check.patch  |   39 -
 package/mysql/0001-fix_xtradb_cmakelist.patch      |   38 +
 package/mysql/0002-use-new-readline-iface.patch    |   21 -
 .../mysql/0003-ac_stack_direction-is-unset.patch   |   15 -
 .../mysql/0004-Fix-gen_lex_hash-execution.patch    |   32 -
 .../0005-bison_3_breaks_mysql_server_build.patch   | 3310 --------------------
 package/mysql/0006-no-force-static-build.patch     |   18 -
 .../0007-dont-install-in-mysql-directory.patch     |  182 --
 package/mysql/Config.in                            |   17 +-
 package/mysql/S97mysqld                            |  102 +-
 package/mysql/my.cnf                               |  179 ++
 package/mysql/mysql.hash                           |    4 +-
 package/mysql/mysql.mk                             |  183 +-
 package/mysql/mysqld.service                       |    4 +-
 16 files changed, 392 insertions(+), 3910 deletions(-)
 delete mode 100644 package/mysql/0000-ac_cache_check.patch
 delete mode 100644 package/mysql/0001-configure-ps-cache-check.patch
 create mode 100644 package/mysql/0001-fix_xtradb_cmakelist.patch
 delete mode 100644 package/mysql/0002-use-new-readline-iface.patch
 delete mode 100644 package/mysql/0003-ac_stack_direction-is-unset.patch
 delete mode 100644 package/mysql/0004-Fix-gen_lex_hash-execution.patch
 delete mode 100644 package/mysql/0005-bison_3_breaks_mysql_server_build.patch
 delete mode 100644 package/mysql/0006-no-force-static-build.patch
 delete mode 100644 package/mysql/0007-dont-install-in-mysql-directory.patch
 create mode 100644 package/mysql/my.cnf

diff --git a/package/Config.in b/package/Config.in
index 332f05d..9fca1f6 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -902,8 +902,8 @@ menu "Database"
 	source "package/kompexsqlite/Config.in"
 	source "package/leveldb/Config.in"
 	source "package/libpqxx/Config.in"
-	source "package/mongodb/Config.in"
 	source "package/mysql/Config.in"
+	source "package/mongodb/Config.in"
 	source "package/postgresql/Config.in"
 	source "package/redis/Config.in"
 	source "package/sqlcipher/Config.in"
diff --git a/package/mysql/0000-ac_cache_check.patch b/package/mysql/0000-ac_cache_check.patch
deleted file mode 100644
index c3b55ba..0000000
--- 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 <thomas.petazzoni at free-electrons.com>
-
----
- 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 <pthread.h>
-       #include <string.h>
-@@ -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 <pthread.h>
-       #include <string.h>
-@@ -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 <pthread.h>])
- 
-   # 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 336e80e..0000000
--- 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 <thomas.petazzoni at free-electrons.com>
-
----
- 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/0001-fix_xtradb_cmakelist.patch b/package/mysql/0001-fix_xtradb_cmakelist.patch
new file mode 100644
index 0000000..cc76729
--- /dev/null
+++ b/package/mysql/0001-fix_xtradb_cmakelist.patch
@@ -0,0 +1,38 @@
+From 165a75988181c92499df74d94250a89331c24654 Mon Sep 17 00:00:00 2001
+From: Ryan Coe <bluemrp9 at gmail.com>
+Date: Fri, 5 Aug 2016 20:49:38 -0700
+Subject: [PATCH 1/1] fix xtradb cmakelist.patch
+
+Signed-off-by: Ryan Coe <bluemrp9 at gmail.com>
+---
+ storage/xtradb/CMakeLists.txt | 16 +++++++++-------
+ 1 file changed, 9 insertions(+), 7 deletions(-)
+
+diff --git a/storage/xtradb/CMakeLists.txt b/storage/xtradb/CMakeLists.txt
+index 0c28775..9b453f3 100644
+--- a/storage/xtradb/CMakeLists.txt
++++ b/storage/xtradb/CMakeLists.txt
+@@ -484,12 +484,14 @@ IF(WITH_INNODB)
+   SET(WITH_INNOBASE_STORAGE_ENGINE TRUE)
+ ENDIF()
+
+-MYSQL_ADD_PLUGIN(xtradb ${INNOBASE_SOURCES} STORAGE_ENGINE
+-  DEFAULT
+-  RECOMPILE_FOR_EMBEDDED
+-  LINK_LIBRARIES ${ZLIB_LIBRARY} ${LINKER_SCRIPT})
+-
+-IF(TARGET xtradb AND NOT XTRADB_OK)
+-  MESSAGE(FATAL_ERROR "Percona XtraDB is not supported on this platform")
++IF(NOT WITHOUT_XTRADB)
++  MYSQL_ADD_PLUGIN(xtradb ${INNOBASE_SOURCES} STORAGE_ENGINE
++    DEFAULT
++    RECOMPILE_FOR_EMBEDDED
++    LINK_LIBRARIES ${ZLIB_LIBRARY} ${LINKER_SCRIPT})
++
++  IF(TARGET xtradb AND NOT XTRADB_OK)
++    MESSAGE(FATAL_ERROR "Percona XtraDB is not supported on this platform")
++  ENDIF()
+ ENDIF()
+
+--
+2.9.2
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 c590656..0000000
--- 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 <thomas.petazzoni at free-electrons.com>
-
----
- 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 6fef0a9..0000000
--- 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) <kuyurix at gmail.com>
-
---- mysql-5.1.70.orig/config/ac-macros/misc.m4
-+++ mysql-5.1.70/config/ac-macros/misc.m4
-@@ -477,7 +477,7 @@
-     exit(ptr_f(&a) < 0);
-   }
-   ], ac_cv_c_stack_direction=1, ac_cv_c_stack_direction=-1,
--   ac_cv_c_stack_direction=)])
-+   ac_cv_c_stack_direction=0)])
-  AC_DEFINE_UNQUOTED(STACK_DIRECTION, $ac_cv_c_stack_direction)
- ])dnl
- 
diff --git a/package/mysql/0004-Fix-gen_lex_hash-execution.patch b/package/mysql/0004-Fix-gen_lex_hash-execution.patch
deleted file mode 100644
index b91ed4f..0000000
--- 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) <kuyurix at gmail.com>
-
---- mysql-5.1.70/sql/Makefile.am
-+++ mysql-5.1.70.patch/sql/Makefile.am
-@@ -177,7 +177,7 @@
- # this avoid the rebuild of the built files in a source dist
- lex_hash.h:	gen_lex_hash.cc lex.h
- 		$(MAKE) $(AM_MAKEFLAGS) gen_lex_hash$(EXEEXT)
--		./gen_lex_hash$(EXEEXT) > $@-t
-+		gen_lex_hash$(EXEEXT) > $@-t
- 		$(MV) $@-t $@
- 
- # For testing of udf_example.so
-
---- mysql-5.1.70/sql/Makefile.in
-+++ mysql-5.1.70.patch/sql/Makefile.in
-@@ -1310,7 +1310,7 @@
- # this avoid the rebuild of the built files in a source dist
- lex_hash.h:	gen_lex_hash.cc lex.h
- 		$(MAKE) $(AM_MAKEFLAGS) gen_lex_hash$(EXEEXT)
--		./gen_lex_hash$(EXEEXT) > $@-t
-+		gen_lex_hash$(EXEEXT) > $@-t
- 		$(MV) $@-t $@
- 
- # We might have some stuff not built in this build, but that we want to install
diff --git a/package/mysql/0005-bison_3_breaks_mysql_server_build.patch b/package/mysql/0005-bison_3_breaks_mysql_server_build.patch
deleted file mode 100644
index 918fe24..0000000
--- 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) <kuyurix at gmail.com>
----
-diff -uNr mysql-5.1.73.orig/sql/sql_lex.cc mysql-5.1.73/sql/sql_lex.cc
---- mysql-5.1.73.orig/sql/sql_lex.cc	2013-11-04 18:52:27.000000000 +0000
-+++ mysql-5.1.73/sql/sql_lex.cc	2014-02-12 14:12:04.244111625 +0000
-@@ -775,14 +775,13 @@
- 				(which can't be followed by a signed number)
- */
- 
--int MYSQLlex(void *arg, void *yythd)
-+int MYSQLlex(void *arg, THD *thd)
- {
-   reg1	uchar c= 0;
-   bool comment_closed;
-   int	tokval, result_state;
-   uint length;
-   enum my_lex_states state;
--  THD *thd= (THD *)yythd;
-   Lex_input_stream *lip= & thd->m_parser_state->m_lip;
-   LEX *lex= thd->lex;
-   YYSTYPE *yylval=(YYSTYPE*) arg;
-diff -uNr mysql-5.1.73.orig/sql/sql_lex.h mysql-5.1.73/sql/sql_lex.h
---- mysql-5.1.73.orig/sql/sql_lex.h	2013-11-04 18:52:27.000000000 +0000
-+++ mysql-5.1.73/sql/sql_lex.h	2014-02-12 14:17:19.424106423 +0000
-@@ -2072,7 +2072,7 @@
- extern void lex_free(void);
- extern void lex_start(THD *thd);
- extern void lex_end(LEX *lex);
--extern int MYSQLlex(void *arg, void *yythd);
-+extern int MYSQLlex(void *arg, THD *thd);
- 
- extern void trim_whitespace(CHARSET_INFO *cs, LEX_STRING *str);
- 
-diff -uNr mysql-5.1.73.orig/sql/sql_parse.cc mysql-5.1.73/sql/sql_parse.cc
---- mysql-5.1.73.orig/sql/sql_parse.cc	2013-11-04 18:52:27.000000000 +0000
-+++ mysql-5.1.73/sql/sql_parse.cc	2014-02-12 14:19:20.424104427 +0000
-@@ -8012,7 +8012,7 @@
- }
- 
- 
--extern int MYSQLparse(void *thd); // from sql_yacc.cc
-+extern int MYSQLparse(THD *thd); // from sql_yacc.cc
- 
- 
- /**
-diff -uNr mysql-5.1.73.orig/sql/sql_yacc.yy mysql-5.1.73/sql/sql_yacc.yy
---- mysql-5.1.73.orig/sql/sql_yacc.yy	2013-11-04 18:52:27.000000000 +0000
-+++ mysql-5.1.73/sql/sql_yacc.yy	2014-02-12 20:17:06.707750140 +0000
-@@ -23,19 +23,13 @@
- */
- 
- %{
--/* thd is passed as an argument to yyparse(), and subsequently to yylex().
--** The type will be void*, so it must be  cast to (THD*) when used.
--** Use the YYTHD macro for this.
--*/
--#define YYPARSE_PARAM yythd
--#define YYLEX_PARAM yythd
--#define YYTHD ((THD *)yythd)
--#define YYLIP (& YYTHD->m_parser_state->m_lip)
-+
-+#define YYLIP (& thd->m_parser_state->m_lip)
- 
- #define MYSQL_YACC
- #define YYINITDEPTH 100
- #define YYMAXDEPTH 3200                        /* Because of 64K stack */
--#define Lex (YYTHD->lex)
-+#define Lex (thd->lex)
- #define Select Lex->current_select
- #include "mysql_priv.h"
- #include "slave.h"
-@@ -55,7 +49,7 @@
- #pragma warning (disable : 4065)
- #endif
- 
--int yylex(void *yylval, void *yythd);
-+int yylex(void *yylval, THD *thd);
- 
- const LEX_STRING null_lex_str= {0,0};
- 
-@@ -64,7 +58,7 @@
-     ulong val= *(F);                          \
-     if (my_yyoverflow((B), (D), &val))        \
-     {                                         \
--      yyerror((char*) (A));                   \
-+      yyerror(current_thd, (char*) (A));      \
-       return 2;                               \
-     }                                         \
-     else                                      \
-@@ -76,7 +70,7 @@
- #define MYSQL_YYABORT                         \
-   do                                          \
-   {                                           \
--    LEX::cleanup_lex_after_parse_error(YYTHD);\
-+    LEX::cleanup_lex_after_parse_error(thd);\
-     YYABORT;                                  \
-   } while (0)
- 
-@@ -159,9 +153,8 @@
-   to abort from the parser.
- */
- 
--void MYSQLerror(const char *s)
-+void MYSQLerror(THD *thd, const char *s)
- {
--  THD *thd= current_thd;
- 
-   /*
-     Restore the original LEX if it was replaced when parsing
-@@ -675,7 +668,10 @@
- bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize);
- %}
- 
--%pure_parser                                    /* We have threads */
-+/* We have threads */
-+%define api.pure
-+%parse-param { THD *thd }
-+%lex-param { THD *thd }
- /*
-   Currently there are 169 shift/reduce conflicts.
-   We should not introduce new conflicts any more.
-@@ -1516,7 +1512,6 @@
- query:
-           END_OF_INPUT
-           {
--            THD *thd= YYTHD;
-             if (!thd->bootstrap &&
-               (!(thd->lex->select_lex.options & OPTION_FOUND_COMMENT)))
-             {
-@@ -1530,7 +1525,7 @@
-           {
-             Lex_input_stream *lip = YYLIP;
- 
--            if ((YYTHD->client_capabilities & CLIENT_MULTI_QUERIES) &&
-+            if ((thd->client_capabilities & CLIENT_MULTI_QUERIES) &&
-                 ! lip->stmt_prepare_mode &&
-                 ! lip->eof())
-             {
-@@ -1626,7 +1621,6 @@
- deallocate:
-           deallocate_or_drop PREPARE_SYM ident
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             lex->sql_command= SQLCOM_DEALLOCATE_PREPARE;
-             lex->prepared_stmt_name= $3;
-@@ -1641,7 +1635,6 @@
- prepare:
-           PREPARE_SYM ident FROM prepare_src
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             lex->sql_command= SQLCOM_PREPARE;
-             lex->prepared_stmt_name= $2;
-@@ -1651,14 +1644,12 @@
- prepare_src:
-           TEXT_STRING_sys
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             lex->prepared_stmt_code= $1;
-             lex->prepared_stmt_code_is_varref= FALSE;
-           }
-         | '@' ident_or_text
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             lex->prepared_stmt_code= $2;
-             lex->prepared_stmt_code_is_varref= TRUE;
-@@ -1668,7 +1659,6 @@
- execute:
-           EXECUTE_SYM ident
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             lex->sql_command= SQLCOM_EXECUTE;
-             lex->prepared_stmt_name= $2;
-@@ -1826,7 +1816,6 @@
- create:
-           CREATE opt_table_options TABLE_SYM opt_if_not_exists table_ident
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             lex->sql_command= SQLCOM_CREATE_TABLE;
-             if (!lex->select_lex.add_table_to_list(thd, $5, NULL,
-@@ -1844,13 +1833,13 @@
-           }
-           create2
-           {
--            LEX *lex= YYTHD->lex;
-+            LEX *lex= thd->lex;
-             lex->current_select= &lex->select_lex; 
-             if ((lex->create_info.used_fields & HA_CREATE_USED_ENGINE) &&
-                 !lex->create_info.db_type)
-             {
--              lex->create_info.db_type= ha_default_handlerton(YYTHD);
--              push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_WARN,
-+              lex->create_info.db_type= ha_default_handlerton(thd);
-+              push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
-                                   ER_WARN_USING_OTHER_HANDLER,
-                                   ER(ER_WARN_USING_OTHER_HANDLER),
-                                   ha_resolve_storage_engine_name(lex->create_info.db_type),
-@@ -1979,7 +1968,7 @@
- event_tail:
-           remember_name EVENT_SYM opt_if_not_exists sp_name
-           {
--            THD *thd= YYTHD;
-+            THD *thd= thd;
-             LEX *lex=Lex;
- 
-             lex->stmt_definition_begin= $1;
-@@ -2046,7 +2035,7 @@
- ev_starts:
-           /* empty */
-           {
--            Item *item= new (YYTHD->mem_root) Item_func_now_local();
-+            Item *item= new (thd->mem_root) Item_func_now_local();
-             if (item == NULL)
-               MYSQL_YYABORT;
-             Lex->event_parse_data->item_starts= item;
-@@ -2096,7 +2085,6 @@
- 
- ev_sql_stmt:
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             Lex_input_stream *lip= YYLIP;
- 
-@@ -2139,7 +2127,6 @@
-           }
-           ev_sql_stmt_inner
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
- 
-             /* return back to the original memory root ASAP */
-@@ -2198,11 +2185,10 @@
-             $$= new sp_name($1, $3, true);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
--            $$->init_qname(YYTHD);
-+            $$->init_qname(thd);
-           }
-         | ident
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             LEX_STRING db;
-             if (check_routine_name(&$1))
-@@ -2272,7 +2258,7 @@
-             lex->sql_command= SQLCOM_CALL;
-             lex->spname= $2;
-             lex->value_list.empty();
--            sp_add_used_routine(lex, YYTHD, $2, TYPE_ENUM_PROCEDURE);
-+            sp_add_used_routine(lex, thd, $2, TYPE_ENUM_PROCEDURE);
-           }
-           opt_sp_cparam_list {}
-         ;
-@@ -2345,7 +2331,7 @@
-                                                      (enum enum_field_types)$3,
-                                                      sp_param_in);
- 
--            if (lex->sphead->fill_field_definition(YYTHD, lex,
-+            if (lex->sphead->fill_field_definition(thd, lex,
-                                                    (enum enum_field_types) $3,
-                                                    &spvar->field_def))
-             {
-@@ -2382,7 +2368,7 @@
-                                                      (enum enum_field_types)$4,
-                                                      (sp_param_mode_t)$1);
- 
--            if (lex->sphead->fill_field_definition(YYTHD, lex,
-+            if (lex->sphead->fill_field_definition(thd, lex,
-                                                    (enum enum_field_types) $4,
-                                                    &spvar->field_def))
-             {
-@@ -2445,13 +2431,12 @@
-           {
-             LEX *lex= Lex;
- 
--            lex->sphead->reset_lex(YYTHD);
-+            lex->sphead->reset_lex(thd);
-             lex->spcont->declare_var_boundary($2);
-           }
-           type
-           sp_opt_default
-           {
--            THD *thd= YYTHD;
-             LEX *lex= Lex;
-             sp_pcontext *pctx= lex->spcont;
-             uint num_vars= pctx->context_var_count();
-@@ -2477,7 +2462,7 @@
-               spvar->type= var_type;
-               spvar->dflt= dflt_value_item;
-             
--              if (lex->sphead->fill_field_definition(YYTHD, lex, var_type,
-+              if (lex->sphead->fill_field_definition(thd, lex, var_type,
-                                                      &spvar->field_def))
-               {
-                 MYSQL_YYABORT;
-@@ -2501,7 +2486,7 @@
-             }
- 
-             pctx->declare_var_boundary(0);
--            if (lex->sphead->restore_lex(YYTHD))
-+            if (lex->sphead->restore_lex(thd))
-               MYSQL_YYABORT;
-             $$.vars= $2;
-             $$.conds= $$.hndlrs= $$.curs= 0;
-@@ -2516,7 +2501,7 @@
- 	      my_error(ER_SP_DUP_COND, MYF(0), $2.str);
- 	      MYSQL_YYABORT;
- 	    }
--	    if(YYTHD->lex->spcont->push_cond(&$2, $5))
-+	    if(thd->lex->spcont->push_cond(&$2, $5))
-               MYSQL_YYABORT;
-             $$.vars= $$.hndlrs= $$.curs= 0;
-             $$.conds= 1;
-@@ -2602,7 +2587,7 @@
- 
- sp_cursor_stmt:
-           {
--            Lex->sphead->reset_lex(YYTHD);
-+            Lex->sphead->reset_lex(thd);
-           }
-           select
-           {
-@@ -2618,7 +2603,7 @@
-             }
-             lex->sp_lex_in_use= TRUE;
-             $$= lex;
--            if (lex->sphead->restore_lex(YYTHD))
-+            if (lex->sphead->restore_lex(thd))
-               MYSQL_YYABORT;
-           }
-         ;
-@@ -2662,7 +2647,7 @@
- sp_cond:
-           ulong_num
-           { /* mysql errno */
--            $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t));
-+            $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t));
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-             $$->type= sp_cond_type_t::number;
-@@ -2675,7 +2660,7 @@
-               my_error(ER_SP_BAD_SQLSTATE, MYF(0), $3.str);
-               MYSQL_YYABORT;
-             }
--            $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t));
-+            $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t));
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-             $$->type= sp_cond_type_t::state;
-@@ -2705,21 +2690,21 @@
-           }
-         | SQLWARNING_SYM /* SQLSTATEs 01??? */
-           {
--            $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t));
-+            $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t));
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-             $$->type= sp_cond_type_t::warning;
-           }
-         | not FOUND_SYM /* SQLSTATEs 02??? */
-           {
--            $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t));
-+            $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t));
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-             $$->type= sp_cond_type_t::notfound;
-           }
-         | SQLEXCEPTION_SYM /* All other SQLSTATEs */
-           {
--            $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t));
-+            $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t));
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-             $$->type= sp_cond_type_t::exception;
-@@ -2789,7 +2774,6 @@
-         
- sp_proc_stmt_statement:
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             Lex_input_stream *lip= YYLIP;
- 
-@@ -2798,7 +2782,6 @@
-           }
-           statement
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             Lex_input_stream *lip= YYLIP;
-             sp_head *sp= lex->sphead;
-@@ -2845,7 +2828,7 @@
- 
- sp_proc_stmt_return:
-           RETURN_SYM 
--          { Lex->sphead->reset_lex(YYTHD); }
-+          { Lex->sphead->reset_lex(thd); }
-           expr
-           {
-             LEX *lex= Lex;
-@@ -2867,7 +2850,7 @@
-                 MYSQL_YYABORT;
-               sp->m_flags|= sp_head::HAS_RETURN;
-             }
--            if (sp->restore_lex(YYTHD))
-+            if (sp->restore_lex(thd))
-               MYSQL_YYABORT;
-           }
-         ;
-@@ -3094,7 +3077,7 @@
-         ;
- 
- sp_if:
--          { Lex->sphead->reset_lex(YYTHD); }
-+          { Lex->sphead->reset_lex(thd); }
-           expr THEN_SYM
-           {
-             LEX *lex= Lex;
-@@ -3108,7 +3091,7 @@
-                 sp->add_cont_backpatch(i) ||
-                 sp->add_instr(i))
-               MYSQL_YYABORT;
--            if (sp->restore_lex(YYTHD))
-+            if (sp->restore_lex(thd))
-               MYSQL_YYABORT;
-           }
-           sp_proc_stmts1
-@@ -3147,7 +3130,7 @@
-           {
-             LEX *lex= Lex;
-             case_stmt_action_case(lex);
--            lex->sphead->reset_lex(YYTHD); /* For expr $3 */
-+            lex->sphead->reset_lex(thd); /* For expr $3 */
-           }
-           expr
-           {
-@@ -3156,7 +3139,7 @@
-               MYSQL_YYABORT;
- 
-             /* For expr $3 */
--            if (lex->sphead->restore_lex(YYTHD))
-+            if (lex->sphead->restore_lex(thd))
-               MYSQL_YYABORT;
-           }
-           simple_when_clause_list
-@@ -3198,7 +3181,7 @@
- simple_when_clause:
-           WHEN_SYM
-           {
--            Lex->sphead->reset_lex(YYTHD); /* For expr $3 */
-+            Lex->sphead->reset_lex(thd); /* For expr $3 */
-           }
-           expr
-           {
-@@ -3208,7 +3191,7 @@
-             if (case_stmt_action_when(lex, $3, true))
-               MYSQL_YYABORT;
-             /* For expr $3 */
--            if (lex->sphead->restore_lex(YYTHD))
-+            if (lex->sphead->restore_lex(thd))
-               MYSQL_YYABORT;
-           }
-           THEN_SYM
-@@ -3223,7 +3206,7 @@
- searched_when_clause:
-           WHEN_SYM
-           {
--            Lex->sphead->reset_lex(YYTHD); /* For expr $3 */
-+            Lex->sphead->reset_lex(thd); /* For expr $3 */
-           }
-           expr
-           {
-@@ -3231,7 +3214,7 @@
-             if (case_stmt_action_when(lex, $3, false))
-               MYSQL_YYABORT;
-             /* For expr $3 */
--            if (lex->sphead->restore_lex(YYTHD))
-+            if (lex->sphead->restore_lex(thd))
-               MYSQL_YYABORT;
-           }
-           THEN_SYM
-@@ -3395,7 +3378,7 @@
-               MYSQL_YYABORT;
- 	  }
-         | WHILE_SYM 
--          { Lex->sphead->reset_lex(YYTHD); }
-+          { Lex->sphead->reset_lex(thd); }
-           expr DO_SYM
-           {
-             LEX *lex= Lex;
-@@ -3409,7 +3392,7 @@
-                 sp->new_cont_backpatch(i) ||
-                 sp->add_instr(i))
-               MYSQL_YYABORT;
--            if (sp->restore_lex(YYTHD))
-+            if (sp->restore_lex(thd))
-               MYSQL_YYABORT;
-           }
-           sp_proc_stmts1 END WHILE_SYM
-@@ -3424,7 +3407,7 @@
-             lex->sphead->do_cont_backpatch();
-           }
-         | REPEAT_SYM sp_proc_stmts1 UNTIL_SYM 
--          { Lex->sphead->reset_lex(YYTHD); }
-+          { Lex->sphead->reset_lex(thd); }
-           expr END REPEAT_SYM
-           {
-             LEX *lex= Lex;
-@@ -3436,7 +3419,7 @@
-             if (i == NULL ||
-                 lex->sphead->add_instr(i))
-               MYSQL_YYABORT;
--            if (lex->sphead->restore_lex(YYTHD))
-+            if (lex->sphead->restore_lex(thd))
-               MYSQL_YYABORT;
-             /* We can shortcut the cont_backpatch here */
-             i->m_cont_dest= ip+1;
-@@ -3859,7 +3842,6 @@
-           create3 {}
-         | LIKE table_ident
-           {
--            THD *thd= YYTHD;
-             TABLE_LIST *src_table;
-             LEX *lex= thd->lex;
- 
-@@ -3873,7 +3855,6 @@
-           }
-         | '(' LIKE table_ident ')'
-           {
--            THD *thd= YYTHD;
-             TABLE_LIST *src_table;
-             LEX *lex= thd->lex;
- 
-@@ -4342,7 +4323,6 @@
-           bit_expr
-           {
-             Item *part_expr= $1;
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             Name_resolution_context *context= &lex->current_select->context;
-             TABLE_LIST *save_list= context->table_list;
-@@ -4364,7 +4344,7 @@
-               my_error(ER_PARTITION_FUNCTION_IS_NOT_ALLOWED, MYF(0));
-               MYSQL_YYABORT;
-             }
--            if (part_expr->fix_fields(YYTHD, (Item**)0) ||
-+            if (part_expr->fix_fields(thd, (Item**)0) ||
-                 ((context->table_list= save_list), FALSE) ||
-                 (!part_expr->const_item()) ||
-                 (!lex->safe_to_cache_query))
-@@ -4629,7 +4609,7 @@
-         | TYPE_SYM opt_equal storage_engines
-           {
-             Lex->create_info.db_type= $3;
--            WARN_DEPRECATED(yythd, "6.0", "TYPE=storage_engine",
-+            WARN_DEPRECATED(thd, "6.0", "TYPE=storage_engine",
-                             "'ENGINE=storage_engine'");
-             Lex->create_info.used_fields|= HA_CREATE_USED_ENGINE;
-           }
-@@ -4791,19 +4771,19 @@
- storage_engines:
-           ident_or_text
-           {
--            plugin_ref plugin= ha_resolve_by_name(YYTHD, &$1);
-+            plugin_ref plugin= ha_resolve_by_name(thd, &$1);
- 
-             if (plugin)
-               $$= plugin_data(plugin, handlerton*);
-             else
-             {
--              if (YYTHD->variables.sql_mode & MODE_NO_ENGINE_SUBSTITUTION)
-+              if (thd->variables.sql_mode & MODE_NO_ENGINE_SUBSTITUTION)
-               {
-                 my_error(ER_UNKNOWN_STORAGE_ENGINE, MYF(0), $1.str);
-                 MYSQL_YYABORT;
-               }
-               $$= 0;
--              push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_WARN,
-+              push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
-                                   ER_UNKNOWN_STORAGE_ENGINE,
-                                   ER(ER_UNKNOWN_STORAGE_ENGINE),
-                                   $1.str);
-@@ -4815,7 +4795,7 @@
-           ident_or_text
-           {
-             plugin_ref plugin;
--            if ((plugin= ha_resolve_by_name(YYTHD, &$1)))
-+            if ((plugin= ha_resolve_by_name(thd, &$1)))
-               $$= plugin_data(plugin, handlerton*);
-             else
-             {
-@@ -5043,7 +5023,7 @@
-               {
-                 char buff[sizeof("YEAR()") + MY_INT64_NUM_DECIMAL_DIGITS + 1];
-                 my_snprintf(buff, sizeof(buff), "YEAR(%lu)", length);
--                push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_NOTE,
-+                push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_NOTE,
-                                     ER_WARN_DEPRECATED_SYNTAX,
-                                     ER(ER_WARN_DEPRECATED_SYNTAX),
-                                     buff, "YEAR(4)");
-@@ -5057,7 +5037,7 @@
-           { $$=MYSQL_TYPE_TIME; }
-         | TIMESTAMP opt_field_length
-           {
--            if (YYTHD->variables.sql_mode & MODE_MAXDB)
-+            if (thd->variables.sql_mode & MODE_MAXDB)
-               $$=MYSQL_TYPE_DATETIME;
-             else
-             {
-@@ -5189,7 +5169,7 @@
- real_type:
-           REAL
-           {
--            $$= YYTHD->variables.sql_mode & MODE_REAL_AS_FLOAT ?
-+            $$= thd->variables.sql_mode & MODE_REAL_AS_FLOAT ?
-               MYSQL_TYPE_FLOAT : MYSQL_TYPE_DOUBLE;
-           }
-         | DOUBLE_SYM
-@@ -5263,7 +5243,7 @@
-         | DEFAULT now_or_signed_literal { Lex->default_value=$2; }
-         | ON UPDATE_SYM NOW_SYM optional_braces
-           {
--            Item *item= new (YYTHD->mem_root) Item_func_now_local();
-+            Item *item= new (thd->mem_root) Item_func_now_local();
-             if (item == NULL)
-               MYSQL_YYABORT;
-             Lex->on_update_value= item;
-@@ -5312,7 +5292,7 @@
- now_or_signed_literal:
-           NOW_SYM optional_braces
-           {
--            $$= new (YYTHD->mem_root) Item_func_now_local();
-+            $$= new (thd->mem_root) Item_func_now_local();
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-@@ -5673,7 +5653,6 @@
- alter:
-           ALTER opt_ignore TABLE_SYM table_ident
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             lex->name.str= 0;
-             lex->name.length= 0;
-@@ -5799,7 +5778,7 @@
-               Event_parse_data.
-             */
- 
--            if (!(Lex->event_parse_data= Event_parse_data::new_instance(YYTHD)))
-+            if (!(Lex->event_parse_data= Event_parse_data::new_instance(thd)))
-               MYSQL_YYABORT;
-             Lex->event_parse_data->identifier= $4;
- 
-@@ -6192,7 +6171,6 @@
-           {
-             if (!$4)
-             {
--              THD *thd= YYTHD;
-               $4= thd->variables.collation_database;
-             }
-             $5= $5 ? $5 : $4;
-@@ -6556,7 +6534,7 @@
- assign_to_keycache:
-           table_ident cache_keys_spec
-           {
--            if (!Select->add_table_to_list(YYTHD, $1, NULL, 0, TL_READ, 
-+            if (!Select->add_table_to_list(thd, $1, NULL, 0, TL_READ, 
-                                            Select->pop_index_hints()))
-               MYSQL_YYABORT;
-           }
-@@ -6585,7 +6563,7 @@
- preload_keys:
-           table_ident cache_keys_spec opt_ignore_leaves
-           {
--            if (!Select->add_table_to_list(YYTHD, $1, NULL, $3, TL_READ,
-+            if (!Select->add_table_to_list(thd, $1, NULL, $3, TL_READ,
-                                            Select->pop_index_hints()))
-               MYSQL_YYABORT;
-           }
-@@ -6593,7 +6571,7 @@
- 
- cache_keys_spec:
-           {
--            Lex->select_lex.alloc_index_hints(YYTHD);
-+            Lex->select_lex.alloc_index_hints(thd);
-             Select->set_index_hint_type(INDEX_HINT_USE, 
-                                         global_system_variables.old_mode ? 
-                                         INDEX_HINT_MASK_JOIN : 
-@@ -6813,7 +6791,6 @@
-         | select_item
-         | '*'
-           {
--            THD *thd= YYTHD;
-             Item *item= new (thd->mem_root)
-                           Item_field(&thd->lex->current_select->context,
-                                      NULL, NULL, "*");
-@@ -6828,7 +6805,6 @@
- select_item:
-           remember_name select_item2 remember_end select_alias
-           {
--            THD *thd= YYTHD;
-             DBUG_ASSERT($1 < $3);
- 
-             if (add_item_to_list(thd, $2))
-@@ -6929,7 +6905,7 @@
-             else
-             {
-               /* X OR Y */
--              $$ = new (YYTHD->mem_root) Item_cond_or($1, $3);
-+              $$ = new (thd->mem_root) Item_cond_or($1, $3);
-               if ($$ == NULL)
-                 MYSQL_YYABORT;
-             }
-@@ -6937,7 +6913,7 @@
-         | expr XOR expr %prec XOR
-           {
-             /* XOR is a proprietary extension */
--            $$ = new (YYTHD->mem_root) Item_cond_xor($1, $3);
-+            $$ = new (thd->mem_root) Item_cond_xor($1, $3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-@@ -6979,50 +6955,50 @@
-             else
-             {
-               /* X AND Y */
--              $$ = new (YYTHD->mem_root) Item_cond_and($1, $3);
-+              $$ = new (thd->mem_root) Item_cond_and($1, $3);
-               if ($$ == NULL)
-                 MYSQL_YYABORT;
-             }
-           }
-         | NOT_SYM expr %prec NOT_SYM
-           {
--            $$= negate_expression(YYTHD, $2);
-+            $$= negate_expression(thd, $2);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | bool_pri IS TRUE_SYM %prec IS
-           {
--            $$= new (YYTHD->mem_root) Item_func_istrue($1);
-+            $$= new (thd->mem_root) Item_func_istrue($1);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | bool_pri IS not TRUE_SYM %prec IS
-           {
--            $$= new (YYTHD->mem_root) Item_func_isnottrue($1);
-+            $$= new (thd->mem_root) Item_func_isnottrue($1);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | bool_pri IS FALSE_SYM %prec IS
-           {
--            $$= new (YYTHD->mem_root) Item_func_isfalse($1);
-+            $$= new (thd->mem_root) Item_func_isfalse($1);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | bool_pri IS not FALSE_SYM %prec IS
-           {
--            $$= new (YYTHD->mem_root) Item_func_isnotfalse($1);
-+            $$= new (thd->mem_root) Item_func_isnotfalse($1);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | bool_pri IS UNKNOWN_SYM %prec IS
-           {
--            $$= new (YYTHD->mem_root) Item_func_isnull($1);
-+            $$= new (thd->mem_root) Item_func_isnull($1);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | bool_pri IS not UNKNOWN_SYM %prec IS
-           {
--            $$= new (YYTHD->mem_root) Item_func_isnotnull($1);
-+            $$= new (thd->mem_root) Item_func_isnotnull($1);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-@@ -7032,19 +7008,19 @@
- bool_pri:
-           bool_pri IS NULL_SYM %prec IS
-           {
--            $$= new (YYTHD->mem_root) Item_func_isnull($1);
-+            $$= new (thd->mem_root) Item_func_isnull($1);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | bool_pri IS not NULL_SYM %prec IS
-           {
--            $$= new (YYTHD->mem_root) Item_func_isnotnull($1);
-+            $$= new (thd->mem_root) Item_func_isnotnull($1);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | bool_pri EQUAL_SYM predicate %prec EQUAL_SYM
-           {
--            $$= new (YYTHD->mem_root) Item_func_equal($1,$3);
-+            $$= new (thd->mem_root) Item_func_equal($1,$3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-@@ -7066,13 +7042,12 @@
- predicate:
-           bit_expr IN_SYM '(' subselect ')'
-           {
--            $$= new (YYTHD->mem_root) Item_in_subselect($1, $4);
-+            $$= new (thd->mem_root) Item_in_subselect($1, $4);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | bit_expr not IN_SYM '(' subselect ')'
-           {
--            THD *thd= YYTHD;
-             Item *item= new (thd->mem_root) Item_in_subselect($1, $5);
-             if (item == NULL)
-               MYSQL_YYABORT;
-@@ -7082,7 +7057,7 @@
-           }
-         | bit_expr IN_SYM '(' expr ')'
-           {
--            $$= handle_sql2003_note184_exception(YYTHD, $1, true, $4);
-+            $$= handle_sql2003_note184_exception(thd, $1, true, $4);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-@@ -7090,13 +7065,13 @@
-           { 
-             $6->push_front($4);
-             $6->push_front($1);
--            $$= new (YYTHD->mem_root) Item_func_in(*$6);
-+            $$= new (thd->mem_root) Item_func_in(*$6);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | bit_expr not IN_SYM '(' expr ')'
-           {
--            $$= handle_sql2003_note184_exception(YYTHD, $1, false, $5);
-+            $$= handle_sql2003_note184_exception(thd, $1, false, $5);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-@@ -7104,7 +7079,7 @@
-           {
-             $7->push_front($5);
-             $7->push_front($1);
--            Item_func_in *item = new (YYTHD->mem_root) Item_func_in(*$7);
-+            Item_func_in *item = new (thd->mem_root) Item_func_in(*$7);
-             if (item == NULL)
-               MYSQL_YYABORT;
-             item->negate();
-@@ -7112,14 +7087,14 @@
-           }
-         | bit_expr BETWEEN_SYM bit_expr AND_SYM predicate
-           {
--            $$= new (YYTHD->mem_root) Item_func_between($1,$3,$5);
-+            $$= new (thd->mem_root) Item_func_between($1,$3,$5);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | bit_expr not BETWEEN_SYM bit_expr AND_SYM predicate
-           {
-             Item_func_between *item;
--            item= new (YYTHD->mem_root) Item_func_between($1,$4,$6);
-+            item= new (thd->mem_root) Item_func_between($1,$4,$6);
-             if (item == NULL)
-               MYSQL_YYABORT;
-             item->negate();
-@@ -7127,42 +7102,42 @@
-           }
-         | bit_expr SOUNDS_SYM LIKE bit_expr
-           {
--            Item *item1= new (YYTHD->mem_root) Item_func_soundex($1);
--            Item *item4= new (YYTHD->mem_root) Item_func_soundex($4);
-+            Item *item1= new (thd->mem_root) Item_func_soundex($1);
-+            Item *item4= new (thd->mem_root) Item_func_soundex($4);
-             if ((item1 == NULL) || (item4 == NULL))
-               MYSQL_YYABORT;
--            $$= new (YYTHD->mem_root) Item_func_eq(item1, item4);
-+            $$= new (thd->mem_root) Item_func_eq(item1, item4);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | bit_expr LIKE simple_expr opt_escape
-           {
--            $$= new (YYTHD->mem_root) Item_func_like($1,$3,$4,Lex->escape_used);
-+            $$= new (thd->mem_root) Item_func_like($1,$3,$4,Lex->escape_used);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | bit_expr not LIKE simple_expr opt_escape
-           {
--            Item *item= new (YYTHD->mem_root) Item_func_like($1,$4,$5,
-+            Item *item= new (thd->mem_root) Item_func_like($1,$4,$5,
-                                                              Lex->escape_used);
-             if (item == NULL)
-               MYSQL_YYABORT;
--            $$= new (YYTHD->mem_root) Item_func_not(item);
-+            $$= new (thd->mem_root) Item_func_not(item);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | bit_expr REGEXP bit_expr
-           {
--            $$= new (YYTHD->mem_root) Item_func_regex($1,$3);
-+            $$= new (thd->mem_root) Item_func_regex($1,$3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | bit_expr not REGEXP bit_expr
-           {
--            Item *item= new (YYTHD->mem_root) Item_func_regex($1,$4);
-+            Item *item= new (thd->mem_root) Item_func_regex($1,$4);
-             if (item == NULL)
-               MYSQL_YYABORT;
--            $$= negate_expression(YYTHD, item);
-+            $$= negate_expression(thd, item);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-@@ -7172,85 +7147,85 @@
- bit_expr:
-           bit_expr '|' bit_expr %prec '|'
-           {
--            $$= new (YYTHD->mem_root) Item_func_bit_or($1,$3);
-+            $$= new (thd->mem_root) Item_func_bit_or($1,$3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | bit_expr '&' bit_expr %prec '&'
-           {
--            $$= new (YYTHD->mem_root) Item_func_bit_and($1,$3);
-+            $$= new (thd->mem_root) Item_func_bit_and($1,$3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | bit_expr SHIFT_LEFT bit_expr %prec SHIFT_LEFT
-           {
--            $$= new (YYTHD->mem_root) Item_func_shift_left($1,$3);
-+            $$= new (thd->mem_root) Item_func_shift_left($1,$3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | bit_expr SHIFT_RIGHT bit_expr %prec SHIFT_RIGHT
-           {
--            $$= new (YYTHD->mem_root) Item_func_shift_right($1,$3);
-+            $$= new (thd->mem_root) Item_func_shift_right($1,$3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | bit_expr '+' bit_expr %prec '+'
-           {
--            $$= new (YYTHD->mem_root) Item_func_plus($1,$3);
-+            $$= new (thd->mem_root) Item_func_plus($1,$3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | bit_expr '-' bit_expr %prec '-'
-           {
--            $$= new (YYTHD->mem_root) Item_func_minus($1,$3);
-+            $$= new (thd->mem_root) Item_func_minus($1,$3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | bit_expr '+' INTERVAL_SYM expr interval %prec '+'
-           {
--            $$= new (YYTHD->mem_root) Item_date_add_interval($1,$4,$5,0);
-+            $$= new (thd->mem_root) Item_date_add_interval($1,$4,$5,0);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | bit_expr '-' INTERVAL_SYM expr interval %prec '-'
-           {
--            $$= new (YYTHD->mem_root) Item_date_add_interval($1,$4,$5,1);
-+            $$= new (thd->mem_root) Item_date_add_interval($1,$4,$5,1);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | bit_expr '*' bit_expr %prec '*'
-           {
--            $$= new (YYTHD->mem_root) Item_func_mul($1,$3);
-+            $$= new (thd->mem_root) Item_func_mul($1,$3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | bit_expr '/' bit_expr %prec '/'
-           {
--            $$= new (YYTHD->mem_root) Item_func_div($1,$3);
-+            $$= new (thd->mem_root) Item_func_div($1,$3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | bit_expr '%' bit_expr %prec '%'
-           {
--            $$= new (YYTHD->mem_root) Item_func_mod($1,$3);
-+            $$= new (thd->mem_root) Item_func_mod($1,$3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | bit_expr DIV_SYM bit_expr %prec DIV_SYM
-           {
--            $$= new (YYTHD->mem_root) Item_func_int_div($1,$3);
-+            $$= new (thd->mem_root) Item_func_int_div($1,$3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | bit_expr MOD_SYM bit_expr %prec MOD_SYM
-           {
--            $$= new (YYTHD->mem_root) Item_func_mod($1,$3);
-+            $$= new (thd->mem_root) Item_func_mod($1,$3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | bit_expr '^' bit_expr
-           {
--            $$= new (YYTHD->mem_root) Item_func_bit_xor($1,$3);
-+            $$= new (thd->mem_root) Item_func_bit_xor($1,$3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-@@ -7299,7 +7274,6 @@
-         | function_call_conflict
-         | simple_expr COLLATE_SYM ident_or_text %prec NEG
-           {
--            THD *thd= YYTHD;
-             Item *i1= new (thd->mem_root) Item_string($3.str,
-                                                       $3.length,
-                                                       thd->charset());
-@@ -7315,7 +7289,7 @@
-         | sum_expr
-         | simple_expr OR_OR_SYM simple_expr
-           {
--            $$= new (YYTHD->mem_root) Item_func_concat($1, $3);
-+            $$= new (thd->mem_root) Item_func_concat($1, $3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-@@ -7325,25 +7299,25 @@
-           }
-         | '-' simple_expr %prec NEG
-           {
--            $$= new (YYTHD->mem_root) Item_func_neg($2);
-+            $$= new (thd->mem_root) Item_func_neg($2);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | '~' simple_expr %prec NEG
-           {
--            $$= new (YYTHD->mem_root) Item_func_bit_neg($2);
-+            $$= new (thd->mem_root) Item_func_bit_neg($2);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | not2 simple_expr %prec NEG
-           {
--            $$= negate_expression(YYTHD, $2);
-+            $$= negate_expression(thd, $2);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | '(' subselect ')'
-           { 
--            $$= new (YYTHD->mem_root) Item_singlerow_subselect($2);
-+            $$= new (thd->mem_root) Item_singlerow_subselect($2);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-@@ -7352,20 +7326,20 @@
-         | '(' expr ',' expr_list ')'
-           {
-             $4->push_front($2);
--            $$= new (YYTHD->mem_root) Item_row(*$4);
-+            $$= new (thd->mem_root) Item_row(*$4);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | ROW_SYM '(' expr ',' expr_list ')'
-           {
-             $5->push_front($3);
--            $$= new (YYTHD->mem_root) Item_row(*$5);
-+            $$= new (thd->mem_root) Item_row(*$5);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | EXISTS '(' subselect ')'
-           {
--            $$= new (YYTHD->mem_root) Item_exists_subselect($3);
-+            $$= new (thd->mem_root) Item_exists_subselect($3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-@@ -7374,7 +7348,7 @@
-         | MATCH ident_list_arg AGAINST '(' bit_expr fulltext_options ')'
-           {
-             $2->push_front($5);
--            Item_func_match *i1= new (YYTHD->mem_root) Item_func_match(*$2, $6);
-+            Item_func_match *i1= new (thd->mem_root) Item_func_match(*$2, $6);
-             if (i1 == NULL)
-               MYSQL_YYABORT;
-             Select->add_ftfunc_to_list(i1);
-@@ -7382,7 +7356,7 @@
-           }
-         | BINARY simple_expr %prec NEG
-           {
--            $$= create_func_cast(YYTHD, $2, ITEM_CAST_CHAR, NULL, NULL,
-+            $$= create_func_cast(thd, $2, ITEM_CAST_CHAR, NULL, NULL,
-                                  &my_charset_bin);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-@@ -7390,27 +7364,27 @@
-         | CAST_SYM '(' expr AS cast_type ')'
-           {
-             LEX *lex= Lex;
--            $$= create_func_cast(YYTHD, $3, $5, lex->length, lex->dec,
-+            $$= create_func_cast(thd, $3, $5, lex->length, lex->dec,
-                                  lex->charset);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | CASE_SYM opt_expr when_list opt_else END
-           {
--            $$= new (YYTHD->mem_root) Item_func_case(* $3, $2, $4 );
-+            $$= new (thd->mem_root) Item_func_case(* $3, $2, $4 );
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | CONVERT_SYM '(' expr ',' cast_type ')'
-           {
--            $$= create_func_cast(YYTHD, $3, $5, Lex->length, Lex->dec,
-+            $$= create_func_cast(thd, $3, $5, Lex->length, Lex->dec,
-                                  Lex->charset);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | CONVERT_SYM '(' expr USING charset_name ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_conv_charset($3,$5);
-+            $$= new (thd->mem_root) Item_func_conv_charset($3,$5);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-@@ -7423,14 +7397,14 @@
-               my_error(ER_WRONG_COLUMN_NAME, MYF(0), il->my_name()->str);
-               MYSQL_YYABORT;
-             }
--            $$= new (YYTHD->mem_root) Item_default_value(Lex->current_context(),
-+            $$= new (thd->mem_root) Item_default_value(Lex->current_context(),
-                                                          $3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | VALUES '(' simple_ident_nospvar ')'
-           {
--            $$= new (YYTHD->mem_root) Item_insert_value(Lex->current_context(),
-+            $$= new (thd->mem_root) Item_insert_value(Lex->current_context(),
-                                                         $3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-@@ -7438,7 +7412,7 @@
-         | INTERVAL_SYM expr interval '+' expr %prec INTERVAL_SYM
-           /* we cannot put interval before - */
-           {
--            $$= new (YYTHD->mem_root) Item_date_add_interval($5,$2,$3,0);
-+            $$= new (thd->mem_root) Item_date_add_interval($5,$2,$3,0);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-@@ -7453,19 +7427,19 @@
- function_call_keyword:
-           CHAR_SYM '(' expr_list ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_char(*$3);
-+            $$= new (thd->mem_root) Item_func_char(*$3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | CHAR_SYM '(' expr_list USING charset_name ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_char(*$3, $5);
-+            $$= new (thd->mem_root) Item_func_char(*$3, $5);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | CURRENT_USER optional_braces
-           {
--            $$= new (YYTHD->mem_root) Item_func_current_user(Lex->current_context());
-+            $$= new (thd->mem_root) Item_func_current_user(Lex->current_context());
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-             Lex->set_stmt_unsafe();
-@@ -7473,31 +7447,30 @@
-           }
-         | DATE_SYM '(' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_date_typecast($3);
-+            $$= new (thd->mem_root) Item_date_typecast($3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | DAY_SYM '(' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_dayofmonth($3);
-+            $$= new (thd->mem_root) Item_func_dayofmonth($3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | HOUR_SYM '(' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_hour($3);
-+            $$= new (thd->mem_root) Item_func_hour($3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | INSERT '(' expr ',' expr ',' expr ',' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_insert($3,$5,$7,$9);
-+            $$= new (thd->mem_root) Item_func_insert($3,$5,$7,$9);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | INTERVAL_SYM '(' expr ',' expr ')' %prec INTERVAL_SYM
-           {
--            THD *thd= YYTHD;
-             List<Item> *list= new (thd->mem_root) List<Item>;
-             if (list == NULL)
-               MYSQL_YYABORT;
-@@ -7512,7 +7485,6 @@
-           }
-         | INTERVAL_SYM '(' expr ',' expr ',' expr_list ')' %prec INTERVAL_SYM
-           {
--            THD *thd= YYTHD;
-             $7->push_front($5);
-             $7->push_front($3);
-             Item_row *item= new (thd->mem_root) Item_row(*$7);
-@@ -7524,103 +7496,103 @@
-           }
-         | LEFT '(' expr ',' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_left($3,$5);
-+            $$= new (thd->mem_root) Item_func_left($3,$5);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | MINUTE_SYM '(' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_minute($3);
-+            $$= new (thd->mem_root) Item_func_minute($3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | MONTH_SYM '(' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_month($3);
-+            $$= new (thd->mem_root) Item_func_month($3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | RIGHT '(' expr ',' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_right($3,$5);
-+            $$= new (thd->mem_root) Item_func_right($3,$5);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | SECOND_SYM '(' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_second($3);
-+            $$= new (thd->mem_root) Item_func_second($3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | TIME_SYM '(' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_time_typecast($3);
-+            $$= new (thd->mem_root) Item_time_typecast($3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | TIMESTAMP '(' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_datetime_typecast($3);
-+            $$= new (thd->mem_root) Item_datetime_typecast($3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | TIMESTAMP '(' expr ',' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_add_time($3, $5, 1, 0);
-+            $$= new (thd->mem_root) Item_func_add_time($3, $5, 1, 0);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | TRIM '(' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_trim($3);
-+            $$= new (thd->mem_root) Item_func_trim($3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | TRIM '(' LEADING expr FROM expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_ltrim($6,$4);
-+            $$= new (thd->mem_root) Item_func_ltrim($6,$4);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | TRIM '(' TRAILING expr FROM expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_rtrim($6,$4);
-+            $$= new (thd->mem_root) Item_func_rtrim($6,$4);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | TRIM '(' BOTH expr FROM expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_trim($6,$4);
-+            $$= new (thd->mem_root) Item_func_trim($6,$4);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | TRIM '(' LEADING FROM expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_ltrim($5);
-+            $$= new (thd->mem_root) Item_func_ltrim($5);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | TRIM '(' TRAILING FROM expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_rtrim($5);
-+            $$= new (thd->mem_root) Item_func_rtrim($5);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | TRIM '(' BOTH FROM expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_trim($5);
-+            $$= new (thd->mem_root) Item_func_trim($5);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | TRIM '(' expr FROM expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_trim($5,$3);
-+            $$= new (thd->mem_root) Item_func_trim($5,$3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | USER '(' ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_user();
-+            $$= new (thd->mem_root) Item_func_user();
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-             Lex->set_stmt_unsafe();
-@@ -7628,7 +7600,7 @@
-           }
-         | YEAR_SYM '(' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_year($3);
-+            $$= new (thd->mem_root) Item_func_year($3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-@@ -7649,34 +7621,34 @@
- function_call_nonkeyword:
-           ADDDATE_SYM '(' expr ',' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_date_add_interval($3, $5,
-+            $$= new (thd->mem_root) Item_date_add_interval($3, $5,
-                                                              INTERVAL_DAY, 0);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | ADDDATE_SYM '(' expr ',' INTERVAL_SYM expr interval ')'
-           {
--            $$= new (YYTHD->mem_root) Item_date_add_interval($3, $6, $7, 0);
-+            $$= new (thd->mem_root) Item_date_add_interval($3, $6, $7, 0);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | CURDATE optional_braces
-           {
--            $$= new (YYTHD->mem_root) Item_func_curdate_local();
-+            $$= new (thd->mem_root) Item_func_curdate_local();
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-             Lex->safe_to_cache_query=0;
-           }
-         | CURTIME optional_braces
-           {
--            $$= new (YYTHD->mem_root) Item_func_curtime_local();
-+            $$= new (thd->mem_root) Item_func_curtime_local();
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-             Lex->safe_to_cache_query=0;
-           }
-         | CURTIME '(' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_curtime_local($3);
-+            $$= new (thd->mem_root) Item_func_curtime_local($3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-             Lex->safe_to_cache_query=0;
-@@ -7684,83 +7656,83 @@
-         | DATE_ADD_INTERVAL '(' expr ',' INTERVAL_SYM expr interval ')'
-           %prec INTERVAL_SYM
-           {
--            $$= new (YYTHD->mem_root) Item_date_add_interval($3,$6,$7,0);
-+            $$= new (thd->mem_root) Item_date_add_interval($3,$6,$7,0);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | DATE_SUB_INTERVAL '(' expr ',' INTERVAL_SYM expr interval ')'
-           %prec INTERVAL_SYM
-           {
--            $$= new (YYTHD->mem_root) Item_date_add_interval($3,$6,$7,1);
-+            $$= new (thd->mem_root) Item_date_add_interval($3,$6,$7,1);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | EXTRACT_SYM '(' interval FROM expr ')'
-           {
--            $$=new (YYTHD->mem_root) Item_extract( $3, $5);
-+            $$=new (thd->mem_root) Item_extract( $3, $5);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | GET_FORMAT '(' date_time_type  ',' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_get_format($3, $5);
-+            $$= new (thd->mem_root) Item_func_get_format($3, $5);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | NOW_SYM optional_braces
-           {
--            $$= new (YYTHD->mem_root) Item_func_now_local();
-+            $$= new (thd->mem_root) Item_func_now_local();
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-             Lex->safe_to_cache_query=0;
-           }
-         | NOW_SYM '(' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_now_local($3);
-+            $$= new (thd->mem_root) Item_func_now_local($3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-             Lex->safe_to_cache_query=0;
-           }
-         | POSITION_SYM '(' bit_expr IN_SYM expr ')'
-           {
--            $$ = new (YYTHD->mem_root) Item_func_locate($5,$3);
-+            $$ = new (thd->mem_root) Item_func_locate($5,$3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | SUBDATE_SYM '(' expr ',' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_date_add_interval($3, $5,
-+            $$= new (thd->mem_root) Item_date_add_interval($3, $5,
-                                                              INTERVAL_DAY, 1);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | SUBDATE_SYM '(' expr ',' INTERVAL_SYM expr interval ')'
-           {
--            $$= new (YYTHD->mem_root) Item_date_add_interval($3, $6, $7, 1);
-+            $$= new (thd->mem_root) Item_date_add_interval($3, $6, $7, 1);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | SUBSTRING '(' expr ',' expr ',' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_substr($3,$5,$7);
-+            $$= new (thd->mem_root) Item_func_substr($3,$5,$7);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | SUBSTRING '(' expr ',' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_substr($3,$5);
-+            $$= new (thd->mem_root) Item_func_substr($3,$5);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | SUBSTRING '(' expr FROM expr FOR_SYM expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_substr($3,$5,$7);
-+            $$= new (thd->mem_root) Item_func_substr($3,$5,$7);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | SUBSTRING '(' expr FROM expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_substr($3,$5);
-+            $$= new (thd->mem_root) Item_func_substr($3,$5);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-@@ -7775,9 +7747,9 @@
-             */
-             Lex->set_stmt_unsafe();
-             if (global_system_variables.sysdate_is_now == 0)
--              $$= new (YYTHD->mem_root) Item_func_sysdate_local();
-+              $$= new (thd->mem_root) Item_func_sysdate_local();
-             else
--              $$= new (YYTHD->mem_root) Item_func_now_local();
-+              $$= new (thd->mem_root) Item_func_now_local();
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-             Lex->safe_to_cache_query=0;
-@@ -7785,42 +7757,42 @@
-         | SYSDATE '(' expr ')'
-           {
-             if (global_system_variables.sysdate_is_now == 0)
--              $$= new (YYTHD->mem_root) Item_func_sysdate_local($3);
-+              $$= new (thd->mem_root) Item_func_sysdate_local($3);
-             else
--              $$= new (YYTHD->mem_root) Item_func_now_local($3);
-+              $$= new (thd->mem_root) Item_func_now_local($3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-             Lex->safe_to_cache_query=0;
-           }
-         | TIMESTAMP_ADD '(' interval_time_stamp ',' expr ',' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_date_add_interval($7,$5,$3,0);
-+            $$= new (thd->mem_root) Item_date_add_interval($7,$5,$3,0);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | TIMESTAMP_DIFF '(' interval_time_stamp ',' expr ',' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_timestamp_diff($5,$7,$3);
-+            $$= new (thd->mem_root) Item_func_timestamp_diff($5,$7,$3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | UTC_DATE_SYM optional_braces
-           {
--            $$= new (YYTHD->mem_root) Item_func_curdate_utc();
-+            $$= new (thd->mem_root) Item_func_curdate_utc();
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-             Lex->safe_to_cache_query=0;
-           }
-         | UTC_TIME_SYM optional_braces
-           {
--            $$= new (YYTHD->mem_root) Item_func_curtime_utc();
-+            $$= new (thd->mem_root) Item_func_curtime_utc();
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-             Lex->safe_to_cache_query=0;
-           }
-         | UTC_TIMESTAMP_SYM optional_braces
-           {
--            $$= new (YYTHD->mem_root) Item_func_now_utc();
-+            $$= new (thd->mem_root) Item_func_now_utc();
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-             Lex->safe_to_cache_query=0;
-@@ -7835,62 +7807,61 @@
- function_call_conflict:
-           ASCII_SYM '(' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_ascii($3);
-+            $$= new (thd->mem_root) Item_func_ascii($3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | CHARSET '(' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_charset($3);
-+            $$= new (thd->mem_root) Item_func_charset($3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | COALESCE '(' expr_list ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_coalesce(* $3);
-+            $$= new (thd->mem_root) Item_func_coalesce(* $3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | COLLATION_SYM '(' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_collation($3);
-+            $$= new (thd->mem_root) Item_func_collation($3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | DATABASE '(' ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_database();
-+            $$= new (thd->mem_root) Item_func_database();
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-             Lex->safe_to_cache_query=0;
-           }
-         | IF '(' expr ',' expr ',' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_if($3,$5,$7);
-+            $$= new (thd->mem_root) Item_func_if($3,$5,$7);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | MICROSECOND_SYM '(' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_microsecond($3);
-+            $$= new (thd->mem_root) Item_func_microsecond($3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | MOD_SYM '(' expr ',' expr ')'
-           {
--            $$ = new (YYTHD->mem_root) Item_func_mod($3, $5);
-+            $$ = new (thd->mem_root) Item_func_mod($3, $5);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | OLD_PASSWORD '(' expr ')'
-           {
--            $$=  new (YYTHD->mem_root) Item_func_old_password($3);
-+            $$=  new (thd->mem_root) Item_func_old_password($3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | PASSWORD '(' expr ')'
-           {
--            THD *thd= YYTHD;
-             Item* i1;
-             if (thd->variables.old_passwords)
-               i1= new (thd->mem_root) Item_func_old_password($3);
-@@ -7902,31 +7873,30 @@
-           }
-         | QUARTER_SYM '(' expr ')'
-           {
--            $$ = new (YYTHD->mem_root) Item_func_quarter($3);
-+            $$ = new (thd->mem_root) Item_func_quarter($3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | REPEAT_SYM '(' expr ',' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_repeat($3,$5);
-+            $$= new (thd->mem_root) Item_func_repeat($3,$5);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | REPLACE '(' expr ',' expr ',' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_replace($3,$5,$7);
-+            $$= new (thd->mem_root) Item_func_replace($3,$5,$7);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | TRUNCATE_SYM '(' expr ',' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_round($3,$5,1);
-+            $$= new (thd->mem_root) Item_func_round($3,$5,1);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | WEEK_SYM '(' expr ')'
-           {
--            THD *thd= YYTHD;
-             Item *i1= new (thd->mem_root) Item_int((char*) "0",
-                                            thd->variables.default_week_format,
-                                                    1);
-@@ -7938,7 +7908,7 @@
-           }
-         | WEEK_SYM '(' expr ',' expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_func_week($3,$5);
-+            $$= new (thd->mem_root) Item_func_week($3,$5);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-@@ -7960,52 +7930,52 @@
- geometry_function:
-           CONTAINS_SYM '(' expr ',' expr ')'
-           {
--            $$= GEOM_NEW(YYTHD,
-+            $$= GEOM_NEW(thd,
-                          Item_func_spatial_rel($3, $5,
-                                                Item_func::SP_CONTAINS_FUNC));
-           }
-         | GEOMETRYCOLLECTION '(' expr_list ')'
-           {
--            $$= GEOM_NEW(YYTHD,
-+            $$= GEOM_NEW(thd,
-                          Item_func_spatial_collection(* $3,
-                            Geometry::wkb_geometrycollection,
-                            Geometry::wkb_point));
-           }
-         | LINESTRING '(' expr_list ')'
-           {
--            $$= GEOM_NEW(YYTHD,
-+            $$= GEOM_NEW(thd,
-                          Item_func_spatial_collection(* $3,
-                            Geometry::wkb_linestring,
-                            Geometry::wkb_point));
-           }
-         | MULTILINESTRING '(' expr_list ')'
-           {
--            $$= GEOM_NEW(YYTHD,
-+            $$= GEOM_NEW(thd,
-                          Item_func_spatial_collection(* $3,
-                            Geometry::wkb_multilinestring,
-                            Geometry::wkb_linestring));
-           }
-         | MULTIPOINT '(' expr_list ')'
-           {
--            $$= GEOM_NEW(YYTHD,
-+            $$= GEOM_NEW(thd,
-                          Item_func_spatial_collection(* $3,
-                            Geometry::wkb_multipoint,
-                            Geometry::wkb_point));
-           }
-         | MULTIPOLYGON '(' expr_list ')'
-           {
--            $$= GEOM_NEW(YYTHD,
-+            $$= GEOM_NEW(thd,
-                          Item_func_spatial_collection(* $3,
-                            Geometry::wkb_multipolygon,
-                            Geometry::wkb_polygon));
-           }
-         | POINT_SYM '(' expr ',' expr ')'
-           {
--            $$= GEOM_NEW(YYTHD, Item_func_point($3,$5));
-+            $$= GEOM_NEW(thd, Item_func_point($3,$5));
-           }
-         | POLYGON '(' expr_list ')'
-           {
--            $$= GEOM_NEW(YYTHD,
-+            $$= GEOM_NEW(thd,
-                          Item_func_spatial_collection(* $3,
-                            Geometry::wkb_polygon,
-                            Geometry::wkb_linestring));
-@@ -8043,7 +8013,6 @@
-           }
-           opt_udf_expr_list ')'
-           {
--            THD *thd= YYTHD;
-             Create_func *builder;
-             Item *item= NULL;
- 
-@@ -8097,7 +8066,6 @@
-           }
-         | ident '.' ident '(' opt_expr_list ')'
-           {
--            THD *thd= YYTHD;
-             Create_qfunc *builder;
-             Item *item= NULL;
- 
-@@ -8161,7 +8129,7 @@
- udf_expr_list:
-           udf_expr
-           {
--            $$= new (YYTHD->mem_root) List<Item>;
-+            $$= new (thd->mem_root) List<Item>;
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-             $$->push_back($1);
-@@ -8194,7 +8162,7 @@
-                remember_name we may get quoted or escaped names.
-             */
-             else if ($2->type() != Item::FIELD_ITEM)
--              $2->set_name($1, (uint) ($3 - $1), YYTHD->charset());
-+              $2->set_name($1, (uint) ($3 - $1), thd->charset());
-             $$= $2;
-           }
-         ;
-@@ -8202,46 +8170,46 @@
- sum_expr:
-           AVG_SYM '(' in_sum_expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_sum_avg($3);
-+            $$= new (thd->mem_root) Item_sum_avg($3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | AVG_SYM '(' DISTINCT in_sum_expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_sum_avg_distinct($4);
-+            $$= new (thd->mem_root) Item_sum_avg_distinct($4);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | BIT_AND  '(' in_sum_expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_sum_and($3);
-+            $$= new (thd->mem_root) Item_sum_and($3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | BIT_OR  '(' in_sum_expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_sum_or($3);
-+            $$= new (thd->mem_root) Item_sum_or($3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | BIT_XOR  '(' in_sum_expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_sum_xor($3);
-+            $$= new (thd->mem_root) Item_sum_xor($3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | COUNT_SYM '(' opt_all '*' ')'
-           {
--            Item *item= new (YYTHD->mem_root) Item_int((int32) 0L,1);
-+            Item *item= new (thd->mem_root) Item_int((int32) 0L,1);
-             if (item == NULL)
-               MYSQL_YYABORT;
--            $$= new (YYTHD->mem_root) Item_sum_count(item);
-+            $$= new (thd->mem_root) Item_sum_count(item);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | COUNT_SYM '(' in_sum_expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_sum_count($3);
-+            $$= new (thd->mem_root) Item_sum_count($3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-@@ -8251,13 +8219,13 @@
-           { Select->in_sum_expr--; }
-           ')'
-           {
--            $$= new (YYTHD->mem_root) Item_sum_count_distinct(* $5);
-+            $$= new (thd->mem_root) Item_sum_count_distinct(* $5);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | MIN_SYM '(' in_sum_expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_sum_min($3);
-+            $$= new (thd->mem_root) Item_sum_min($3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-@@ -8268,55 +8236,55 @@
-         */
-         | MIN_SYM '(' DISTINCT in_sum_expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_sum_min($4);
-+            $$= new (thd->mem_root) Item_sum_min($4);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | MAX_SYM '(' in_sum_expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_sum_max($3);
-+            $$= new (thd->mem_root) Item_sum_max($3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | MAX_SYM '(' DISTINCT in_sum_expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_sum_max($4);
-+            $$= new (thd->mem_root) Item_sum_max($4);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | STD_SYM '(' in_sum_expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_sum_std($3, 0);
-+            $$= new (thd->mem_root) Item_sum_std($3, 0);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | VARIANCE_SYM '(' in_sum_expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_sum_variance($3, 0);
-+            $$= new (thd->mem_root) Item_sum_variance($3, 0);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | STDDEV_SAMP_SYM '(' in_sum_expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_sum_std($3, 1);
-+            $$= new (thd->mem_root) Item_sum_std($3, 1);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | VAR_SAMP_SYM '(' in_sum_expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_sum_variance($3, 1);
-+            $$= new (thd->mem_root) Item_sum_variance($3, 1);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | SUM_SYM '(' in_sum_expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_sum_sum($3);
-+            $$= new (thd->mem_root) Item_sum_sum($3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | SUM_SYM '(' DISTINCT in_sum_expr ')'
-           {
--            $$= new (YYTHD->mem_root) Item_sum_sum_distinct($4);
-+            $$= new (thd->mem_root) Item_sum_sum_distinct($4);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-@@ -8328,7 +8296,7 @@
-           {
-             SELECT_LEX *sel= Select;
-             sel->in_sum_expr--;
--            $$= new (YYTHD->mem_root)
-+            $$= new (thd->mem_root)
-                   Item_func_group_concat(Lex->current_context(), $3, $5,
-                                          sel->gorder_list, $7);
-             if ($$ == NULL)
-@@ -8357,7 +8325,7 @@
-           ident_or_text SET_VAR expr
-           {
-             Item_func_set_user_var *item;
--            $$= item= new (YYTHD->mem_root) Item_func_set_user_var($1, $3);
-+            $$= item= new (thd->mem_root) Item_func_set_user_var($1, $3);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-             LEX *lex= Lex;
-@@ -8366,7 +8334,7 @@
-           }
-         | ident_or_text
-           {
--            $$= new (YYTHD->mem_root) Item_func_get_user_var($1);
-+            $$= new (thd->mem_root) Item_func_get_user_var($1);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-             LEX *lex= Lex;
-@@ -8380,7 +8348,7 @@
-               my_parse_error(ER(ER_SYNTAX_ERROR));
-               MYSQL_YYABORT;
-             }
--            if (!($$= get_system_var(YYTHD, $2, $3, $4)))
-+            if (!($$= get_system_var(thd, $2, $3, $4)))
-               MYSQL_YYABORT;
-             if (!((Item_func_get_system_var*) $$)->is_written_to_binlog())
-               Lex->set_stmt_unsafe();
-@@ -8395,7 +8363,7 @@
- opt_gconcat_separator:
-           /* empty */
-           {
--            $$= new (YYTHD->mem_root) String(",", 1, &my_charset_latin1);
-+            $$= new (thd->mem_root) String(",", 1, &my_charset_latin1);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-@@ -8422,9 +8390,9 @@
- 
- gorder_list:
-           gorder_list ',' order_ident order_dir
--          { if (add_gorder_to_list(YYTHD, $3,(bool) $4)) MYSQL_YYABORT; }
-+          { if (add_gorder_to_list(thd, $3,(bool) $4)) MYSQL_YYABORT; }
-         | order_ident order_dir
--          { if (add_gorder_to_list(YYTHD, $1,(bool) $2)) MYSQL_YYABORT; }
-+          { if (add_gorder_to_list(thd, $1,(bool) $2)) MYSQL_YYABORT; }
-         ;
- 
- in_sum_expr:
-@@ -8477,7 +8445,7 @@
- expr_list:
-           expr
-           {
--            $$= new (YYTHD->mem_root) List<Item>;
-+            $$= new (thd->mem_root) List<Item>;
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-             $$->push_back($1);
-@@ -8497,7 +8465,7 @@
- ident_list:
-           simple_ident
-           {
--            $$= new (YYTHD->mem_root) List<Item>;
-+            $$= new (thd->mem_root) List<Item>;
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-             $$->push_back($1);
-@@ -8595,7 +8563,7 @@
-           {
-             MYSQL_YYABORT_UNLESS($1 && $3);
-             /* Change the current name resolution context to a local context. */
--            if (push_new_name_resolution_context(YYTHD, $1, $3))
-+            if (push_new_name_resolution_context(thd, $1, $3))
-               MYSQL_YYABORT;
-             Select->parsing_place= IN_ON;
-           }
-@@ -8610,7 +8578,7 @@
-           {
-             MYSQL_YYABORT_UNLESS($1 && $3);
-             /* Change the current name resolution context to a local context. */
--            if (push_new_name_resolution_context(YYTHD, $1, $3))
-+            if (push_new_name_resolution_context(thd, $1, $3))
-               MYSQL_YYABORT;
-             Select->parsing_place= IN_ON;
-           }
-@@ -8640,7 +8608,7 @@
-           {
-             MYSQL_YYABORT_UNLESS($1 && $5);
-             /* Change the current name resolution context to a local context. */
--            if (push_new_name_resolution_context(YYTHD, $1, $5))
-+            if (push_new_name_resolution_context(thd, $1, $5))
-               MYSQL_YYABORT;
-             Select->parsing_place= IN_ON;
-           }
-@@ -8676,7 +8644,7 @@
-           {
-             MYSQL_YYABORT_UNLESS($1 && $5);
-             /* Change the current name resolution context to a local context. */
--            if (push_new_name_resolution_context(YYTHD, $1, $5))
-+            if (push_new_name_resolution_context(thd, $1, $5))
-               MYSQL_YYABORT;
-             Select->parsing_place= IN_ON;
-           }
-@@ -8724,7 +8692,7 @@
-           }
-           table_ident opt_table_alias opt_key_definition
-           {
--            if (!($$= Select->add_table_to_list(YYTHD, $2, $3,
-+            if (!($$= Select->add_table_to_list(thd, $2, $3,
-                                                 Select->get_table_join_options(),
-                                                 Lex->lock_option,
-                                                 Select->pop_index_hints())))
-@@ -8922,7 +8890,7 @@
- 
- opt_index_hints_list:
-           /* empty */
--        | { Select->alloc_index_hints(YYTHD); } index_hints_list
-+        | { Select->alloc_index_hints(thd); } index_hints_list
-         ;
- 
- opt_key_definition:
-@@ -8931,15 +8899,15 @@
-         ;
- 
- opt_key_usage_list:
--          /* empty */ { Select->add_index_hint(YYTHD, NULL, 0); }
-+          /* empty */ { Select->add_index_hint(thd, NULL, 0); }
-         | key_usage_list {}
-         ;
- 
- key_usage_element:
-           ident
--          { Select->add_index_hint(YYTHD, $1.str, $1.length); }
-+          { Select->add_index_hint(thd, $1.str, $1.length); }
-         | PRIMARY_SYM
--          { Select->add_index_hint(YYTHD, (char *)"PRIMARY", 7); }
-+          { Select->add_index_hint(thd, (char *)"PRIMARY", 7); }
-         ;
- 
- key_usage_list:
-@@ -8952,7 +8920,7 @@
-           {
-             if (!($$= new List<String>))
-               MYSQL_YYABORT;
--            String *s= new (YYTHD->mem_root) String((const char *) $1.str,
-+            String *s= new (thd->mem_root) String((const char *) $1.str,
-                                                     $1.length,
-                                                     system_charset_info);
-             if (s == NULL)
-@@ -8961,7 +8929,7 @@
-           }
-         | using_list ',' ident
-           {
--            String *s= new (YYTHD->mem_root) String((const char *) $3.str,
-+            String *s= new (thd->mem_root) String((const char *) $3.str,
-                                                     $3.length,
-                                                     system_charset_info);
-             if (s == NULL)
-@@ -9002,7 +8970,7 @@
-                                     implementation without changing its
-                                     resolution.
-                                   */
--                                  WARN_DEPRECATED(yythd, VER_CELOSIA, "FRAC_SECOND", "MICROSECOND");
-+                                  WARN_DEPRECATED(thd, VER_CELOSIA, "FRAC_SECOND", "MICROSECOND");
-                                 }
- 	;
- 
-@@ -9086,7 +9054,6 @@
-           }
-         | /* empty */
-           {
--            THD *thd= YYTHD;
-             Lex->escape_used= FALSE;
-             $$= ((thd->variables.sql_mode & MODE_NO_BACKSLASH_ESCAPES) ?
-                  new (thd->mem_root) Item_string("", 0, &my_charset_latin1) :
-@@ -9107,9 +9074,9 @@
- 
- group_list:
-           group_list ',' order_ident order_dir
--          { if (add_group_to_list(YYTHD, $3,(bool) $4)) MYSQL_YYABORT; }
-+          { if (add_group_to_list(thd, $3,(bool) $4)) MYSQL_YYABORT; }
-         | order_ident order_dir
--          { if (add_group_to_list(YYTHD, $1,(bool) $2)) MYSQL_YYABORT; }
-+          { if (add_group_to_list(thd, $1,(bool) $2)) MYSQL_YYABORT; }
-         ;
- 
- olap_opt:
-@@ -9156,7 +9123,6 @@
- alter_order_item:
-           simple_ident_nospvar order_dir
-           {
--            THD *thd= YYTHD;
-             bool ascending= ($2 == 1) ? true : false;
-             if (add_order_to_list(thd, $1, ascending))
-               MYSQL_YYABORT;
-@@ -9209,9 +9175,9 @@
- 
- order_list:
-           order_list ',' order_ident order_dir
--          { if (add_order_to_list(YYTHD, $3,(bool) $4)) MYSQL_YYABORT; }
-+          { if (add_order_to_list(thd, $3,(bool) $4)) MYSQL_YYABORT; }
-         | order_ident order_dir
--          { if (add_order_to_list(YYTHD, $1,(bool) $2)) MYSQL_YYABORT; }
-+          { if (add_order_to_list(thd, $1,(bool) $2)) MYSQL_YYABORT; }
-         ;
- 
- order_dir:
-@@ -9271,19 +9237,19 @@
-         }
-         | ULONGLONG_NUM
-           {
--            $$= new (YYTHD->mem_root) Item_uint($1.str, $1.length);
-+            $$= new (thd->mem_root) Item_uint($1.str, $1.length);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | LONG_NUM
-           {
--            $$= new (YYTHD->mem_root) Item_uint($1.str, $1.length);
-+            $$= new (thd->mem_root) Item_uint($1.str, $1.length);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | NUM
-           {
--            $$= new (YYTHD->mem_root) Item_uint($1.str, $1.length);
-+            $$= new (thd->mem_root) Item_uint($1.str, $1.length);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-@@ -9365,7 +9331,7 @@
-             lex->proc_list.elements=0;
-             lex->proc_list.first=0;
-             lex->proc_list.next= &lex->proc_list.first;
--            Item_field *item= new (YYTHD->mem_root)
-+            Item_field *item= new (thd->mem_root)
-                                 Item_field(&lex->current_select->context,
-                                            NULL, NULL, $2.str);
-             if (item == NULL)
-@@ -9390,8 +9356,7 @@
- procedure_item:
-           remember_name expr remember_end
-           {
--            THD *thd= YYTHD;
--
-+            
-             if (add_proc_to_list(thd, $2))
-               MYSQL_YYABORT;
-             if (!$2->name)
-@@ -9560,7 +9525,6 @@
-           }
-         | DROP FUNCTION_SYM if_exists ident '.' ident
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             sp_name *spname;
-             if ($4.str && check_db_name(&$4))
-@@ -9583,7 +9547,6 @@
-           }
-         | DROP FUNCTION_SYM if_exists ident
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             LEX_STRING db= {0, 0};
-             sp_name *spname;
-@@ -9664,7 +9627,7 @@
- table_name:
-           table_ident
-           {
--            if (!Select->add_table_to_list(YYTHD, $1, NULL, TL_OPTION_UPDATING))
-+            if (!Select->add_table_to_list(thd, $1, NULL, TL_OPTION_UPDATING))
-               MYSQL_YYABORT;
-           }
-         ;
-@@ -9677,7 +9640,7 @@
- table_alias_ref:
-           table_ident_opt_wild
-           {
--            if (!Select->add_table_to_list(YYTHD, $1, NULL,
-+            if (!Select->add_table_to_list(thd, $1, NULL,
-                                            TL_OPTION_UPDATING | TL_OPTION_ALIAS,
-                                            Lex->lock_option ))
-               MYSQL_YYABORT;
-@@ -9868,7 +9831,7 @@
-           expr { $$= $1;}
-         | DEFAULT
-           {
--            $$= new (YYTHD->mem_root) Item_default_value(Lex->current_context());
-+            $$= new (thd->mem_root) Item_default_value(Lex->current_context());
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-@@ -9922,7 +9885,7 @@
- update_elem:
-           simple_ident_nospvar equal expr_or_default
-           {
--            if (add_item_to_list(YYTHD, $1) || add_value_to_list(YYTHD, $3))
-+            if (add_item_to_list(thd, $1) || add_value_to_list(thd, $3))
-               MYSQL_YYABORT;
-           }
-         ;
-@@ -9965,7 +9928,7 @@
- single_multi:
-           FROM table_ident
-           {
--            if (!Select->add_table_to_list(YYTHD, $2, NULL, TL_OPTION_UPDATING,
-+            if (!Select->add_table_to_list(thd, $2, NULL, TL_OPTION_UPDATING,
-                                            Lex->lock_option))
-               MYSQL_YYABORT;
-           }
-@@ -9998,7 +9961,7 @@
-             Table_ident *ti= new Table_ident($1);
-             if (ti == NULL)
-               MYSQL_YYABORT;
--            if (!Select->add_table_to_list(YYTHD,
-+            if (!Select->add_table_to_list(thd,
-                                            ti,
-                                            $3,
-                                            TL_OPTION_UPDATING | TL_OPTION_ALIAS,
-@@ -10007,10 +9970,10 @@
-           }
-         | ident '.' ident opt_wild opt_table_alias
-           {
--            Table_ident *ti= new Table_ident(YYTHD, $1, $3, 0);
-+            Table_ident *ti= new Table_ident(thd, $1, $3, 0);
-             if (ti == NULL)
-               MYSQL_YYABORT;
--            if (!Select->add_table_to_list(YYTHD,
-+            if (!Select->add_table_to_list(thd,
-                                            ti,
-                                            $5, 
-                                            TL_OPTION_UPDATING | TL_OPTION_ALIAS,
-@@ -10130,7 +10093,7 @@
-            {
-              LEX *lex= Lex;
-              lex->sql_command= SQLCOM_SHOW_DATABASES;
--             if (prepare_schema_table(YYTHD, lex, 0, SCH_SCHEMATA))
-+             if (prepare_schema_table(thd, lex, 0, SCH_SCHEMATA))
-                MYSQL_YYABORT;
-            }
-          | opt_full TABLES opt_db wild_and_where
-@@ -10138,7 +10101,7 @@
-              LEX *lex= Lex;
-              lex->sql_command= SQLCOM_SHOW_TABLES;
-              lex->select_lex.db= $3;
--             if (prepare_schema_table(YYTHD, lex, 0, SCH_TABLE_NAMES))
-+             if (prepare_schema_table(thd, lex, 0, SCH_TABLE_NAMES))
-                MYSQL_YYABORT;
-            }
-          | opt_full TRIGGERS_SYM opt_db wild_and_where
-@@ -10146,7 +10109,7 @@
-              LEX *lex= Lex;
-              lex->sql_command= SQLCOM_SHOW_TRIGGERS;
-              lex->select_lex.db= $3;
--             if (prepare_schema_table(YYTHD, lex, 0, SCH_TRIGGERS))
-+             if (prepare_schema_table(thd, lex, 0, SCH_TRIGGERS))
-                MYSQL_YYABORT;
-            }
-          | EVENTS_SYM opt_db wild_and_where
-@@ -10154,7 +10117,7 @@
-              LEX *lex= Lex;
-              lex->sql_command= SQLCOM_SHOW_EVENTS;
-              lex->select_lex.db= $2;
--             if (prepare_schema_table(YYTHD, lex, 0, SCH_EVENTS))
-+             if (prepare_schema_table(thd, lex, 0, SCH_EVENTS))
-                MYSQL_YYABORT;
-            }
-          | TABLE_SYM STATUS_SYM opt_db wild_and_where
-@@ -10162,7 +10125,7 @@
-              LEX *lex= Lex;
-              lex->sql_command= SQLCOM_SHOW_TABLE_STATUS;
-              lex->select_lex.db= $3;
--             if (prepare_schema_table(YYTHD, lex, 0, SCH_TABLES))
-+             if (prepare_schema_table(thd, lex, 0, SCH_TABLES))
-                MYSQL_YYABORT;
-            }
-         | OPEN_SYM TABLES opt_db wild_and_where
-@@ -10170,22 +10133,22 @@
-             LEX *lex= Lex;
-             lex->sql_command= SQLCOM_SHOW_OPEN_TABLES;
-             lex->select_lex.db= $3;
--            if (prepare_schema_table(YYTHD, lex, 0, SCH_OPEN_TABLES))
-+            if (prepare_schema_table(thd, lex, 0, SCH_OPEN_TABLES))
-               MYSQL_YYABORT;
-           }
-         | opt_full PLUGIN_SYM
-           {
-             LEX *lex= Lex;
--            WARN_DEPRECATED(yythd, "6.0", "SHOW PLUGIN", "'SHOW PLUGINS'");
-+            WARN_DEPRECATED(thd, "6.0", "SHOW PLUGIN", "'SHOW PLUGINS'");
-             lex->sql_command= SQLCOM_SHOW_PLUGINS;
--            if (prepare_schema_table(YYTHD, lex, 0, SCH_PLUGINS))
-+            if (prepare_schema_table(thd, lex, 0, SCH_PLUGINS))
-               MYSQL_YYABORT;
-           }
-         | PLUGINS_SYM
-           {
-             LEX *lex= Lex;
-             lex->sql_command= SQLCOM_SHOW_PLUGINS;
--            if (prepare_schema_table(YYTHD, lex, 0, SCH_PLUGINS))
-+            if (prepare_schema_table(thd, lex, 0, SCH_PLUGINS))
-               MYSQL_YYABORT;
-           }
-         | ENGINE_SYM known_storage_engines show_engine_param
-@@ -10198,7 +10161,7 @@
-             lex->sql_command= SQLCOM_SHOW_FIELDS;
-             if ($5)
-               $4->change_db($5);
--            if (prepare_schema_table(YYTHD, lex, $4, SCH_COLUMNS))
-+            if (prepare_schema_table(thd, lex, $4, SCH_COLUMNS))
-               MYSQL_YYABORT;
-           }
-         | NEW_SYM MASTER_SYM FOR_SYM SLAVE
-@@ -10233,7 +10196,7 @@
-             lex->sql_command= SQLCOM_SHOW_KEYS;
-             if ($4)
-               $3->change_db($4);
--            if (prepare_schema_table(YYTHD, lex, $3, SCH_STATISTICS))
-+            if (prepare_schema_table(thd, lex, $3, SCH_STATISTICS))
-               MYSQL_YYABORT;
-           }
-         | COLUMN_SYM TYPES_SYM
-@@ -10245,15 +10208,15 @@
-           {
-             LEX *lex=Lex;
-             lex->sql_command= SQLCOM_SHOW_STORAGE_ENGINES;
--            WARN_DEPRECATED(yythd, "6.0", "SHOW TABLE TYPES", "'SHOW [STORAGE] ENGINES'");
--            if (prepare_schema_table(YYTHD, lex, 0, SCH_ENGINES))
-+            WARN_DEPRECATED(thd, "6.0", "SHOW TABLE TYPES", "'SHOW [STORAGE] ENGINES'");
-+            if (prepare_schema_table(thd, lex, 0, SCH_ENGINES))
-               MYSQL_YYABORT;
-           }
-         | opt_storage ENGINES_SYM
-           {
-             LEX *lex=Lex;
-             lex->sql_command= SQLCOM_SHOW_STORAGE_ENGINES;
--            if (prepare_schema_table(YYTHD, lex, 0, SCH_ENGINES))
-+            if (prepare_schema_table(thd, lex, 0, SCH_ENGINES))
-               MYSQL_YYABORT;
-           }
-         | AUTHORS_SYM
-@@ -10285,7 +10248,7 @@
-           { 
-             LEX *lex= Lex;
-             lex->sql_command= SQLCOM_SHOW_PROFILE;
--            if (prepare_schema_table(YYTHD, lex, NULL, SCH_PROFILES) != 0)
-+            if (prepare_schema_table(thd, lex, NULL, SCH_PROFILES) != 0)
-               YYABORT;
-           }
-         | opt_var_type STATUS_SYM wild_and_where
-@@ -10293,7 +10256,7 @@
-             LEX *lex= Lex;
-             lex->sql_command= SQLCOM_SHOW_STATUS;
-             lex->option_type= $1;
--            if (prepare_schema_table(YYTHD, lex, 0, SCH_STATUS))
-+            if (prepare_schema_table(thd, lex, 0, SCH_STATUS))
-               MYSQL_YYABORT;
-           }
-         | INNOBASE_SYM STATUS_SYM
-@@ -10301,24 +10264,24 @@
-             LEX *lex= Lex;
-             lex->sql_command = SQLCOM_SHOW_ENGINE_STATUS;
-             if (!(lex->create_info.db_type=
--                  ha_resolve_by_legacy_type(YYTHD, DB_TYPE_INNODB)))
-+                  ha_resolve_by_legacy_type(thd, DB_TYPE_INNODB)))
-             {
-               my_error(ER_UNKNOWN_STORAGE_ENGINE, MYF(0), "InnoDB");
-               MYSQL_YYABORT;
-             }
--            WARN_DEPRECATED(yythd, "6.0", "SHOW INNODB STATUS", "'SHOW ENGINE INNODB STATUS'");
-+            WARN_DEPRECATED(thd, "6.0", "SHOW INNODB STATUS", "'SHOW ENGINE INNODB STATUS'");
-           }
-         | MUTEX_SYM STATUS_SYM
-           {
-             LEX *lex= Lex;
-             lex->sql_command = SQLCOM_SHOW_ENGINE_MUTEX;
-             if (!(lex->create_info.db_type=
--                  ha_resolve_by_legacy_type(YYTHD, DB_TYPE_INNODB)))
-+                  ha_resolve_by_legacy_type(thd, DB_TYPE_INNODB)))
-             {
-               my_error(ER_UNKNOWN_STORAGE_ENGINE, MYF(0), "InnoDB");
-               MYSQL_YYABORT;
-             }
--            WARN_DEPRECATED(yythd, "6.0", "SHOW MUTEX STATUS", "'SHOW ENGINE INNODB MUTEX'");
-+            WARN_DEPRECATED(thd, "6.0", "SHOW MUTEX STATUS", "'SHOW ENGINE INNODB MUTEX'");
-           }
-         | opt_full PROCESSLIST_SYM
-           { Lex->sql_command= SQLCOM_SHOW_PROCESSLIST;}
-@@ -10327,21 +10290,21 @@
-             LEX *lex= Lex;
-             lex->sql_command= SQLCOM_SHOW_VARIABLES;
-             lex->option_type= $1;
--            if (prepare_schema_table(YYTHD, lex, 0, SCH_VARIABLES))
-+            if (prepare_schema_table(thd, lex, 0, SCH_VARIABLES))
-               MYSQL_YYABORT;
-           }
-         | charset wild_and_where
-           {
-             LEX *lex= Lex;
-             lex->sql_command= SQLCOM_SHOW_CHARSETS;
--            if (prepare_schema_table(YYTHD, lex, 0, SCH_CHARSETS))
-+            if (prepare_schema_table(thd, lex, 0, SCH_CHARSETS))
-               MYSQL_YYABORT;
-           }
-         | COLLATION_SYM wild_and_where
-           {
-             LEX *lex= Lex;
-             lex->sql_command= SQLCOM_SHOW_COLLATIONS;
--            if (prepare_schema_table(YYTHD, lex, 0, SCH_COLLATIONS))
-+            if (prepare_schema_table(thd, lex, 0, SCH_COLLATIONS))
-               MYSQL_YYABORT;
-           }
-         | GRANTS
-@@ -10371,7 +10334,7 @@
-           {
-             LEX *lex= Lex;
-             lex->sql_command = SQLCOM_SHOW_CREATE;
--            if (!lex->select_lex.add_table_to_list(YYTHD, $3, NULL,0))
-+            if (!lex->select_lex.add_table_to_list(thd, $3, NULL,0))
-               MYSQL_YYABORT;
-             lex->only_view= 0;
-             lex->create_info.storage_media= HA_SM_DEFAULT;
-@@ -10380,7 +10343,7 @@
-           {
-             LEX *lex= Lex;
-             lex->sql_command = SQLCOM_SHOW_CREATE;
--            if (!lex->select_lex.add_table_to_list(YYTHD, $3, NULL, 0))
-+            if (!lex->select_lex.add_table_to_list(thd, $3, NULL, 0))
-               MYSQL_YYABORT;
-             lex->only_view= 1;
-           }
-@@ -10416,14 +10379,14 @@
-           {
-             LEX *lex= Lex;
-             lex->sql_command= SQLCOM_SHOW_STATUS_PROC;
--            if (prepare_schema_table(YYTHD, lex, 0, SCH_PROCEDURES))
-+            if (prepare_schema_table(thd, lex, 0, SCH_PROCEDURES))
-               MYSQL_YYABORT;
-           }
-         | FUNCTION_SYM STATUS_SYM wild_and_where
-           {
-             LEX *lex= Lex;
-             lex->sql_command= SQLCOM_SHOW_STATUS_FUNC;
--            if (prepare_schema_table(YYTHD, lex, 0, SCH_PROCEDURES))
-+            if (prepare_schema_table(thd, lex, 0, SCH_PROCEDURES))
-               MYSQL_YYABORT;
-           }
-         | PROCEDURE CODE_SYM sp_name
-@@ -10501,7 +10464,7 @@
-           /* empty */
-         | LIKE TEXT_STRING_sys
-           {
--            Lex->wild= new (YYTHD->mem_root) String($2.str, $2.length,
-+            Lex->wild= new (thd->mem_root) String($2.str, $2.length,
-                                                     system_charset_info);
-             if (Lex->wild == NULL)
-               MYSQL_YYABORT;
-@@ -10525,7 +10488,7 @@
-             lex->sql_command= SQLCOM_SHOW_FIELDS;
-             lex->select_lex.db= 0;
-             lex->verbose= 0;
--            if (prepare_schema_table(YYTHD, lex, $2, SCH_COLUMNS))
-+            if (prepare_schema_table(thd, lex, $2, SCH_COLUMNS))
-               MYSQL_YYABORT;
-           }
-           opt_describe_column {}
-@@ -10554,7 +10517,7 @@
-         | text_string { Lex->wild= $1; }
-         | ident
-           {
--            Lex->wild= new (YYTHD->mem_root) String((const char*) $1.str,
-+            Lex->wild= new (thd->mem_root) String((const char*) $1.str,
-                                                     $1.length,
-                                                     system_charset_info);
-             if (Lex->wild == NULL)
-@@ -10697,7 +10660,6 @@
- load:
-           LOAD DATA_SYM
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
- 
-             if (lex->sphead)
-@@ -10711,7 +10673,7 @@
-         | LOAD TABLE_SYM table_ident FROM MASTER_SYM
-           {
-             LEX *lex=Lex;
--            WARN_DEPRECATED(yythd, "6.0", "LOAD TABLE FROM MASTER",
-+            WARN_DEPRECATED(thd, "6.0", "LOAD TABLE FROM MASTER",
-                             "MySQL Administrator (mysqldump, mysql)");
-             if (lex->sphead)
-             {
-@@ -10719,7 +10681,7 @@
-               MYSQL_YYABORT;
-             }
-             lex->sql_command = SQLCOM_LOAD_MASTER_TABLE;
--            if (!Select->add_table_to_list(YYTHD, $3, NULL, TL_OPTION_UPDATING))
-+            if (!Select->add_table_to_list(thd, $3, NULL, TL_OPTION_UPDATING))
-               MYSQL_YYABORT;
-           }
-         ;
-@@ -10739,7 +10701,7 @@
-           opt_duplicate INTO TABLE_SYM table_ident
-           {
-             LEX *lex=Lex;
--            if (!Select->add_table_to_list(YYTHD, $9, NULL, TL_OPTION_UPDATING,
-+            if (!Select->add_table_to_list(thd, $9, NULL, TL_OPTION_UPDATING,
-                                            lex->lock_option))
-               MYSQL_YYABORT;
-             lex->field_list.empty();
-@@ -10754,7 +10716,7 @@
-         | FROM MASTER_SYM
-           {
-             Lex->sql_command = SQLCOM_LOAD_MASTER_DATA;
--            WARN_DEPRECATED(yythd, "6.0", "LOAD DATA FROM MASTER",
-+            WARN_DEPRECATED(thd, "6.0", "LOAD DATA FROM MASTER",
-                             "mysqldump or future "
-                             "BACKUP/RESTORE DATABASE facility");
-           }
-@@ -10872,7 +10834,7 @@
-           simple_ident_nospvar {$$= $1;}
-         | '@' ident_or_text
-           {
--            $$= new (YYTHD->mem_root) Item_user_var_as_out_param($2);
-+            $$= new (thd->mem_root) Item_user_var_as_out_param($2);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-@@ -10889,7 +10851,6 @@
-           TEXT_STRING
-           {
-             LEX_STRING tmp;
--            THD *thd= YYTHD;
-             CHARSET_INFO *cs_con= thd->variables.collation_connection;
-             CHARSET_INFO *cs_cli= thd->variables.character_set_client;
-             uint repertoire= thd->lex->text_string_is_7bit &&
-@@ -10915,7 +10876,7 @@
-             uint repertoire= Lex->text_string_is_7bit ?
-                              MY_REPERTOIRE_ASCII : MY_REPERTOIRE_UNICODE30;
-             DBUG_ASSERT(my_charset_is_ascii_based(national_charset_info));
--            $$= new (YYTHD->mem_root) Item_string($1.str, $1.length,
-+            $$= new (thd->mem_root) Item_string($1.str, $1.length,
-                                                   national_charset_info,
-                                                   DERIVATION_COERCIBLE,
-                                                   repertoire);
-@@ -10924,7 +10885,7 @@
-           }
-         | UNDERSCORE_CHARSET TEXT_STRING
-           {
--            Item_string *str= new (YYTHD->mem_root) Item_string($2.str,
-+            Item_string *str= new (thd->mem_root) Item_string($2.str,
-                                                                 $2.length, $1);
-             if (str == NULL)
-               MYSQL_YYABORT;
-@@ -10943,7 +10904,7 @@
-                  If the string has been pure ASCII so far,
-                  check the new part.
-               */
--              CHARSET_INFO *cs= YYTHD->variables.collation_connection;
-+              CHARSET_INFO *cs= thd->variables.collation_connection;
-               item->collation.repertoire|= my_string_repertoire(cs,
-                                                                 $2.str,
-                                                                 $2.length);
-@@ -10954,15 +10915,15 @@
- text_string:
-           TEXT_STRING_literal
-           {
--            $$= new (YYTHD->mem_root) String($1.str,
-+            $$= new (thd->mem_root) String($1.str,
-                                              $1.length,
--                                             YYTHD->variables.collation_connection);
-+                                             thd->variables.collation_connection);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | HEX_NUM
-           {
--            Item *tmp= new (YYTHD->mem_root) Item_hex_string($1.str, $1.length);
-+            Item *tmp= new (thd->mem_root) Item_hex_string($1.str, $1.length);
-             if (tmp == NULL)
-               MYSQL_YYABORT;
-             /*
-@@ -10974,7 +10935,7 @@
-           }
-         | BIN_NUM
-           {
--            Item *tmp= new (YYTHD->mem_root) Item_bin_string($1.str, $1.length);
-+            Item *tmp= new (thd->mem_root) Item_bin_string($1.str, $1.length);
-             if (tmp == NULL)
-               MYSQL_YYABORT;
-             /*
-@@ -10989,7 +10950,6 @@
- param_marker:
-           PARAM_MARKER
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             Lex_input_stream *lip= YYLIP;
-             Item_param *item;
-@@ -11022,38 +10982,38 @@
-         | NUM_literal { $$ = $1; }
-         | NULL_SYM
-           {
--            $$ = new (YYTHD->mem_root) Item_null();
-+            $$ = new (thd->mem_root) Item_null();
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-             YYLIP->next_state= MY_LEX_OPERATOR_OR_IDENT;
-           }
-         | FALSE_SYM
-           {
--            $$= new (YYTHD->mem_root) Item_int((char*) "FALSE",0,1);
-+            $$= new (thd->mem_root) Item_int((char*) "FALSE",0,1);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | TRUE_SYM
-           {
--            $$= new (YYTHD->mem_root) Item_int((char*) "TRUE",1,1);
-+            $$= new (thd->mem_root) Item_int((char*) "TRUE",1,1);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | HEX_NUM
-           {
--            $$ = new (YYTHD->mem_root) Item_hex_string($1.str, $1.length);
-+            $$ = new (thd->mem_root) Item_hex_string($1.str, $1.length);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | BIN_NUM
-           {
--            $$= new (YYTHD->mem_root) Item_bin_string($1.str, $1.length);
-+            $$= new (thd->mem_root) Item_bin_string($1.str, $1.length);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | UNDERSCORE_CHARSET HEX_NUM
-           {
--            Item *tmp= new (YYTHD->mem_root) Item_hex_string($2.str, $2.length);
-+            Item *tmp= new (thd->mem_root) Item_hex_string($2.str, $2.length);
-             if (tmp == NULL)
-               MYSQL_YYABORT;
-             /*
-@@ -11064,7 +11024,7 @@
-             String *str= tmp->val_str((String*) 0);
- 
-             Item_string *item_str;
--            item_str= new (YYTHD->mem_root)
-+            item_str= new (thd->mem_root)
-                         Item_string(NULL, /* name will be set in select_item */
-                                     str ? str->ptr() : "",
-                                     str ? str->length() : 0,
-@@ -11082,7 +11042,7 @@
-           }
-         | UNDERSCORE_CHARSET BIN_NUM
-           {
--            Item *tmp= new (YYTHD->mem_root) Item_bin_string($2.str, $2.length);
-+            Item *tmp= new (thd->mem_root) Item_bin_string($2.str, $2.length);
-             if (tmp == NULL)
-               MYSQL_YYABORT;
-             /*
-@@ -11093,7 +11053,7 @@
-             String *str= tmp->val_str((String*) 0);
- 
-             Item_string *item_str;
--            item_str= new (YYTHD->mem_root)
-+            item_str= new (thd->mem_root)
-                         Item_string(NULL, /* name will be set in select_item */
-                                     str ? str->ptr() : "",
-                                     str ? str->length() : 0,
-@@ -11117,7 +11077,7 @@
-           NUM
-           {
-             int error;
--            $$= new (YYTHD->mem_root)
-+            $$= new (thd->mem_root)
-                   Item_int($1.str,
-                            (longlong) my_strtoll10($1.str, NULL, &error),
-                            $1.length);
-@@ -11127,7 +11087,7 @@
-         | LONG_NUM
-           {
-             int error;
--            $$= new (YYTHD->mem_root)
-+            $$= new (thd->mem_root)
-                   Item_int($1.str,
-                            (longlong) my_strtoll10($1.str, NULL, &error),
-                            $1.length);
-@@ -11136,23 +11096,23 @@
-           }
-         | ULONGLONG_NUM
-           {
--            $$= new (YYTHD->mem_root) Item_uint($1.str, $1.length);
-+            $$= new (thd->mem_root) Item_uint($1.str, $1.length);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | DECIMAL_NUM
-           {
--            $$= new (YYTHD->mem_root) Item_decimal($1.str, $1.length,
--                                                   YYTHD->charset());
--            if (($$ == NULL) || (YYTHD->is_error()))
-+            $$= new (thd->mem_root) Item_decimal($1.str, $1.length,
-+                                                   thd->charset());
-+            if (($$ == NULL) || (thd->is_error()))
-             {
-               MYSQL_YYABORT;
-             }
-           }
-         | FLOAT_NUM
-           {
--            $$= new (YYTHD->mem_root) Item_float($1.str, $1.length);
--            if (($$ == NULL) || (YYTHD->is_error()))
-+            $$= new (thd->mem_root) Item_float($1.str, $1.length);
-+            if (($$ == NULL) || (thd->is_error()))
-             {
-               MYSQL_YYABORT;
-             }
-@@ -11172,7 +11132,7 @@
-           ident '.' '*'
-           {
-             SELECT_LEX *sel= Select;
--            $$= new (YYTHD->mem_root) Item_field(Lex->current_context(),
-+            $$= new (thd->mem_root) Item_field(Lex->current_context(),
-                                                  NullS, $1.str, "*");
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-@@ -11180,7 +11140,6 @@
-           }
-         | ident '.' ident '.' '*'
-           {
--            THD *thd= YYTHD;
-             SELECT_LEX *sel= Select;
-             const char* schema= thd->client_capabilities & CLIENT_NO_SCHEMA ?
-                                   NullS : $1.str;
-@@ -11200,7 +11159,6 @@
- simple_ident:
-           ident
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             Lex_input_stream *lip= YYLIP;
-             sp_variable_t *spv;
-@@ -11251,7 +11209,6 @@
- simple_ident_nospvar:
-           ident
-           {
--            THD *thd= YYTHD;
-             SELECT_LEX *sel=Select;
-             if ((sel->parsing_place != IN_HAVING) ||
-                 (sel->get_in_sum_expr() > 0))
-@@ -11273,7 +11230,6 @@
- simple_ident_q:
-           ident '.' ident
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
- 
-             /*
-@@ -11352,7 +11308,6 @@
-           }
-         | '.' ident '.' ident
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             SELECT_LEX *sel= lex->current_select;
-             if (sel->no_table_names_allowed)
-@@ -11377,7 +11332,6 @@
-           }
-         | ident '.' ident '.' ident
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             SELECT_LEX *sel= lex->current_select;
-             const char* schema= (thd->client_capabilities & CLIENT_NO_SCHEMA ?
-@@ -11445,7 +11399,7 @@
-           }
-         | ident '.' ident
-           {
--            $$= new Table_ident(YYTHD, $1,$3,0);
-+            $$= new Table_ident(thd, $1,$3,0);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-@@ -11467,7 +11421,7 @@
-           }
-         | ident '.' ident opt_wild
-           {
--            $$= new Table_ident(YYTHD, $1,$3,0);
-+            $$= new Table_ident(thd, $1,$3,0);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-@@ -11477,7 +11431,7 @@
-           ident
-           {
-             LEX_STRING db={(char*) any_db,3};
--            $$= new Table_ident(YYTHD, db,$1,0);
-+            $$= new Table_ident(thd, db,$1,0);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-@@ -11487,8 +11441,7 @@
-           IDENT { $$= $1; }
-         | IDENT_QUOTED
-           {
--            THD *thd= YYTHD;
--
-+            
-             if (thd->charset_is_system_charset)
-             {
-               CHARSET_INFO *cs= system_charset_info;
-@@ -11516,8 +11469,6 @@
- TEXT_STRING_sys:
-           TEXT_STRING
-           {
--            THD *thd= YYTHD;
--
-             if (thd->charset_is_system_charset)
-               $$= $1;
-             else
-@@ -11532,8 +11483,6 @@
- TEXT_STRING_literal:
-           TEXT_STRING
-           {
--            THD *thd= YYTHD;
--
-             if (thd->charset_is_collation_connection)
-               $$= $1;
-             else
-@@ -11548,8 +11497,6 @@
- TEXT_STRING_filesystem:
-           TEXT_STRING
-           {
--            THD *thd= YYTHD;
--
-             if (thd->charset_is_character_set_filesystem)
-               $$= $1;
-             else
-@@ -11566,7 +11513,6 @@
-           IDENT_sys    { $$=$1; }
-         | keyword
-           {
--            THD *thd= YYTHD;
-             $$.str= thd->strmake($1.str, $1.length);
-             if ($$.str == NULL)
-               MYSQL_YYABORT;
-@@ -11578,7 +11524,6 @@
-           IDENT_sys    { $$=$1; }
-         | keyword_sp
-           {
--            THD *thd= YYTHD;
-             $$.str= thd->strmake($1.str, $1.length);
-             if ($$.str == NULL)
-               MYSQL_YYABORT;
-@@ -11595,7 +11540,6 @@
- user:
-           ident_or_text
-           {
--            THD *thd= YYTHD;
-             if (!($$=(LEX_USER*) thd->alloc(sizeof(st_lex_user))))
-               MYSQL_YYABORT;
-             $$->user = $1;
-@@ -11609,7 +11553,6 @@
-           }
-         | ident_or_text '@' ident_or_text
-           {
--            THD *thd= YYTHD;
-             if (!($$=(LEX_USER*) thd->alloc(sizeof(st_lex_user))))
-               MYSQL_YYABORT;
-             $$->user = $1; $$->host=$3;
-@@ -11628,7 +11571,7 @@
-           }
-         | CURRENT_USER optional_braces
-           {
--            if (!($$=(LEX_USER*) YYTHD->alloc(sizeof(st_lex_user))))
-+            if (!($$=(LEX_USER*) thd->alloc(sizeof(st_lex_user))))
-               MYSQL_YYABORT;
-             /* 
-               empty LEX_USER means current_user and 
-@@ -11991,7 +11934,6 @@
- 
- option_type_value:
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             Lex_input_stream *lip= YYLIP;
- 
-@@ -12022,7 +11964,6 @@
-           }
-           ext_option_value
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             Lex_input_stream *lip= YYLIP;
- 
-@@ -12105,7 +12046,6 @@
- sys_option_value:
-           option_type internal_variable_name equal set_expr_or_default
-           {
--            THD *thd= YYTHD;
-             LEX *lex= Lex;
-             LEX_STRING *name= &$2.base_name;
- 
-@@ -12117,7 +12057,7 @@
-                 my_parse_error(ER(ER_SYNTAX_ERROR));
-                 MYSQL_YYABORT;
-               }
--              if (set_trigger_new_row(YYTHD, name, $4))
-+              if (set_trigger_new_row(thd, name, $4))
-                 MYSQL_YYABORT;
-             }
-             else if ($2.var)
-@@ -12147,7 +12087,6 @@
-           }
-         | option_type TRANSACTION_SYM ISOLATION LEVEL_SYM isolation_types
-           {
--            THD *thd= YYTHD;
-             LEX *lex=Lex;
-             lex->option_type= $1;
-             Item *item= new (thd->mem_root) Item_int((int32) $5);
-@@ -12167,7 +12106,7 @@
-           '@' ident_or_text equal expr
-           {
-             Item_func_set_user_var *item;
--            item= new (YYTHD->mem_root) Item_func_set_user_var($2, $4);
-+            item= new (thd->mem_root) Item_func_set_user_var($2, $4);
-             if (item == NULL)
-               MYSQL_YYABORT;
-             set_var_user *var= new set_var_user(item);
-@@ -12177,7 +12116,6 @@
-           }
-         | '@' '@' opt_var_ident_type internal_variable_name equal set_expr_or_default
-           {
--            THD *thd= YYTHD;
-             struct sys_var_with_base tmp= $4;
-             /* Lookup if necessary: must be a system variable. */
-             if (tmp.var == NULL)
-@@ -12190,7 +12128,6 @@
-           }
-         | charset old_or_new_charset_name_or_default
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             CHARSET_INFO *cs2;
-             cs2= $2 ? $2: global_system_variables.character_set_client;
-@@ -12238,7 +12175,6 @@
-           }
-         | PASSWORD equal text_or_password
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             LEX_USER *user;
-             sp_pcontext *spc= lex->spcont;
-@@ -12278,7 +12214,6 @@
- internal_variable_name:
-           ident
-           {
--            THD *thd= YYTHD;
-             sp_pcontext *spc= thd->lex->spcont;
-             sp_variable_t *spv;
- 
-@@ -12337,7 +12272,7 @@
-             }
-             else
-             {
--              sys_var *tmp=find_sys_var(YYTHD, $3.str, $3.length);
-+              sys_var *tmp=find_sys_var(thd, $3.str, $3.length);
-               if (!tmp)
-                 MYSQL_YYABORT;
-               if (!tmp->is_struct())
-@@ -12348,7 +12283,7 @@
-           }
-         | DEFAULT '.' ident
-           {
--            sys_var *tmp=find_sys_var(YYTHD, $3.str, $3.length);
-+            sys_var *tmp=find_sys_var(thd, $3.str, $3.length);
-             if (!tmp)
-               MYSQL_YYABORT;
-             if (!tmp->is_struct())
-@@ -12370,16 +12305,16 @@
-           TEXT_STRING { $$=$1.str;}
-         | PASSWORD '(' TEXT_STRING ')'
-           {
--            $$= $3.length ? YYTHD->variables.old_passwords ?
--              Item_func_old_password::alloc(YYTHD, $3.str, $3.length) :
--              Item_func_password::alloc(YYTHD, $3.str, $3.length) :
-+            $$= $3.length ? thd->variables.old_passwords ?
-+              Item_func_old_password::alloc(thd, $3.str, $3.length) :
-+              Item_func_password::alloc(thd, $3.str, $3.length) :
-               $3.str;
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | OLD_PASSWORD '(' TEXT_STRING ')'
-           {
--            $$= $3.length ? Item_func_old_password::alloc(YYTHD, $3.str,
-+            $$= $3.length ? Item_func_old_password::alloc(thd, $3.str,
-                                                           $3.length) :
-               $3.str;
-             if ($$ == NULL)
-@@ -12393,19 +12328,19 @@
-         | DEFAULT { $$=0; }
-         | ON
-           {
--            $$=new (YYTHD->mem_root) Item_string("ON",  2, system_charset_info);
-+            $$=new (thd->mem_root) Item_string("ON",  2, system_charset_info);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | ALL
-           {
--            $$=new (YYTHD->mem_root) Item_string("ALL", 3, system_charset_info);
-+            $$=new (thd->mem_root) Item_string("ALL", 3, system_charset_info);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-         | BINARY
-           {
--            $$=new (YYTHD->mem_root) Item_string("binary", 6, system_charset_info);
-+            $$=new (thd->mem_root) Item_string("binary", 6, system_charset_info);
-             if ($$ == NULL)
-               MYSQL_YYABORT;
-           }
-@@ -12443,7 +12378,7 @@
-           table_ident opt_table_alias lock_option
-           {
-             thr_lock_type lock_type= (thr_lock_type) $3;
--            if (!Select->add_table_to_list(YYTHD, $1, $2, 0, lock_type))
-+            if (!Select->add_table_to_list(thd, $1, $2, 0, lock_type))
-               MYSQL_YYABORT;
-             /* If table is to be write locked, protect from a impending GRL. */
-             if (lock_type >= TL_WRITE_ALLOW_WRITE)
-@@ -12514,7 +12449,7 @@
-             lex->expr_allows_subselect= FALSE;
-             lex->sql_command = SQLCOM_HA_READ;
-             lex->ha_rkey_mode= HA_READ_KEY_EXACT; /* Avoid purify warnings */
--            Item *one= new (YYTHD->mem_root) Item_int((int32) 1);
-+            Item *one= new (thd->mem_root) Item_int((int32) 1);
-             if (one == NULL)
-               MYSQL_YYABORT;
-             lex->current_select->select_limit= one;
-@@ -12836,10 +12771,10 @@
-             $$=$1; $1->password=$4;
-             if ($4.length)
-             {
--              if (YYTHD->variables.old_passwords)
-+              if (thd->variables.old_passwords)
-               {
-                 char *buff= 
--                  (char *) YYTHD->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH_323+1);
-+                  (char *) thd->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH_323+1);
-                 if (buff == NULL)
-                   MYSQL_YYABORT;
-                 my_make_scrambled_password_323(buff, $4.str, $4.length);
-@@ -12849,7 +12784,7 @@
-               else
-               {
-                 char *buff= 
--                  (char *) YYTHD->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH+1);
-+                  (char *) thd->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH+1);
-                 if (buff == NULL)
-                   MYSQL_YYABORT;
-                 my_make_scrambled_password(buff, $4.str, $4.length);
-@@ -12881,7 +12816,7 @@
- column_list_id:
-           ident
-           {
--            String *new_str = new (YYTHD->mem_root) String((const char*) $1.str,$1.length,system_charset_info);
-+            String *new_str = new (thd->mem_root) String((const char*) $1.str,$1.length,system_charset_info);
-             if (new_str == NULL)
-               MYSQL_YYABORT;
-             List_iterator <LEX_COLUMN> iter(Lex->columns);
-@@ -12981,14 +12916,14 @@
- 
- opt_chain:
-           /* empty */
--          { $$= (YYTHD->variables.completion_type == 1); }
-+          { $$= (thd->variables.completion_type == 1); }
-         | AND_SYM NO_SYM CHAIN_SYM { $$=0; }
-         | AND_SYM CHAIN_SYM        { $$=1; }
-         ;
- 
- opt_release:
-           /* empty */
--          { $$= (YYTHD->variables.completion_type == 2); }
-+          { $$= (thd->variables.completion_type == 2); }
-         | RELEASE_SYM        { $$=1; }
-         | NO_SYM RELEASE_SYM { $$=0; }
- ;
-@@ -13102,7 +13037,6 @@
- 
- union_order_or_limit:
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             DBUG_ASSERT(lex->current_select->linkage != GLOBAL_OPTIONS_TYPE);
-             SELECT_LEX *sel= lex->current_select;
-@@ -13118,7 +13052,6 @@
-           }
-           order_or_limit
-           {
--            THD *thd= YYTHD;
-             thd->lex->current_select->no_table_names_allowed= 0;
-             thd->where= "";
-           }
-@@ -13255,14 +13188,14 @@
-               from older master servers (i.e. to create non-suid trigger in this
-               case).
-             */
--            YYTHD->lex->definer= 0;
-+            thd->lex->definer= 0;
-           }
-         ;
- 
- definer:
-           DEFINER_SYM EQ user
-           {
--            YYTHD->lex->definer= get_current_user(YYTHD, $3);
-+            thd->lex->definer= get_current_user(thd, $3);
-           }
-         ;
- 
-@@ -13307,7 +13240,6 @@
- view_tail:
-           view_suid VIEW_SYM table_ident
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             lex->sql_command= SQLCOM_CREATE_VIEW;
-             /* first table in list is target VIEW name */
-@@ -13347,7 +13279,6 @@
-           }
-           view_select_aux view_check_option
-           {
--            THD *thd= YYTHD;
-             LEX *lex= Lex;
-             uint len= YYLIP->get_cpp_ptr() - lex->create_view_select.str;
-             void *create_view_select= thd->memdup(lex->create_view_select.str, len);
-@@ -13403,7 +13334,6 @@
-           EACH_SYM
-           ROW_SYM
-           { /* $15 */
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             Lex_input_stream *lip= YYLIP;
-             sp_head *sp;
-@@ -13437,8 +13367,8 @@
-             sp_head *sp= lex->sphead;
- 
-             lex->sql_command= SQLCOM_CREATE_TRIGGER;
--            sp->set_stmt_end(YYTHD);
--            sp->restore_thd_mem_root(YYTHD);
-+            sp->set_stmt_end(thd);
-+            sp->restore_thd_mem_root(thd);
- 
-             if (sp->is_not_allowed_in_function("trigger"))
-               MYSQL_YYABORT;
-@@ -13448,7 +13378,7 @@
-               sp_proc_stmt alternatives are not saving/restoring LEX, so
-               lex->query_tables can be wiped out.
-             */
--            if (!lex->select_lex.add_table_to_list(YYTHD, $9,
-+            if (!lex->select_lex.add_table_to_list(thd, $9,
-                                                    (LEX_STRING*) 0,
-                                                    TL_OPTION_UPDATING,
-                                                    TL_IGNORE))
-@@ -13466,7 +13396,6 @@
-           AGGREGATE_SYM remember_name FUNCTION_SYM ident
-           RETURNS_SYM udf_type SONAME_SYM TEXT_STRING_sys
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             if (is_native_function(thd, & $4))
-             {
-@@ -13484,7 +13413,6 @@
-         | remember_name FUNCTION_SYM ident
-           RETURNS_SYM udf_type SONAME_SYM TEXT_STRING_sys
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             if (is_native_function(thd, & $3))
-             {
-@@ -13507,7 +13435,6 @@
-           sp_name /* $3 */
-           '(' /* $4 */
-           { /* $5 */
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             Lex_input_stream *lip= YYLIP;
-             sp_head *sp;
-@@ -13565,7 +13492,7 @@
-               MYSQL_YYABORT;
-             }
- 
--            if (sp->fill_field_definition(YYTHD, lex,
-+            if (sp->fill_field_definition(thd, lex,
-                                           (enum enum_field_types) $11,
-                                           &sp->m_return_field_def))
-               MYSQL_YYABORT;
-@@ -13574,7 +13501,6 @@
-           }
-           sp_c_chistics /* $13 */
-           { /* $14 */
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             Lex_input_stream *lip= YYLIP;
- 
-@@ -13583,7 +13509,6 @@
-           }
-           sp_proc_stmt /* $15 */
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
-             sp_head *sp= lex->sphead;
- 
-@@ -13654,10 +13579,10 @@
-             sp= new sp_head();
-             if (sp == NULL)
-               MYSQL_YYABORT;
--            sp->reset_thd_mem_root(YYTHD);
-+            sp->reset_thd_mem_root(thd);
-             sp->init(lex);
-             sp->m_type= TYPE_ENUM_PROCEDURE;
--            sp->init_sp_name(YYTHD, $3);
-+            sp->init_sp_name(thd, $3);
- 
-             lex->sphead= sp;
-           }
-@@ -13672,7 +13597,6 @@
-           sp_pdparam_list
-           ')'
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
- 
-             lex->sphead->m_param_end= YYLIP->get_cpp_tok_start();
-@@ -13680,7 +13604,6 @@
-           }
-           sp_c_chistics
-           {
--            THD *thd= YYTHD;
-             LEX *lex= thd->lex;
- 
-             lex->sphead->m_chistics= &lex->sp_chistics;
-@@ -13691,9 +13614,9 @@
-             LEX *lex= Lex;
-             sp_head *sp= lex->sphead;
- 
--            sp->set_stmt_end(YYTHD);
-+            sp->set_stmt_end(thd);
-             lex->sql_command= SQLCOM_CREATE_PROCEDURE;
--            sp->restore_thd_mem_root(YYTHD);
-+            sp->restore_thd_mem_root(thd);
-           }
-         ;
- 
-@@ -13730,21 +13653,21 @@
-           text_string
-           {
-             MYSQL_YYABORT_UNLESS($1->length() <= MAXGTRIDSIZE);
--            if (!(Lex->xid=(XID *)YYTHD->alloc(sizeof(XID))))
-+            if (!(Lex->xid=(XID *)thd->alloc(sizeof(XID))))
-               MYSQL_YYABORT;
-             Lex->xid->set(1L, $1->ptr(), $1->length(), 0, 0);
-           }
-           | text_string ',' text_string
-           {
-             MYSQL_YYABORT_UNLESS($1->length() <= MAXGTRIDSIZE && $3->length() <= MAXBQUALSIZE);
--            if (!(Lex->xid=(XID *)YYTHD->alloc(sizeof(XID))))
-+            if (!(Lex->xid=(XID *)thd->alloc(sizeof(XID))))
-               MYSQL_YYABORT;
-             Lex->xid->set(1L, $1->ptr(), $1->length(), $3->ptr(), $3->length());
-           }
-           | text_string ',' text_string ',' ulong_num
-           {
-             MYSQL_YYABORT_UNLESS($1->length() <= MAXGTRIDSIZE && $3->length() <= MAXBQUALSIZE);
--            if (!(Lex->xid=(XID *)YYTHD->alloc(sizeof(XID))))
-+            if (!(Lex->xid=(XID *)thd->alloc(sizeof(XID))))
-               MYSQL_YYABORT;
-             Lex->xid->set($5, $1->ptr(), $1->length(), $3->ptr(), $3->length());
-           }
diff --git a/package/mysql/0006-no-force-static-build.patch b/package/mysql/0006-no-force-static-build.patch
deleted file mode 100644
index 8172a98..0000000
--- 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" <yann.morin.1998 at free.fr>
-
-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 971b9ce..0000000
--- 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) <arnout at mind.be>
-
-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 7133892..d168de2 100644
--- a/package/mysql/Config.in
+++ b/package/mysql/Config.in
@@ -1,24 +1,29 @@
 config BR2_PACKAGE_MYSQL
-	bool "MySQL"
+	bool "mariadb"
 	depends on BR2_INSTALL_LIBSTDCPP
 	depends on BR2_USE_MMU # fork()
 	depends on BR2_TOOLCHAIN_HAS_THREADS
 	select BR2_PACKAGE_NCURSES
 	select BR2_PACKAGE_READLINE
+	select BR2_PACKAGE_LIBAIO
+	select BR2_PACKAGE_LIBTOOL
+	select BR2_PACKAGE_LIBXML2
 	help
-	  The MySQL Open Source Database System
+	  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.mysql.com/
+	  http://www.mariadb.org/
 
 if BR2_PACKAGE_MYSQL
 
 config BR2_PACKAGE_MYSQL_SERVER
-	bool "MySQL server"
+	bool "mariadb server"
 	help
-	  Install the MySQL server on the target.
+	  Install the mariadb server on the target.
 
 endif
 
-comment "MySQL needs a toolchain w/ C++, threads"
+comment "mariadb needs a toolchain w/ C++, threads"
 	depends on BR2_USE_MMU
 	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/mysql/S97mysqld b/package/mysql/S97mysqld
index 1d87e68..4165ac0 100644
--- a/package/mysql/S97mysqld
+++ b/package/mysql/S97mysqld
@@ -1,34 +1,78 @@
 #!/bin/sh
+#
+# mysql
+#
 
-case "$1" in
-	start)
-		if [ ! -d /var/mysql/mysql ] ; then
-			echo "Creating MySQL system tables..."
-			mysql_install_db --user=mysql --ldata=/var/mysql
-		fi
+MYSQL_LIB="/var/lib/mysql"
+MYSQL_RUN="/run/mysqld"
+MYSQL_PID="$MYSQL_RUN/mysqld.pid"
+
+wait_for_pid() {
+	WAIT_DELAY=10
+	if [ ! -e "${MYSQL_PID}" ]; then
+		while [ ${WAIT_DELAY} -gt 0 ]; do
+			if [ -e "${MYSQL_PID}" ]; then
+				return 0
+			fi
+			sleep 1
+			: $((WAIT_DELAY -= 1))
+		done
+		return 1
+	fi
+	return 0
+}
 
-		# 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 0700 /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`
+start() {
+	if [ `ls -1 $MYSQL_LIB | wc -l` = 0 ] ; then
+		printf "Creating mysql system tables ... "
+		/usr/bin/mysql_install_db --basedir=/usr --user=mysql \
+			--datadir=$MYSQL_LIB > /dev/null 2>&1
+		if [ $? != 0 ]; then
+			echo "FAIL"
+			exit 1
 		fi
-		echo "done."
-		;;
-	restart)
-		$0 stop
-		$0 start
-		;;
-	*)
-		echo "Usage: /etc/init.d/mysqld {start|stop|restart}"
-		;;
+		echo "OK"
+	fi
+
+	# create directory under /run and change owner so mysql can write to it
+	mkdir -p $MYSQL_RUN
+	chown mysql:mysql $MYSQL_RUN
+
+	# We don't use start-stop-daemon because mysqld has its own
+	# wrapper script.
+	printf "Starting mysql ... "
+	/usr/bin/mysqld_safe --user=mysql > /dev/null 2>&1 &
+	wait_for_pid
+	[ $? = 0 ] && echo "OK" || echo "FAIL"
+}
+
+stop() {
+	printf "Stopping mysql ... "
+	if [ -f ${MYSQL_PID} ]; then
+		kill `cat ${MYSQL_PID}` > /dev/null 2>&1
+		[ $? = 0 ] && echo "OK" || echo "FAIL"
+	else
+		echo "FAIL"
+	fi
+}
+
+restart() {
+	stop
+	sleep 1
+	start
+}
+
+case "$1" in
+  start)
+	start
+	;;
+  stop)
+	stop
+	;;
+  restart)
+	restart
+	;;
+  *)
+	echo "Usage: $0 {start|stop|restart}"
+	;;
 esac
diff --git a/package/mysql/my.cnf b/package/mysql/my.cnf
new file mode 100644
index 0000000..7568bd7
--- /dev/null
+++ b/package/mysql/my.cnf
@@ -0,0 +1,179 @@
+# MariaDB database server configuration file.
+#
+# You can copy this file to one of:
+# - "/etc/mysql/my.cnf" to set global options,
+# - "~/.my.cnf" to set user-specific options.
+#
+# One can use all long options that the program supports.
+# Run program with --help to get a list of available options and with
+# --print-defaults to see which it would actually understand and use.
+#
+# For explanations see
+# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
+
+# This will be passed to all mysql clients
+# It has been reported that passwords should be enclosed with ticks/quotes
+# escpecially if they contain "#" chars...
+# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
+[client]
+port		= 3306
+socket		= /run/mysqld/mysqld.sock
+
+# Here is entries for some specific programs
+# The following values assume you have at least 32M ram
+
+# This was formally known as [safe_mysqld]. Both versions are currently parsed.
+[mysqld_safe]
+socket		= /run/mysqld/mysqld.sock
+nice		= 0
+
+[mysqld]
+#
+# * Basic Settings
+#
+user		= mysql
+pid-file	= /run/mysqld/mysqld.pid
+socket		= /run/mysqld/mysqld.sock
+port		= 3306
+basedir		= /usr
+datadir		= /var/lib/mysql
+tmpdir		= /tmp
+lc_messages_dir	= /usr/share/mysql
+lc_messages	= en_US
+skip-external-locking
+
+# Don't use DNS as it may not be available
+skip-host-cache
+skip-name-resolve
+
+#
+# Instead of skip-networking the default is now to listen only on
+# localhost which is more compatible and is not less secure.
+bind-address		= 127.0.0.1
+#skip-networking
+#
+# * Fine Tuning
+#
+max_connections		= 100
+connect_timeout		= 5
+wait_timeout		= 600
+max_allowed_packet	= 16M
+thread_cache_size       = 128
+sort_buffer_size	= 4M
+bulk_insert_buffer_size	= 16M
+tmp_table_size		= 32M
+max_heap_table_size	= 32M
+#
+# * MyISAM
+#
+# This replaces the startup script and checks MyISAM tables if needed
+# the first time they are touched. On error, make copy and try a repair.
+myisam_recover          = BACKUP
+key_buffer_size		= 64M
+#open-files-limit	= 2000
+table_open_cache	= 400
+myisam_sort_buffer_size	= 64M
+concurrent_insert	= 2
+read_buffer_size	= 2M
+read_rnd_buffer_size	= 1M
+#
+# * Query Cache Configuration
+#
+# Cache only tiny result sets, so we can fit more in the query cache.
+query_cache_limit		= 128K
+query_cache_size		= 16M
+# for more write intensive setups, set to DEMAND or OFF
+#query_cache_type		= DEMAND
+#
+# * Logging and Replication
+#
+# Both location gets rotated by the cronjob.
+# Be aware that this log type is a performance killer.
+# As of 5.1 you can enable the log at runtime!
+#general_log_file        = /var/lib/mysql/mysql.log
+#general_log             = 1
+#
+# Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf.
+#
+# we do want to know about network errors and such
+log_warnings		= 2
+#
+# Enable the slow query log to see queries with especially long duration
+#slow_query_log[={0|1}]
+slow_query_log_file	= /var/lib/mysql/mariadb-slow.log
+long_query_time = 10
+#log_slow_rate_limit	= 1000
+log_slow_verbosity	= query_plan
+
+#log-queries-not-using-indexes
+#log_slow_admin_statements
+#
+# The following can be used as easy to replay backup logs or for replication.
+# note: if you are setting up a replication slave, see README.Debian about
+#       other settings you may need to change.
+#server-id		= 1
+#report_host		= master1
+#auto_increment_increment = 2
+#auto_increment_offset	= 1
+log_bin			= /var/lib/mysql/mariadb-bin
+log_bin_index		= /var/lib/mysql/mariadb-bin.index
+# not fab for performance, but safer
+#sync_binlog		= 1
+expire_logs_days	= 10
+max_binlog_size         = 100M
+# slaves
+#relay_log		= /var/lib/mysql/relay-bin
+#relay_log_index	= /var/lib/mysql/relay-bin.index
+#relay_log_info_file	= /var/lib/mysql/relay-bin.info
+#log_slave_updates
+#read_only
+#
+# If applications support it, this stricter sql_mode prevents some
+# mistakes like inserting invalid dates etc.
+#sql_mode		= NO_ENGINE_SUBSTITUTION,TRADITIONAL
+#
+# * InnoDB
+#
+# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
+# Read the manual for more InnoDB related options. There are many!
+default_storage_engine = InnoDB
+#default_storage_engine	= MyISAM
+# you can't just change log file size, requires special procedure
+innodb_log_file_size	= 50M
+innodb_buffer_pool_size	= 64M
+innodb_log_buffer_size	= 8M
+innodb_file_per_table	= 1
+innodb_open_files	= 400
+innodb_io_capacity	= 400
+innodb_flush_method	= O_DIRECT
+#
+# * Security Features
+#
+# Read the manual, too, if you want chroot!
+# chroot = /var/lib/mysql/
+#
+# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
+#
+# ssl-ca=/etc/mysql/cacert.pem
+# ssl-cert=/etc/mysql/server-cert.pem
+# ssl-key=/etc/mysql/server-key.pem
+
+[mysqldump]
+quick
+quote-names
+max_allowed_packet	= 16M
+
+[mysql]
+#no-auto-rehash	# faster start of mysql but no tab completition
+
+[isamchk]
+key_buffer = 20M
+sort_buffer_size = 20M
+read_buffer = 2M
+write_buffer = 2M
+
+[myisamchk]
+key_buffer_size = 20M
+sort_buffer_size = 20M
+read_buffer = 2M
+write_buffer = 2M
diff --git a/package/mysql/mysql.hash b/package/mysql/mysql.hash
index 84f3361..1619193 100644
--- a/package/mysql/mysql.hash
+++ b/package/mysql/mysql.hash
@@ -1,2 +1,2 @@
-# 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	 bdf3a0c25aa2bc7a22a47e994eb7c8aa782624810eb3156038cc62bc9085c0cd  mariadb-10.0.27.tar.gz
diff --git a/package/mysql/mysql.mk b/package/mysql/mysql.mk
index 534bd97..6cd0900 100644
--- a/package/mysql/mysql.mk
+++ b/package/mysql/mysql.mk
@@ -1,107 +1,96 @@
 ################################################################################
 #
-# mysql
+# mariadb
 #
 ################################################################################
 
-MYSQL_VERSION_MAJOR = 5.1
-MYSQL_VERSION = $(MYSQL_VERSION_MAJOR).73
-MYSQL_SOURCE = mysql-$(MYSQL_VERSION).tar.gz
-MYSQL_SITE = http://downloads.skysql.com/archives/mysql-$(MYSQL_VERSION_MAJOR)
-MYSQL_INSTALL_STAGING = YES
-MYSQL_DEPENDENCIES = readline ncurses
-MYSQL_AUTORECONF = YES
+MYSQL_VERSION = 10.0.27
+MYSQL_SOURCE = mariadb-$(MYSQL_VERSION).tar.gz
+MYSQL_SITE = https://downloads.mariadb.org/interstitial/mariadb-$(MYSQL_VERSION)/source
 MYSQL_LICENSE = GPLv2
-MYSQL_LICENSE_FILES = README COPYING
-
-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 \
-	--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
-	$(MAKE) -C $(@D)/include my_config.h
-	$(MAKE) -C $(@D)/mysys libmysys.a
-	$(MAKE) -C $(@D)/strings libmystrings.a
-	$(MAKE) -C $(@D)/vio libvio.a
-	$(MAKE) -C $(@D)/dbug libdbug.a
-	$(MAKE) -C $(@D)/regex libregex.a
-	$(MAKE) -C $(@D)/sql gen_lex_hash
-endef
+MYSQL_LICENSE_FILES = README COPYING COPYING.LESSER
+MYSQL_INSTALL_STAGING = YES
 
-define HOST_MYSQL_INSTALL_CMDS
-	$(INSTALL) -m 0755  $(@D)/sql/gen_lex_hash $(HOST_DIR)/usr/bin/
-endef
+# We won't need unit tests:
+MYSQL_OPTS += -DWITH_UNIT_TESTS=0
 
-ifeq ($(BR2_PACKAGE_OPENSSL),y)
-MYSQL_DEPENDENCIES += openssl
-endif
+# Mroonga needs libstemmer. Some work still needs to be done before it can be
+# included in buildroot. Disable it for now.
+MYSQL_OPTS += -DWITHOUT_MROONGA=1
 
-ifeq ($(BR2_PACKAGE_ZLIB),y)
-MYSQL_DEPENDENCIES += zlib
-endif
+# This value is determined automatically during straight compile by compiling
+# and running a test code. You cannot do that during cross-compile. However the
+# stack grows downward in most if not all modern systems. The only exception I
+# am aware of is PA-RISC which is not supported by buildroot. Therefore it makes
+# sense to hardcode the value. If an arch is added the stack of which grows up
+# one should expect unpredictable behavior at run time.
+MYSQL_OPTS += -DSTACK_DIRECTION=-1
+
+# Jemalloc was added for TokuDB. Since its configure script seems somewhat broken
+# when it comes to cross-compilation we shall disable it and also disable TokuDB.
+MYSQL_OPTS += -DWITH_JEMALLOC=no
+MYSQL_OPTS += -DWITHOUT_TOKUDB=1
+
+# Make it explicit that we are cross-compiling:
+MYSQL_OPTS += -DCMAKE_CROSSCOMPILING=1
 
 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
+MYSQL_OPTS += -DWITH_EMBEDDED_SERVER=ON
 else
-MYSQL_CONF_OPTS += --without-debug
+MYSQL_OPTS += -DWITHOUT_SERVER=ON
 endif
 
-define MYSQL_USERS
-	mysql -1 nogroup -1 * /var/mysql - - MySQL daemon
-endef
+MYSQL_OPTS += -DCMAKE_BUILD_TYPE=Release
+MYSQL_OPTS += -DCMAKE_INSTALL_PREFIX=/usr
+MYSQL_OPTS += -DINSTALL_DOCDIR=share/doc/mariadb-$(MYSQL_VERSION)
+MYSQL_OPTS += -DINSTALL_DOCREADMEDIR=share/doc/mariadb-$(MYSQL_VERSION)
+MYSQL_OPTS += -DINSTALL_MANDIR=share/man
+MYSQL_OPTS += -DINSTALL_MYSQLSHAREDIR=share/mysql
+MYSQL_OPTS += -DINSTALL_MYSQLTESTDIR=share/mysql/test
+MYSQL_OPTS += -DINSTALL_PLUGINDIR=lib/mysql/plugin
+MYSQL_OPTS += -DINSTALL_SBINDIR=sbin
+MYSQL_OPTS += -DINSTALL_SCRIPTDIR=bin
+MYSQL_OPTS += -DINSTALL_SQLBENCHDIR=share/mysql/bench
+MYSQL_OPTS += -DINSTALL_SUPPORTFILESDIR=share/mysql
+MYSQL_OPTS += -DMYSQL_DATADIR=/var/lib/mysql
+MYSQL_OPTS += -DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock
+
+MYSQL_DEPENDENCIES = \
+	host-mysql \
+	ncurses \
+	openssl \
+	zlib \
+	libaio \
+	libxml2 \
+	libtool \
+	readline
+
+HOST_MYSQL_DEPENDENCIES =
+
+# Some helpers must be compiled for host in order to crosscompile mariadb for
+# the target. They are then included by import_executables.cmake which is
+# generated during the build of the host helpers. It is not necessary to build
+# the whole host package, only the "import_executables" target.
+# -DIMPORT_EXECUTABLES=$(BUILD_DIR)/host-mariadb-galera/import_executables.cmake
+# must then be passed to cmake during target build.
+HOST_MYSQL_MAKE_OPTS = import_executables
+MYSQL_IMPORT_EXECUTABLES += -DIMPORT_EXECUTABLES=$(HOST_MYSQL_BUILDDIR)/import_executables.cmake
+
+HOST_MYSQL_CONF_OPTS = $(MYSQL_OPTS)
+HOST_MYSQL_CONF_OPTS += $(MYSQL_HOST_OPTS)
+
+MYSQL_CONF_OPTS = $(MYSQL_OPTS)
+MYSQL_CONF_OPTS += $(MYSQL_IMPORT_EXECUTABLES)
+
+# Don't install host-mysql. We just need to build import_executable
+# Therefore only run 'true' and do nothing, not even the default action.
+HOST_MYSQL_INSTALL_CMDS = true
 
-define MYSQL_ADD_FOLDER
-	$(INSTALL) -d $(TARGET_DIR)/var/mysql
+ifeq ($(BR2_PACKAGE_MYSQL_SERVER),y)
+define MYSQL_USERS
+	mysql -1 mysql -1 * /var/lib/mysql - - MySQL Server
 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
@@ -114,18 +103,18 @@ define MYSQL_INSTALL_INIT_SYSTEMD
 	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
+define MYSQL_POST_INSTALL
+	mkdir -p $(TARGET_DIR)/var/lib/mysql
+	$(INSTALL) -D -m 644 package/mysql/my.cnf $(TARGET_DIR)/etc/mysql/my.cnf
+	# We don't need this on the target as it's only useful in staging
+	$(RM) -f $(TARGET_DIR)/usr/bin/mysql_config
+	# Remove test suite
+	$(RM) -rf $(TARGET_DIR)/usr/share/mysql/test
 endef
 
-MYSQL_POST_INSTALL_TARGET_HOOKS += MYSQL_REMOVE_TEST_PROGS
+MYSQL_POST_INSTALL_TARGET_HOOKS += MYSQL_POST_INSTALL
 
-$(eval $(autotools-package))
-$(eval $(host-autotools-package))
+$(eval $(cmake-package))
+$(eval $(host-cmake-package))
diff --git a/package/mysql/mysqld.service b/package/mysql/mysqld.service
index 2ded9c2..2fdbc7d 100644
--- a/package/mysql/mysqld.service
+++ b/package/mysql/mysqld.service
@@ -2,8 +2,8 @@
 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
+ExecStartPre=/bin/sh -c 'mkdir -p /run/mysql ; chown mysql:mysql /run/mysql ; [ "`ls -1 /var/lib/mysql | wc -l`" = "0" ] && mysql_install_db --basedir=/usr --user=mysql --datadir=/var/lib/mysql'
+ExecStart=/usr/bin/mysqld_safe --user=mysql
 Restart=always
 
 [Install]
-- 
2.9.3




More information about the buildroot mailing list