All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 0/1] [RFC] replace mysql with mariadb 10.0
@ 2016-09-12 22:05 Ryan Coe
  2016-09-12 22:05 ` [Buildroot] [PATCH 1/1] [RFC] mysql: " Ryan Coe
  2016-09-14 22:41 ` [Buildroot] [PATCH 0/1] [RFC] replace mysql with mariadb 10.0 Stewart Smith
  0 siblings, 2 replies; 15+ messages in thread
From: Ryan Coe @ 2016-09-12 22:05 UTC (permalink / raw)
  To: buildroot

This patch represents my attempt to replace the aging mysql 5.1 that is
currently shipped with Buildroot. I am replacing mysql altogether with mariadb
version 10.0. I have been able to test this with both an arm and a x86_64
build. I have not tested it with systemd. This patch is based on the work done
by Sylvain Raybaud.

Ryan Coe (1):
  mysql: replace mysql with mariadb 10.0

 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

-- 
2.9.3

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Buildroot] [PATCH 1/1] [RFC] mysql: replace mysql with mariadb 10.0
  2016-09-12 22:05 [Buildroot] [PATCH 0/1] [RFC] replace mysql with mariadb 10.0 Ryan Coe
@ 2016-09-12 22:05 ` Ryan Coe
  2016-09-14 14:46   ` [Buildroot] [1/1,RFC] " Floris Bos
  2016-09-19  3:43   ` [Buildroot] [RFC v2] mysql: replace mysql with mariadb 10.1 Ryan Coe
  2016-09-14 22:41 ` [Buildroot] [PATCH 0/1] [RFC] replace mysql with mariadb 10.0 Stewart Smith
  1 sibling, 2 replies; 15+ messages in thread
From: Ryan Coe @ 2016-09-12 22:05 UTC (permalink / raw)
  To: buildroot

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@green-communications.fr>

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

Signed-off-by: Ryan Coe <bluemrp9@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@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@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@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@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@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@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@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@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@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@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

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Buildroot] [1/1,RFC] mysql: replace mysql with mariadb 10.0
  2016-09-12 22:05 ` [Buildroot] [PATCH 1/1] [RFC] mysql: " Ryan Coe
@ 2016-09-14 14:46   ` Floris Bos
  2016-09-14 18:44     ` Ryan Coe
  2016-09-19  3:43   ` [Buildroot] [RFC v2] mysql: replace mysql with mariadb 10.1 Ryan Coe
  1 sibling, 1 reply; 15+ messages in thread
From: Floris Bos @ 2016-09-14 14:46 UTC (permalink / raw)
  To: buildroot

Hi,

On 09/13/2016 12:05 AM, Ryan Coe wrote:
> Replaces the old mysql 5.1 with mariadb 10.0. The package was not renamed
> as mariadb is a drop-in replacement for mysql.

Give your patch a try

- openssl is mentioned in the dependencies but not selected in Config.in

- fails to compile for me when using uclibc as C library:

==
[ 82%] Building CXX object sql/CMakeFiles/sql.dir/signal_handler.cc.o
/mnt/nfs/mdbtest/buildroot/output/build/mysql-10.0.27/sql/signal_handler.cc: 
In function ?void handle_fatal_signal(int)?:
/mnt/nfs/mdbtest/buildroot/output/build/mysql-10.0.27/sql/signal_handler.cc:274:21: 
error: ?thd? was not declared in this scope
       my_write_stderr(thd->query(), MY_MIN(65536U, thd->query_length()));
                       ^
/mnt/nfs/mdbtest/buildroot/output/build/mysql-10.0.27/sql/signal_handler.cc: 
In function ?void handle_fatal_signal(int)?:
/mnt/nfs/mdbtest/buildroot/output/build/mysql-10.0.27/sql/signal_handler.cc:274:21: 
error: ?thd? was not declared in this scope
       my_write_stderr(thd->query(), MY_MIN(65536U, thd->query_length()));
                       ^
libmysqld/CMakeFiles/sql_embedded.dir/build.make:590: recipe for target 
'libmysqld/CMakeFiles/sql_embedded.dir/__/sql/signal_handler.cc.o' failed
make[4]: *** 
[libmysqld/CMakeFiles/sql_embedded.dir/__/sql/signal_handler.cc.o] Error 1
make[4]: *** Waiting for unfinished jobs....
==

- is the custom my.cnf necessary?

- any specific reason to choose the older MariaDB 10.0.x branch over the 
current stable 10.1.x?
(believe the newer version also comes with systemd support, which may 
save you from having to create your own unit files)

> 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"

Why move it?



Yours sincerely,

Floris Bos

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Buildroot] [1/1,RFC] mysql: replace mysql with mariadb 10.0
  2016-09-14 14:46   ` [Buildroot] [1/1,RFC] " Floris Bos
@ 2016-09-14 18:44     ` Ryan Coe
  0 siblings, 0 replies; 15+ messages in thread
From: Ryan Coe @ 2016-09-14 18:44 UTC (permalink / raw)
  To: buildroot

Floris, All,

On 09/14/2016 07:46 AM, Floris Bos wrote:
> Hi,
>
> On 09/13/2016 12:05 AM, Ryan Coe wrote:
>> Replaces the old mysql 5.1 with mariadb 10.0. The package was not 
>> renamed
>> as mariadb is a drop-in replacement for mysql.
>
> Give your patch a try
>
> - openssl is mentioned in the dependencies but not selected in Config.in
That was a mistake on my end.  It will be added for the second version.
>
> - fails to compile for me when using uclibc as C library:
>
> ==
> [ 82%] Building CXX object sql/CMakeFiles/sql.dir/signal_handler.cc.o
> /mnt/nfs/mdbtest/buildroot/output/build/mysql-10.0.27/sql/signal_handler.cc: 
> In function ?void handle_fatal_signal(int)?:
> /mnt/nfs/mdbtest/buildroot/output/build/mysql-10.0.27/sql/signal_handler.cc:274:21: 
> error: ?thd? was not declared in this scope
>       my_write_stderr(thd->query(), MY_MIN(65536U, thd->query_length()));
>                       ^
> /mnt/nfs/mdbtest/buildroot/output/build/mysql-10.0.27/sql/signal_handler.cc: 
> In function ?void handle_fatal_signal(int)?:
> /mnt/nfs/mdbtest/buildroot/output/build/mysql-10.0.27/sql/signal_handler.cc:274:21: 
> error: ?thd? was not declared in this scope
>       my_write_stderr(thd->query(), MY_MIN(65536U, thd->query_length()));
>                       ^
> libmysqld/CMakeFiles/sql_embedded.dir/build.make:590: recipe for 
> target 
> 'libmysqld/CMakeFiles/sql_embedded.dir/__/sql/signal_handler.cc.o' failed
> make[4]: *** 
> [libmysqld/CMakeFiles/sql_embedded.dir/__/sql/signal_handler.cc.o] 
> Error 1
> make[4]: *** Waiting for unfinished jobs....
> ==
I will look into this.  I am using glibc for my project.
>
> - is the custom my.cnf necessary?
I'm not entirely sure about this.  By default, it does not install a 
configuration file.  There are several sample ones installed to 
/usr/share/mysql.  We could use my-small.cnf as it would probably be 
best suited to embedded systems.  The only thing I saw was all of the 
innodb stuff was commented out.  I'm using that for my project. Feedback 
from others would be welcome here.
>
> - any specific reason to choose the older MariaDB 10.0.x branch over 
> the current stable 10.1.x?
> (believe the newer version also comes with systemd support, which may 
> save you from having to create your own unit files)
No, I updated the version to the latest 10.1.17.  That will be part of 
my v2 patch.
>
>> 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"
>
> Why move it?
I moved it to keep alphabetical order since I changed the name from 
mysql to mariadb in the Config.in file.
>
>
>
> Yours sincerely,
>
> Floris Bos
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Thanks,
Ryan Coe

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Buildroot] [PATCH 0/1] [RFC] replace mysql with mariadb 10.0
  2016-09-12 22:05 [Buildroot] [PATCH 0/1] [RFC] replace mysql with mariadb 10.0 Ryan Coe
  2016-09-12 22:05 ` [Buildroot] [PATCH 1/1] [RFC] mysql: " Ryan Coe
@ 2016-09-14 22:41 ` Stewart Smith
  2016-09-15  6:18   ` Arnout Vandecappelle
  2016-09-17 13:51   ` Thomas Petazzoni
  1 sibling, 2 replies; 15+ messages in thread
From: Stewart Smith @ 2016-09-14 22:41 UTC (permalink / raw)
  To: buildroot

Ryan Coe <bluemrp9@gmail.com> writes:
> This patch represents my attempt to replace the aging mysql 5.1 that is
> currently shipped with Buildroot. I am replacing mysql altogether with mariadb
> version 10.0. I have been able to test this with both an arm and a x86_64
> build. I have not tested it with systemd. This patch is based on the work done
> by Sylvain Raybaud.

Would it be better to just add MariaDB rather than replace MySQL,
there's reasons to use one over the other.

-- 
Stewart Smith
OPAL Architect, IBM.

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Buildroot] [PATCH 0/1] [RFC] replace mysql with mariadb 10.0
  2016-09-14 22:41 ` [Buildroot] [PATCH 0/1] [RFC] replace mysql with mariadb 10.0 Stewart Smith
@ 2016-09-15  6:18   ` Arnout Vandecappelle
  2016-09-17 13:51   ` Thomas Petazzoni
  1 sibling, 0 replies; 15+ messages in thread
From: Arnout Vandecappelle @ 2016-09-15  6:18 UTC (permalink / raw)
  To: buildroot



On 15-09-16 00:41, Stewart Smith wrote:
> Ryan Coe <bluemrp9@gmail.com> writes:
>> This patch represents my attempt to replace the aging mysql 5.1 that is
>> currently shipped with Buildroot. I am replacing mysql altogether with mariadb
>> version 10.0. I have been able to test this with both an arm and a x86_64
>> build. I have not tested it with systemd. This patch is based on the work done
>> by Sylvain Raybaud.
> 
> Would it be better to just add MariaDB rather than replace MySQL,
> there's reasons to use one over the other.

 I completely agree.

 However, that's a bit more complicated, because we want mysql to become a
virtual package then, so any package that currently uses mysql can also use
mariadb. And, since there are quite a few packages out there that select mysql,
it would have to use an approach like libjpeg/jpeg-turbo to handle it.

 The good news is: in a first step, you can add mariadb as a new package without
bothering with the virtual package.

 Note that Sylvain Raybaud did that already, I'm not sure why his patches are no
longer on patchwork.

 Regards,
 Arnout


-- 
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Buildroot] [PATCH 0/1] [RFC] replace mysql with mariadb 10.0
  2016-09-14 22:41 ` [Buildroot] [PATCH 0/1] [RFC] replace mysql with mariadb 10.0 Stewart Smith
  2016-09-15  6:18   ` Arnout Vandecappelle
@ 2016-09-17 13:51   ` Thomas Petazzoni
  1 sibling, 0 replies; 15+ messages in thread
From: Thomas Petazzoni @ 2016-09-17 13:51 UTC (permalink / raw)
  To: buildroot

Hello,

On Thu, 15 Sep 2016 08:41:28 +1000, Stewart Smith wrote:

> Would it be better to just add MariaDB rather than replace MySQL,
> there's reasons to use one over the other.

In order to help in the debate, could you summarize some of those
reasons ?

Thanks,

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Buildroot] [RFC v2] mysql: replace mysql with mariadb 10.1
  2016-09-12 22:05 ` [Buildroot] [PATCH 1/1] [RFC] mysql: " Ryan Coe
  2016-09-14 14:46   ` [Buildroot] [1/1,RFC] " Floris Bos
@ 2016-09-19  3:43   ` Ryan Coe
  2016-09-19  3:43     ` Ryan Coe
  2016-09-22 11:00     ` Floris Bos
  1 sibling, 2 replies; 15+ messages in thread
From: Ryan Coe @ 2016-09-19  3:43 UTC (permalink / raw)
  To: buildroot

This patch represents my attempt to replace the aging mysql 5.1 that is
currently shipped with Buildroot. I am replacing mysql altogether with mariadb
version 10.1. I have been able to test this with both an arm and a x86_64
build, and it has also been tested with glibc and uclibc.  I have not tested it
with systemd.

This patch is based on the work done by Sylvain Raybaud.

Ryan Coe (1):
  mysql: replace mysql with mariadb 10.1

 package/Config.in                                  |    2 +-
 package/mysql/0000-ac_cache_check.patch            |  156 -
 package/mysql/0001-add-extra-check-for-librt.patch |   26 +
 package/mysql/0001-configure-ps-cache-check.patch  |   39 -
 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                            |   18 +-
 package/mysql/S97mysqld                            |  103 +-
 package/mysql/mysql.hash                           |    4 +-
 package/mysql/mysql.mk                             |  187 +-
 package/mysql/mysqld.service                       |    2 +-
 15 files changed, 204 insertions(+), 3911 deletions(-)
 delete mode 100644 package/mysql/0000-ac_cache_check.patch
 create mode 100644 package/mysql/0001-add-extra-check-for-librt.patch
 delete mode 100644 package/mysql/0001-configure-ps-cache-check.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

-- 
2.9.3

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Buildroot] [RFC v2] mysql: replace mysql with mariadb 10.1
  2016-09-19  3:43   ` [Buildroot] [RFC v2] mysql: replace mysql with mariadb 10.1 Ryan Coe
@ 2016-09-19  3:43     ` Ryan Coe
  2016-09-19  5:42       ` Thomas Petazzoni
  2016-09-22 11:00     ` Floris Bos
  1 sibling, 1 reply; 15+ messages in thread
From: Ryan Coe @ 2016-09-19  3:43 UTC (permalink / raw)
  To: buildroot

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

Based on the work by:
Sylvain Raybaud <sylvain.raybaud@green-communications.fr>
https://patchwork.ozlabs.org/patch/538045/

Signed-off-by: Ryan Coe <bluemrp9@gmail.com>
---
Changes v1 -> v2
  - rebased to master
  - added openssl as dependency (suggested by Floris Bos)
  - bumped to mariadb version 10.1 (suggested by Floris Bos)
  - replaced custom my.cnf with my-small.cnf provided in the target (suggested by Floris Bos)
---
 package/Config.in                                  |    2 +-
 package/mysql/0000-ac_cache_check.patch            |  156 -
 package/mysql/0001-add-extra-check-for-librt.patch |   26 +
 package/mysql/0001-configure-ps-cache-check.patch  |   39 -
 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                            |   18 +-
 package/mysql/S97mysqld                            |  103 +-
 package/mysql/mysql.hash                           |    4 +-
 package/mysql/mysql.mk                             |  187 +-
 package/mysql/mysqld.service                       |    2 +-
 15 files changed, 204 insertions(+), 3911 deletions(-)
 delete mode 100644 package/mysql/0000-ac_cache_check.patch
 create mode 100644 package/mysql/0001-add-extra-check-for-librt.patch
 delete mode 100644 package/mysql/0001-configure-ps-cache-check.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

diff --git a/package/Config.in b/package/Config.in
index e30ce22..71bf91f 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -903,8 +903,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@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-add-extra-check-for-librt.patch b/package/mysql/0001-add-extra-check-for-librt.patch
new file mode 100644
index 0000000..aea7064
--- /dev/null
+++ b/package/mysql/0001-add-extra-check-for-librt.patch
@@ -0,0 +1,26 @@
+From 31094bd1fcccba2fb8b234735bb9bf60ba4afa28 Mon Sep 17 00:00:00 2001
+From: Ryan Coe <bluemrp9@gmail.com>
+Date: Sun, 18 Sep 2016 16:35:59 -0700
+Subject: [PATCH 1/1] add extra check for librt
+
+Signed-off-by: Ryan Coe <bluemrp9@gmail.com>
+---
+ configure.cmake | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/configure.cmake b/configure.cmake
+index 896226de954f4642a238ca6a72e0930590dc1681..77ca485fb05e6b63bb69f9561b4eabfaa208a419 100644
+--- a/configure.cmake
++++ b/configure.cmake
+@@ -126,6 +126,9 @@ IF(UNIX)
+   IF(NOT LIBRT)
+     MY_SEARCH_LIBS(clock_gettime rt LIBRT)
+   ENDIF()
++  IF(NOT LIBRT)
++    MY_SEARCH_LIBS(posix_spawn_file_actions_addclose rt LIBRT)
++  ENDIF()
+   FIND_PACKAGE(Threads)
+
+   SET(CMAKE_REQUIRED_LIBRARIES
+--
+2.9.3
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@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/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@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@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@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@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@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@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..f1b70db 100644
--- a/package/mysql/Config.in
+++ b/package/mysql/Config.in
@@ -1,24 +1,30 @@
 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_LIBAIO
+	select BR2_PACKAGE_LIBTOOL
+	select BR2_PACKAGE_LIBXML2
 	select BR2_PACKAGE_NCURSES
+	select BR2_PACKAGE_OPENSSL
 	select BR2_PACKAGE_READLINE
 	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 5a660e9..54d59e2 100644
--- a/package/mysql/S97mysqld
+++ b/package/mysql/S97mysqld
@@ -1,34 +1,79 @@
 #!/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 0755 /run/mysql
-
-		# We don't use start-stop-daemon because mysqld has
-		# its own wrapper script.
-		printf "Starting mysql..."
-		/usr/bin/mysqld_safe --pid-file=/run/mysql/mysqld.pid &
-		echo "done."
-		;;
-	stop)
-		printf "Stopping mysql..."
-		if test -f /run/mysql/mysqld.pid ; then
-			kill `cat /run/mysql/mysqld.pid`
+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
+
+	# mysqld runs as user mysql, but /run is only writable by root
+	# so create a subdirectory for mysql.
+	install -d -o mysql -g root -m 0755 $MYSQL_RUN
+
+	# We don't use start-stop-daemon because mysqld has its own
+	# wrapper script.
+	printf "Starting mysql ... "
+	/usr/bin/mysqld_safe --pid-file=$MYSQL_PID --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/mysql.hash b/package/mysql/mysql.hash
index 84f3361..f55ff6f 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	 4ca45ac5e34418761868115ebc8c068d511fed08e283b2cac52559d63ba4aab5  mariadb-10.1.17.tar.gz
diff --git a/package/mysql/mysql.mk b/package/mysql/mysql.mk
index 7af4711..0c05162 100644
--- a/package/mysql/mysql.mk
+++ b/package/mysql/mysql.mk
@@ -1,110 +1,98 @@
 ################################################################################
 #
-# 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.1.17
+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_LICENSE_FILES = README COPYING COPYING.LESSER
+MYSQL_INSTALL_STAGING = YES
 
-# Unix socket. This variable can also be consulted by other buildroot packages
-MYSQL_SOCKET = /run/mysql/mysql.sock
+# We won't need unit tests:
+MYSQL_OPTS += -DWITH_UNIT_TESTS=0
 
-MYSQL_CONF_ENV = \
-	ac_cv_sys_restartable_syscalls=yes \
-	ac_cv_path_PS=/bin/ps \
-	ac_cv_FIND_PROC="/bin/ps p \$\$PID | grep -v grep | grep mysqld > /dev/null" \
-	ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_GCC=yes \
-	ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS=no \
-	ac_cv_have_decl_HAVE_IB_GCC_ATOMIC_BUILTINS=yes \
-	mysql_cv_new_rl_interface=yes
-
-MYSQL_CONF_OPTS = \
-	--without-ndb-binlog \
-	--without-docs \
-	--without-man \
-	--without-libedit \
-	--without-readline \
-	--with-low-memory \
-	--enable-thread-safe-client \
-	--with-unix-socket-path=$(MYSQL_SOCKET) \
-	--disable-mysql-maintainer-mode
-
-# host-mysql only installs what is needed to build mysql, i.e. the
-# gen_lex_hash tool, and it only builds the parts that are needed to
-# create this tool
-HOST_MYSQL_DEPENDENCIES = host-zlib host-ncurses
-
-HOST_MYSQL_CONF_OPTS = \
-	--with-embedded-server \
-	--disable-mysql-maintainer-mode
-
-define HOST_MYSQL_BUILD_CMDS
-	$(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
+# 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
 
-define HOST_MYSQL_INSTALL_CMDS
-	$(INSTALL) -m 0755  $(@D)/sql/gen_lex_hash $(HOST_DIR)/usr/bin/
-endef
+# 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
 
-ifeq ($(BR2_PACKAGE_OPENSSL),y)
-MYSQL_DEPENDENCIES += openssl
-endif
+# 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
 
-ifeq ($(BR2_PACKAGE_ZLIB),y)
-MYSQL_DEPENDENCIES += zlib
-endif
+# 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
+# Unix socket. This variable can also be consulted by other buildroot packages
+MYSQL_SOCKET = /run/mysql/mysql.sock
 
-define MYSQL_ADD_FOLDER
-	$(INSTALL) -d $(TARGET_DIR)/var/mysql
-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=$(MYSQL_SOCKET)
+
+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
 
-MYSQL_POST_INSTALL_TARGET_HOOKS += MYSQL_ADD_FOLDER
+ifeq ($(BR2_PACKAGE_MYSQL_SERVER),y)
+define MYSQL_USERS
+	mysql -1 mysql -1 * /var/lib/mysql - - MySQL Server
+endef
 
 define MYSQL_INSTALL_INIT_SYSV
 	$(INSTALL) -D -m 0755 package/mysql/S97mysqld \
@@ -118,18 +106,19 @@ 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 $(TARGET_DIR)/usr/share/mysql/my-small.cnf \
+		$(TARGET_DIR)/etc/mysql/my.cnf
+	# We don't need this on the target as it's only useful in staging
+	$(RM) $(TARGET_DIR)/usr/bin/mysql_config
+	# Remove test suite
+	$(RM) -r $(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 c9e5e42..db93ba2 100644
--- a/package/mysql/mysqld.service
+++ b/package/mysql/mysqld.service
@@ -2,7 +2,7 @@
 Description=MySQL database server
 
 [Service]
-ExecStartPre=/bin/sh -c 'test -d /var/mysql/mysql || mysql_install_db --user=mysql --ldata=/var/mysql'
+ExecStartPre=/bin/sh -c '[ "`ls -1 /var/lib/mysql | wc -l`" = "0" ] && mysql_install_db --basedir=/usr --datadir=/var/lib/mysql'
 ExecStart=/usr/bin/mysqld_safe
 Restart=always
 User=mysql
-- 
2.9.3

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Buildroot] [RFC v2] mysql: replace mysql with mariadb 10.1
  2016-09-19  3:43     ` Ryan Coe
@ 2016-09-19  5:42       ` Thomas Petazzoni
  2016-09-21 22:02         ` Arnout Vandecappelle
  2016-09-23 23:00         ` Ryan Coe
  0 siblings, 2 replies; 15+ messages in thread
From: Thomas Petazzoni @ 2016-09-19  5:42 UTC (permalink / raw)
  To: buildroot

Hello,

On Sun, 18 Sep 2016 20:43:40 -0700, Ryan Coe wrote:
> Replaces the old mysql 5.1 with mariadb 10.1. The package was not renamed
> as mariadb is a drop-in replacement for mysql.
> 
> Based on the work by:
> Sylvain Raybaud <sylvain.raybaud@green-communications.fr>
> https://patchwork.ozlabs.org/patch/538045/
> 
> Signed-off-by: Ryan Coe <bluemrp9@gmail.com>

I don't know if I like the fact that we're hi-jacking the mysql package
here. Maybe this should be added as a separate package/mariadb/
package, and then the mysql package changed to a virtual package
afterwards, in a second patch?

This would also have the benefit of making this patch easier to review.

> diff --git a/package/mysql/0001-add-extra-check-for-librt.patch b/package/mysql/0001-add-extra-check-for-librt.patch
> new file mode 100644
> index 0000000..aea7064
> --- /dev/null
> +++ b/package/mysql/0001-add-extra-check-for-librt.patch
> @@ -0,0 +1,26 @@
> +From 31094bd1fcccba2fb8b234735bb9bf60ba4afa28 Mon Sep 17 00:00:00 2001
> +From: Ryan Coe <bluemrp9@gmail.com>
> +Date: Sun, 18 Sep 2016 16:35:59 -0700
> +Subject: [PATCH 1/1] add extra check for librt
> +
> +Signed-off-by: Ryan Coe <bluemrp9@gmail.com>
> +---
> + configure.cmake | 3 +++
> + 1 file changed, 3 insertions(+)
> +
> +diff --git a/configure.cmake b/configure.cmake
> +index 896226de954f4642a238ca6a72e0930590dc1681..77ca485fb05e6b63bb69f9561b4eabfaa208a419 100644
> +--- a/configure.cmake
> ++++ b/configure.cmake
> +@@ -126,6 +126,9 @@ IF(UNIX)
> +   IF(NOT LIBRT)
> +     MY_SEARCH_LIBS(clock_gettime rt LIBRT)
> +   ENDIF()
> ++  IF(NOT LIBRT)
> ++    MY_SEARCH_LIBS(posix_spawn_file_actions_addclose rt LIBRT)
> ++  ENDIF()

Please remember to send this patch to the upstream MariaDB project.

> diff --git a/package/mysql/Config.in b/package/mysql/Config.in
> index 7133892..f1b70db 100644
> --- a/package/mysql/Config.in
> +++ b/package/mysql/Config.in
> @@ -1,24 +1,30 @@
>  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_LIBAIO

Then you need to:

	depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS

> +	select BR2_PACKAGE_LIBTOOL

Are you sure you need libtool on the target? This seems odd.

> -comment "MySQL needs a toolchain w/ C++, threads"
> +comment "mariadb needs a toolchain w/ C++, threads"
>  	depends on BR2_USE_MMU

	depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS

>  	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS

> +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
> +}

Do we really need something like this?

> diff --git a/package/mysql/mysql.mk b/package/mysql/mysql.mk
> index 7af4711..0c05162 100644
> --- a/package/mysql/mysql.mk
> +++ b/package/mysql/mysql.mk
> @@ -1,110 +1,98 @@
>  ################################################################################
>  #
> -# 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.1.17
> +MYSQL_SOURCE = mariadb-$(MYSQL_VERSION).tar.gz
> +MYSQL_SITE = https://downloads.mariadb.org/interstitial/mariadb-$(MYSQL_VERSION)/source
>  MYSQL_LICENSE = GPLv2

Are you sure this license is correct? I believe mariadb is partly under
LGPLv2, no?

> +# 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

One line is probably enough for both.

> +MYSQL_OPTS += -DCMAKE_BUILD_TYPE=Release

Not needed, already passed by Buildroot in pkg-cmake.mk.

> +MYSQL_OPTS += -DCMAKE_INSTALL_PREFIX=/usr

Not needed, already passed by Builroot in pkg-cmake.mk.

> +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

Are these all needed?

Also, we prefer:

MYSQL_OPTS += \
	-DFOO=baz \
	-DBAR=foo \
	-Dthis=that

when there are multiple options to assign.

> +MYSQL_DEPENDENCIES = \
> +	host-mysql \
> +	ncurses \
> +	openssl \
> +	zlib \
> +	libaio \
> +	libxml2 \
> +	libtool \

You really need libtool?

> +	readline
> +
> +HOST_MYSQL_DEPENDENCIES =

Not needed.

> +# 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

I'm not sure why this import_executables.cmake file contains, but we
generally don't like accessing stuff from a build directory during the
build of another package. The host-mysql package is supposed to install
things in $(HOST_DIR), and the target mysql package to use them from
$(HOST_DIR).

> +
> +HOST_MYSQL_CONF_OPTS = $(MYSQL_OPTS)

This seems very wrong, a MYSQL_OPTS is for the target. As an example,
the host should be configured with
CMAKE_INSTALL_PREFIX=$(HOST_DIR)/usr. Please use an explicit value for
HOST_MYSQL_CONF_OPTS, with only the necessary options.

> +HOST_MYSQL_CONF_OPTS += $(MYSQL_HOST_OPTS)

Why do we have an intermediate MYSQL_HOST_OPTS variable then, rather
than using HOST_MYSQL_CONF_OPTS directly?

> +
> +MYSQL_CONF_OPTS = $(MYSQL_OPTS)

Why do we have an intermediate MYSQL_OPTS variable? Just use
MYSQL_CONF_OPTS directly.

> +MYSQL_CONF_OPTS += $(MYSQL_IMPORT_EXECUTABLES)

Intermediate variable not needed.

> +
> +# 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

This would be the place where you could install the host-mysql stuff in
$(HOST_DIR).

>  [Service]
> -ExecStartPre=/bin/sh -c 'test -d /var/mysql/mysql || mysql_install_db --user=mysql --ldata=/var/mysql'
> +ExecStartPre=/bin/sh -c '[ "`ls -1 /var/lib/mysql | wc -l`" = "0" ] && mysql_install_db --basedir=/usr --datadir=/var/lib/mysql'

Why is the test on /var/mysql/mysql existence no longer good enough? It
was much nicer than the test of the number of files in this directory.

Thanks for this effort, it is much appreciated that someone takes care
of updating this complicated package.

Thanks!

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Buildroot] [RFC v2] mysql: replace mysql with mariadb 10.1
  2016-09-19  5:42       ` Thomas Petazzoni
@ 2016-09-21 22:02         ` Arnout Vandecappelle
  2016-09-22  5:33           ` Thomas Petazzoni
  2016-09-23 23:00         ` Ryan Coe
  1 sibling, 1 reply; 15+ messages in thread
From: Arnout Vandecappelle @ 2016-09-21 22:02 UTC (permalink / raw)
  To: buildroot



On 19-09-16 07:42, Thomas Petazzoni wrote:
> Hello,
> 
> On Sun, 18 Sep 2016 20:43:40 -0700, Ryan Coe wrote:
>> Replaces the old mysql 5.1 with mariadb 10.1. The package was not renamed
>> as mariadb is a drop-in replacement for mysql.
>>
>> Based on the work by:
>> Sylvain Raybaud <sylvain.raybaud@green-communications.fr>
>> https://patchwork.ozlabs.org/patch/538045/
>>
>> Signed-off-by: Ryan Coe <bluemrp9@gmail.com>
> 
> I don't know if I like the fact that we're hi-jacking the mysql package
> here. Maybe this should be added as a separate package/mariadb/
> package, and then the mysql package changed to a virtual package
> afterwards, in a second patch?

 *Someone* wrote in
http://lists.buildroot.org/pipermail/buildroot/2016-September/172401.html :

TP> As Floris said, our mysql package is deprecated, so I'm all for
TP> replacing it with an up-to-date mariadb package. If later on, someone
TP> else really needs MySQL, we can re-add it, and add the necessary
TP> virtual package to allow selecting between mysql and mariadb. But until
TP> there's a decent mysql package available, I believe replacing it
TP> completely with an up-to-date mariadb package is better.


> This would also have the benefit of making this patch easier to review.

 That is true.


[snip]
>> +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
>> +}
> 
> Do we really need something like this?

 Well, we need to wait until mysqld really has started before continuing,
because later init scripts may depend on it. However, I think it's better to use
--no-auto-restart to mysqld_safe, which kind of implies the wait. AFAIK there
are no other daemons that autorestart.

> 
>> diff --git a/package/mysql/mysql.mk b/package/mysql/mysql.mk
>> index 7af4711..0c05162 100644
>> --- a/package/mysql/mysql.mk
>> +++ b/package/mysql/mysql.mk
>> @@ -1,110 +1,98 @@
>>  ################################################################################
>>  #
>> -# mysql
>> +# mariadb

 This should remain mysql, because the package is still called mysql. Oh well,
this entire header is silly, but it is what it is :-)

>>  #
>>  ################################################################################
>>  
>> -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.1.17
>> +MYSQL_SOURCE = mariadb-$(MYSQL_VERSION).tar.gz
>> +MYSQL_SITE = https://downloads.mariadb.org/interstitial/mariadb-$(MYSQL_VERSION)/source
>>  MYSQL_LICENSE = GPLv2
> 
> Are you sure this license is correct? I believe mariadb is partly under
> LGPLv2, no?

 It's a bit complicated because there is the old mysql client library that is
GPLv2 with FLOSS exception, and the new mariadb client library that is LGPLv2.
I'm not entirely sure if this new mariadb client library is the one that is
actually used by applications that link with libmysql_client. If not, or if the
old mysql client library is still installed to target, then we have to add the
three licenses.

 See https://mariadb.com/kb/en/mariadb/mariadb-license/ for more details.


> 
>> +# 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
> 
> One line is probably enough for both.

 Well, since there are a lot more += -D options, I kind of like it like this.
Principle of least surprise.

> 
>> +MYSQL_OPTS += -DCMAKE_BUILD_TYPE=Release
> 
> Not needed, already passed by Buildroot in pkg-cmake.mk.
> 
>> +MYSQL_OPTS += -DCMAKE_INSTALL_PREFIX=/usr
> 
> Not needed, already passed by Builroot in pkg-cmake.mk.
> 
>> +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
> 
> Are these all needed?
> 
> Also, we prefer:
> 
> MYSQL_OPTS += \
> 	-DFOO=baz \
> 	-DBAR=foo \
> 	-Dthis=that
> 
> when there are multiple options to assign.

 Ah, do we? :-)


[snip]
>> +# 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
> 
> I'm not sure why this import_executables.cmake file contains, but we
> generally don't like accessing stuff from a build directory during the
> build of another package. The host-mysql package is supposed to install
> things in $(HOST_DIR), and the target mysql package to use them from
> $(HOST_DIR).

 As I understand it from
https://mariadb.com/kb/en/mariadb/cross-compiling-mariadb/
you basically need a configure-hostbuild-configure-build chain for
cross-compiling. The binaries generated during the hostbuild are not meant to be
used outside of the mariadb build process itself, so it really makes no sense to
make it a host package IMHO. I think it's better to do the hostbuild in a
pre-configure hook.

 Problem with that is that
* the pre-configure hook will also build stuff;
* the cmake call in the pre-configure hook will also have to pass some/most/all
of the -D arguments we pass in a host-cmake package's _CONFIGURE_CMDS.
The first point is not so important IMHO. For the second one, it would be
convenient if we would define a HOST/TARGET_CMAKE_CONF_OPTS variable that
contains all these common options.

> 
>> +
>> +HOST_MYSQL_CONF_OPTS = $(MYSQL_OPTS)
> 
> This seems very wrong, a MYSQL_OPTS is for the target. As an example,
> the host should be configured with
> CMAKE_INSTALL_PREFIX=$(HOST_DIR)/usr. Please use an explicit value for
> HOST_MYSQL_CONF_OPTS, with only the necessary options.

 Indeed, I expect most of them are not needed for the hostbuild.

> 
>> +HOST_MYSQL_CONF_OPTS += $(MYSQL_HOST_OPTS)
> 
> Why do we have an intermediate MYSQL_HOST_OPTS variable then, rather
> than using HOST_MYSQL_CONF_OPTS directly?
> 
>> +
>> +MYSQL_CONF_OPTS = $(MYSQL_OPTS)
> 
> Why do we have an intermediate MYSQL_OPTS variable? Just use
> MYSQL_CONF_OPTS directly.
> 
>> +MYSQL_CONF_OPTS += $(MYSQL_IMPORT_EXECUTABLES)
> 
> Intermediate variable not needed.
> 
>> +
>> +# 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
> 
> This would be the place where you could install the host-mysql stuff in
> $(HOST_DIR).
> 
>>  [Service]
>> -ExecStartPre=/bin/sh -c 'test -d /var/mysql/mysql || mysql_install_db --user=mysql --ldata=/var/mysql'
>> +ExecStartPre=/bin/sh -c '[ "`ls -1 /var/lib/mysql | wc -l`" = "0" ] && mysql_install_db --basedir=/usr --datadir=/var/lib/mysql'
> 
> Why is the test on /var/mysql/mysql existence no longer good enough? It
> was much nicer than the test of the number of files in this directory.

 I agree with that. Same goes for the init script by the way.

 However, is there a reason why the systemd unit file bundled with mariadb
doesn't work? Or is it too complicated?

 By the way, there is also the option of generating the system database at build
time. It would be kind of nice if we had a convention in buildroot to install
defaults somewhere and then copy the defaults to their final location on a
writable partition at boot time when they don't exist yet. Like the
/usr/share/factory/ default of systemd-tmpfiles...

 Regards,
 Arnout

> 
> Thanks for this effort, it is much appreciated that someone takes care
> of updating this complicated package.
> 
> Thanks!
> 
> Thomas
> 

-- 
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Buildroot] [RFC v2] mysql: replace mysql with mariadb 10.1
  2016-09-21 22:02         ` Arnout Vandecappelle
@ 2016-09-22  5:33           ` Thomas Petazzoni
  2016-09-22  9:28             ` Floris Bos
  0 siblings, 1 reply; 15+ messages in thread
From: Thomas Petazzoni @ 2016-09-22  5:33 UTC (permalink / raw)
  To: buildroot

Hello,

On Thu, 22 Sep 2016 00:02:31 +0200, Arnout Vandecappelle wrote:

> > I don't know if I like the fact that we're hi-jacking the mysql package
> > here. Maybe this should be added as a separate package/mariadb/
> > package, and then the mysql package changed to a virtual package
> > afterwards, in a second patch?  
> 
>  *Someone* wrote in
> http://lists.buildroot.org/pipermail/buildroot/2016-September/172401.html :
> 
> TP> As Floris said, our mysql package is deprecated, so I'm all for
> TP> replacing it with an up-to-date mariadb package. If later on, someone
> TP> else really needs MySQL, we can re-add it, and add the necessary
> TP> virtual package to allow selecting between mysql and mariadb. But until
> TP> there's a decent mysql package available, I believe replacing it
> TP> completely with an up-to-date mariadb package is better.  

Yes, I know. In French we say "only stupid people don't change their
mind" :-)

> >> +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
> >> +}  
> > 
> > Do we really need something like this?  
> 
>  Well, we need to wait until mysqld really has started before continuing,
> because later init scripts may depend on it. However, I think it's better to use
> --no-auto-restart to mysqld_safe, which kind of implies the wait. AFAIK there
> are no other daemons that autorestart.

I don't think we're doing this kind of wait for any other service in
Buildroot, so it would be good if MariaDB could daemonize only once it
is ready to listen to connections.

> >>  ################################################################################
> >>  #
> >> -# mysql
> >> +# mariadb  
> 
>  This should remain mysql, because the package is still called mysql. Oh well,
> this entire header is silly, but it is what it is :-)

Except if we ask to have this new package in package/mariadb/, and
mysql be turned into a virtual package (with for now a single provider).

Also, I think mysql should be a virtual package like jpeg, i.e a
virtual package on which "select" can be used.

> >> +MYSQL_SOURCE = mariadb-$(MYSQL_VERSION).tar.gz
> >> +MYSQL_SITE = https://downloads.mariadb.org/interstitial/mariadb-$(MYSQL_VERSION)/source
> >>  MYSQL_LICENSE = GPLv2  
> > 
> > Are you sure this license is correct? I believe mariadb is partly under
> > LGPLv2, no?  
> 
>  It's a bit complicated because there is the old mysql client library that is
> GPLv2 with FLOSS exception, and the new mariadb client library that is LGPLv2.
> I'm not entirely sure if this new mariadb client library is the one that is
> actually used by applications that link with libmysql_client. If not, or if the
> old mysql client library is still installed to target, then we have to add the
> three licenses.

Isn't part of the original idea of MariaDB to avoid the GPL-licensed
client library so that proprietary applications can link with the
client library without having to purchase a MySQL license?

>  See https://mariadb.com/kb/en/mariadb/mariadb-license/ for more details.

Reading this, I think we should use:

MARIADB_LICENSE = GPLv2 (server), GPLv2 with FLOSS exception (GPL client library), LGPLv2 (LGPL client library)

> >> +# 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  
> > 
> > One line is probably enough for both.  
> 
>  Well, since there are a lot more += -D options, I kind of like it like this.
> Principle of least surprise.

I really prefer:

MYSQL_OPTS += \
	-DWITH_JEMALLOC=no \
	-DWITHOUT_TOKUDB=1

or:

MYSQL_OPTS += -DWITH_JEMALLOC=no -DWITHOUT_TOKUDB=1

> > Are these all needed?
> > 
> > Also, we prefer:
> > 
> > MYSQL_OPTS += \
> > 	-DFOO=baz \
> > 	-DBAR=foo \
> > 	-Dthis=that
> > 
> > when there are multiple options to assign.  
> 
>  Ah, do we? :-)

Yes, that's what we're doing everywhere in Buildroot.

> >> +# 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  
> > 
> > I'm not sure why this import_executables.cmake file contains, but we
> > generally don't like accessing stuff from a build directory during the
> > build of another package. The host-mysql package is supposed to install
> > things in $(HOST_DIR), and the target mysql package to use them from
> > $(HOST_DIR).  
> 
>  As I understand it from
> https://mariadb.com/kb/en/mariadb/cross-compiling-mariadb/
> you basically need a configure-hostbuild-configure-build chain for
> cross-compiling. The binaries generated during the hostbuild are not meant to be
> used outside of the mariadb build process itself, so it really makes no sense to
> make it a host package IMHO. I think it's better to do the hostbuild in a
> pre-configure hook.
> 
>  Problem with that is that
> * the pre-configure hook will also build stuff;
> * the cmake call in the pre-configure hook will also have to pass some/most/all
> of the -D arguments we pass in a host-cmake package's _CONFIGURE_CMDS.
> The first point is not so important IMHO. For the second one, it would be
> convenient if we would define a HOST/TARGET_CMAKE_CONF_OPTS variable that
> contains all these common options.

Well, so in the end, a host package is better :-)

I'm fine with the approach of the host package, I just dislike that the
target package re-uses stuff directly from the host package source
directory.

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Buildroot] [RFC v2] mysql: replace mysql with mariadb 10.1
  2016-09-22  5:33           ` Thomas Petazzoni
@ 2016-09-22  9:28             ` Floris Bos
  0 siblings, 0 replies; 15+ messages in thread
From: Floris Bos @ 2016-09-22  9:28 UTC (permalink / raw)
  To: buildroot

Hi,

On 09/22/2016 07:33 AM, Thomas Petazzoni wrote:
>
> Isn't part of the original idea of MariaDB to avoid the GPL-licensed
> client library so that proprietary applications can link with the
> client library without having to purchase a MySQL license?

The server distribution still uses the old GPL one for now.

There is a separate download called MariaDB connector/C that is a LGPL 
libmysqlclient replacement.
However that one wasn't really source code compatible with existing 
programs last time I tried to compile a couple buildroot packages 
against it.

Upstream bug: https://jira.mariadb.org/projects/CONC/issues/CONC-200


Yours sincerely,

Floris Bos

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Buildroot] [RFC v2] mysql: replace mysql with mariadb 10.1
  2016-09-19  3:43   ` [Buildroot] [RFC v2] mysql: replace mysql with mariadb 10.1 Ryan Coe
  2016-09-19  3:43     ` Ryan Coe
@ 2016-09-22 11:00     ` Floris Bos
  1 sibling, 0 replies; 15+ messages in thread
From: Floris Bos @ 2016-09-22 11:00 UTC (permalink / raw)
  To: buildroot

Hi,

On 09/19/2016 05:43 AM, Ryan Coe wrote:
> This patch represents my attempt to replace the aging mysql 5.1 that is
> currently shipped with Buildroot. I am replacing mysql altogether with mariadb
> version 10.1. I have been able to test this with both an arm and a x86_64
> build, and it has also been tested with glibc and uclibc.  I have not tested it
> with systemd.

Still broken on ARM uclibc

==
[ 61%] Building CXX object 
libmysqld/CMakeFiles/sql_embedded.dir/__/sql/item_row.cc.o
/mnt/nfs/buildroot/buildroot/output/build/mysql-10.1.17/sql/signal_handler.cc: 
In function ?void handle_fatal_signal(int)?:
/mnt/nfs/buildroot/buildroot/output/build/mysql-10.1.17/sql/signal_handler.cc:285:21: 
error: ?thd? was not declared in this scope
      my_write_stderr(thd->query(), MY_MIN(65536U, thd->query_length()));
                      ^
==

Seems to be a bug where they declare thd within an #ifdef:

==
#ifdef HAVE_STACKTRACE
   THD *thd;
#endif
==

But the code using thd is not within an #ifdef.


> # 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

Is this still a problem with 10.1 ?
Recall it tries to use system jemalloc if present, instead of some 
bundled version now.

So could probably make it a soft depedency:

==
ifeq ($(BR2_PACKAGE_JEMALLOC),y)
MYSQL_DEPENDENCIES += jemalloc
endef
==

> 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
> }

Is it certain that the server is ready to accept connections if there's 
a pid file?
The sample init file in support-files/mysql.server seems to use 
"mysqladmin ping" instead

==
wait_for_ready () {

   i=0
   while test $i -ne $service_startup_timeout ; do

     if $bindir/mysqladmin ping >/dev/null 2>&1; then
       log_success_msg
       return 0
     elif kill -0 $! 2>/dev/null ; then
       :  # mysqld_safe is still running
     else
       # mysqld_safe is no longer running, abort the wait loop
       break
     fi

     echo $echo_n ".$echo_c"
     i=`expr $i + 1`
     sleep 1

   done

   log_failure_msg
   return 1
}
==



Yours sincerely,

Floris Bos

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Buildroot] [RFC v2] mysql: replace mysql with mariadb 10.1
  2016-09-19  5:42       ` Thomas Petazzoni
  2016-09-21 22:02         ` Arnout Vandecappelle
@ 2016-09-23 23:00         ` Ryan Coe
  1 sibling, 0 replies; 15+ messages in thread
From: Ryan Coe @ 2016-09-23 23:00 UTC (permalink / raw)
  To: buildroot

Thomas, All,

On 09/18/2016 10:42 PM, Thomas Petazzoni wrote:
> Hello,
>
> On Sun, 18 Sep 2016 20:43:40 -0700, Ryan Coe wrote:
>> Replaces the old mysql 5.1 with mariadb 10.1. The package was not renamed
>> as mariadb is a drop-in replacement for mysql.
>>
>> Based on the work by:
>> Sylvain Raybaud <sylvain.raybaud@green-communications.fr>
>> https://patchwork.ozlabs.org/patch/538045/
>>
>> Signed-off-by: Ryan Coe <bluemrp9@gmail.com>
> I don't know if I like the fact that we're hi-jacking the mysql package
> here. Maybe this should be added as a separate package/mariadb/
> package, and then the mysql package changed to a virtual package
> afterwards, in a second patch?
>
> This would also have the benefit of making this patch easier to review.
Will do.  I will make mariadb a separate package and create a virtual 
package for mysql.
>
>> diff --git a/package/mysql/0001-add-extra-check-for-librt.patch b/package/mysql/0001-add-extra-check-for-librt.patch
>> new file mode 100644
>> index 0000000..aea7064
>> --- /dev/null
>> +++ b/package/mysql/0001-add-extra-check-for-librt.patch
>> @@ -0,0 +1,26 @@
>> +From 31094bd1fcccba2fb8b234735bb9bf60ba4afa28 Mon Sep 17 00:00:00 2001
>> +From: Ryan Coe <bluemrp9@gmail.com>
>> +Date: Sun, 18 Sep 2016 16:35:59 -0700
>> +Subject: [PATCH 1/1] add extra check for librt
>> +
>> +Signed-off-by: Ryan Coe <bluemrp9@gmail.com>
>> +---
>> + configure.cmake | 3 +++
>> + 1 file changed, 3 insertions(+)
>> +
>> +diff --git a/configure.cmake b/configure.cmake
>> +index 896226de954f4642a238ca6a72e0930590dc1681..77ca485fb05e6b63bb69f9561b4eabfaa208a419 100644
>> +--- a/configure.cmake
>> ++++ b/configure.cmake
>> +@@ -126,6 +126,9 @@ IF(UNIX)
>> +   IF(NOT LIBRT)
>> +     MY_SEARCH_LIBS(clock_gettime rt LIBRT)
>> +   ENDIF()
>> ++  IF(NOT LIBRT)
>> ++    MY_SEARCH_LIBS(posix_spawn_file_actions_addclose rt LIBRT)
>> ++  ENDIF()
> Please remember to send this patch to the upstream MariaDB project.
Sent upstream: https://jira.mariadb.org/browse/MDEV-10841
>
>> diff --git a/package/mysql/Config.in b/package/mysql/Config.in
>> index 7133892..f1b70db 100644
>> --- a/package/mysql/Config.in
>> +++ b/package/mysql/Config.in
>> @@ -1,24 +1,30 @@
>>   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_LIBAIO
> Then you need to:
>
> 	depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS
Added.
>
>> +	select BR2_PACKAGE_LIBTOOL
> Are you sure you need libtool on the target? This seems odd.
Removed.
>
>> -comment "MySQL needs a toolchain w/ C++, threads"
>> +comment "mariadb needs a toolchain w/ C++, threads"
>>   	depends on BR2_USE_MMU
> 	depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS
Added.
>
>>   	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS
>> +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
>> +}
> Do we really need something like this?
I will rework this per the other conservations on this.
>
>> diff --git a/package/mysql/mysql.mk b/package/mysql/mysql.mk
>> index 7af4711..0c05162 100644
>> --- a/package/mysql/mysql.mk
>> +++ b/package/mysql/mysql.mk
>> @@ -1,110 +1,98 @@
>>   ################################################################################
>>   #
>> -# 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.1.17
>> +MYSQL_SOURCE = mariadb-$(MYSQL_VERSION).tar.gz
>> +MYSQL_SITE = https://downloads.mariadb.org/interstitial/mariadb-$(MYSQL_VERSION)/source
>>   MYSQL_LICENSE = GPLv2
> Are you sure this license is correct? I believe mariadb is partly under
> LGPLv2, no?
Updated per other conservations.
>
>> +# 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
> One line is probably enough for both.
Fixed.
>
>> +MYSQL_OPTS += -DCMAKE_BUILD_TYPE=Release
> Not needed, already passed by Buildroot in pkg-cmake.mk.
Removed.
>
>> +MYSQL_OPTS += -DCMAKE_INSTALL_PREFIX=/usr
> Not needed, already passed by Builroot in pkg-cmake.mk.
Removed.
>
>> +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
> Are these all needed?
>
> Also, we prefer:
>
> MYSQL_OPTS += \
> 	-DFOO=baz \
> 	-DBAR=foo \
> 	-Dthis=that
>
> when there are multiple options to assign.
Updated.
>
>> +MYSQL_DEPENDENCIES = \
>> +	host-mysql \
>> +	ncurses \
>> +	openssl \
>> +	zlib \
>> +	libaio \
>> +	libxml2 \
>> +	libtool \
> You really need libtool?
Removed.
>
>> +	readline
>> +
>> +HOST_MYSQL_DEPENDENCIES =
> Not needed.
Removed.
>
>> +# 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
> I'm not sure why this import_executables.cmake file contains, but we
> generally don't like accessing stuff from a build directory during the
> build of another package. The host-mysql package is supposed to install
> things in $(HOST_DIR), and the target mysql package to use them from
> $(HOST_DIR).
See https://mariadb.com/kb/en/mariadb/cross-compiling-mariadb/
This has also been discussed in the other threads.
>> +
>> +HOST_MYSQL_CONF_OPTS = $(MYSQL_OPTS)
> This seems very wrong, a MYSQL_OPTS is for the target. As an example,
> the host should be configured with
> CMAKE_INSTALL_PREFIX=$(HOST_DIR)/usr. Please use an explicit value for
> HOST_MYSQL_CONF_OPTS, with only the necessary options.
>
>> +HOST_MYSQL_CONF_OPTS += $(MYSQL_HOST_OPTS)
> Why do we have an intermediate MYSQL_HOST_OPTS variable then, rather
> than using HOST_MYSQL_CONF_OPTS directly?
>
>> +
>> +MYSQL_CONF_OPTS = $(MYSQL_OPTS)
> Why do we have an intermediate MYSQL_OPTS variable? Just use
> MYSQL_CONF_OPTS directly.
>
>> +MYSQL_CONF_OPTS += $(MYSQL_IMPORT_EXECUTABLES)
> Intermediate variable not needed.
I will update.
>
>> +
>> +# 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
> This would be the place where you could install the host-mysql stuff in
> $(HOST_DIR).
>
>>   [Service]
>> -ExecStartPre=/bin/sh -c 'test -d /var/mysql/mysql || mysql_install_db --user=mysql --ldata=/var/mysql'
>> +ExecStartPre=/bin/sh -c '[ "`ls -1 /var/lib/mysql | wc -l`" = "0" ] && mysql_install_db --basedir=/usr --datadir=/var/lib/mysql'
> Why is the test on /var/mysql/mysql existence no longer good enough? It
> was much nicer than the test of the number of files in this directory.
I am using /var/lib/mysql as the data directory.  This is the same 
directory as the home for the mysql user.  The directory must be created 
or makedevs will fail.  Therefore, the test on the directory will never 
allow mysql_install_db to run.
>
> Thanks for this effort, it is much appreciated that someone takes care
> of updating this complicated package.
>
> Thanks!
>
> Thomas
Thanks to everyone for your reviews.

-Ryan

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2016-09-23 23:00 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-09-12 22:05 [Buildroot] [PATCH 0/1] [RFC] replace mysql with mariadb 10.0 Ryan Coe
2016-09-12 22:05 ` [Buildroot] [PATCH 1/1] [RFC] mysql: " Ryan Coe
2016-09-14 14:46   ` [Buildroot] [1/1,RFC] " Floris Bos
2016-09-14 18:44     ` Ryan Coe
2016-09-19  3:43   ` [Buildroot] [RFC v2] mysql: replace mysql with mariadb 10.1 Ryan Coe
2016-09-19  3:43     ` Ryan Coe
2016-09-19  5:42       ` Thomas Petazzoni
2016-09-21 22:02         ` Arnout Vandecappelle
2016-09-22  5:33           ` Thomas Petazzoni
2016-09-22  9:28             ` Floris Bos
2016-09-23 23:00         ` Ryan Coe
2016-09-22 11:00     ` Floris Bos
2016-09-14 22:41 ` [Buildroot] [PATCH 0/1] [RFC] replace mysql with mariadb 10.0 Stewart Smith
2016-09-15  6:18   ` Arnout Vandecappelle
2016-09-17 13:51   ` Thomas Petazzoni

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.