aboutsummaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorJo-Philipp Wich <jo@mein.io>2018-04-28 14:46:29 +0200
committerGitHub <noreply@github.com>2018-04-28 14:46:29 +0200
commit19ba0551a84105b8902474cfefca80862c847d1c (patch)
tree3259088f6bb37674d6483c77d65b110df42f276b /utils
parent9859871c03753d70ca1031036104ee17d7d9c265 (diff)
parent1b73f267eae2dedc18969b70ed7c5d9b02288bac (diff)
Merge pull request #5851 from micmac1/mariadb
mysql: switch from MySQL to Mariadb
Diffstat (limited to 'utils')
-rw-r--r--utils/mariadb/Makefile542
-rw-r--r--utils/mariadb/conf/my.cnf (renamed from utils/mysql/conf/my.cnf)0
-rw-r--r--utils/mariadb/files/mysqld.init (renamed from utils/mysql/files/mysqld.init)0
-rw-r--r--utils/mariadb/patches/100-fix_hostname.patch (renamed from utils/mysql/patches/100-fix_hostname.patch)4
-rw-r--r--utils/mariadb/patches/110-pcre.cmake.patch11
-rw-r--r--utils/mariadb/patches/120-fix-ucontext-check.patch18
-rw-r--r--utils/mariadb/patches/130-c11_atomics.patch121
-rw-r--r--utils/mariadb/patches/140-mips-connect-unaligned.patch262
-rw-r--r--utils/mariadb/patches/150-mips-innobase-atomic.patch14
-rw-r--r--utils/mariadb/patches/160-mips-machine.patch25
-rw-r--r--utils/mariadb/patches/170-ppc-remove-glibc-dep.patch75
-rw-r--r--utils/mysql/Makefile186
-rw-r--r--utils/mysql/patches/110-cross_compile.patch179
-rw-r--r--utils/mysql/patches/120-bison-compat.patch3290
14 files changed, 1070 insertions, 3657 deletions
diff --git a/utils/mariadb/Makefile b/utils/mariadb/Makefile
new file mode 100644
index 000000000..a42f61f9e
--- /dev/null
+++ b/utils/mariadb/Makefile
@@ -0,0 +1,542 @@
+#
+# Copyright (C) 2018 Sebastian Kemper <sebastian_ml@gmx.net>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=mariadb
+PKG_VERSION:=10.1.32
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://downloads.mariadb.org/interstitial/$(PKG_NAME)-$(PKG_VERSION)/source
+
+PKG_HASH:=0e2aae6a6a190d07c8e36e87dd43377057fa82651ca3c583462563f3e9369096
+PKG_MAINTAINER:=Sebastian Kemper <sebastian_ml@gmx.net>
+PKG_LICENSE:=GPL-2.0
+PKG_LICENSE_FILES:=COPYING
+
+HOST_BUILD_PARALLEL:=1
+PKG_BUILD_PARALLEL:=1
+PKG_USE_MIPS16:=0
+
+HOST_BUILD_DEPENDS:=libxml2/host
+PKG_BUILD_DEPENDS:=mariadb/host
+
+CMAKE_INSTALL:=1
+
+PLUGIN_DIR:=/usr/lib/mysql/plugin
+
+MARIADB_COMMON_DEPENDS := \
+ +libatomic \
+ +libopenssl \
+ +libstdcpp \
+ +zlib
+
+MARIADB_SERVER_PLUGINS := \
+ adt_null \
+ auth_0x0100 \
+ auth_ed25519 \
+ auth_socket \
+ auth_test_plugin \
+ client_ed25519 \
+ debug_key_management \
+ dialog_examples \
+ disks \
+ example_key_management \
+ feedback \
+ file_key_management \
+ ha_archive \
+ ha_blackhole \
+ ha_connect \
+ ha_example \
+ ha_federated \
+ ha_federatedx \
+ ha_innodb \
+ ha_spider \
+ ha_test_sql_discovery \
+ handlersocket \
+ libdaemon_example \
+ locales \
+ metadata_lock_info \
+ mypluglib \
+ qa_auth_client \
+ qa_auth_interface \
+ qa_auth_server \
+ query_cache_info \
+ query_response_time \
+ semisync_master \
+ semisync_slave \
+ server_audit \
+ simple_password_check \
+ sql_errlog \
+ wsrep_info
+
+PKG_CONFIG_DEPENDS := \
+ $(patsubst %,CONFIG_PACKAGE_$(PKG_NAME)-server-plugin-%,$(subst _,-,$(MARIADB_SERVER_PLUGINS))) \
+ CONFIG_PACKAGE_mariadb-server
+
+plugin-adt_null := PLUGIN_AUDIT_NULL
+plugin-auth_0x0100 := PLUGIN_AUTH_0X0100
+plugin-auth_ed25519 := PLUGIN_AUTH_ED25519
+plugin-auth_socket := PLUGIN_AUTH_SOCKET
+plugin-auth_test_plugin := PLUGIN_AUTH_TEST_PLUGIN
+plugin-client_ed25519 := PLUGIN_CLIENT_ED25519
+plugin-debug_key_management := PLUGIN_DEBUG_KEY_MANAGEMENT
+plugin-dialog_examples := PLUGIN_DIALOG_EXAMPLES
+plugin-disks := PLUGIN_DISKS
+plugin-example_key_management := PLUGIN_EXAMPLE_KEY_MANAGEMENT
+plugin-feedback := PLUGIN_FEEDBACK
+plugin-file_key_management := PLUGIN_FILE_KEY_MANAGEMENT
+plugin-ha_archive := PLUGIN_ARCHIVE
+plugin-ha_blackhole := PLUGIN_BLACKHOLE
+plugin-ha_connect := PLUGIN_CONNECT
+plugin-ha_example := PLUGIN_EXAMPLE
+plugin-ha_federated := PLUGIN_FEDERATED
+plugin-ha_federatedx := PLUGIN_FEDERATEDX
+plugin-ha_innodb := PLUGIN_INNOBASE
+plugin-ha_spider := PLUGIN_SPIDER
+plugin-ha_test_sql_discovery := PLUGIN_TEST_SQL_DISCOVERY
+plugin-handlersocket := PLUGIN_HANDLERSOCKET
+plugin-libdaemon_example := PLUGIN_DAEMON_EXAMPLE
+plugin-locales := PLUGIN_LOCALES
+plugin-metadata_lock_info := PLUGIN_METADATA_LOCK_INFO
+plugin-mypluglib := PLUGIN_FTEXAMPLE
+plugin-qa_auth_client := PLUGIN_QA_AUTH_CLIENT
+plugin-qa_auth_interface := PLUGIN_QA_AUTH_INTERFACE
+plugin-qa_auth_server := PLUGIN_QA_AUTH_SERVER
+plugin-query_cache_info := PLUGIN_QUERY_CACHE_INFO
+plugin-query_response_time := PLUGIN_QUERY_RESPONSE_TIME
+plugin-semisync_master := PLUGIN_SEMISYNC_MASTER
+plugin-semisync_slave := PLUGIN_SEMISYNC_SLAVE
+plugin-server_audit := PLUGIN_SERVER_AUDIT
+plugin-simple_password_check := PLUGIN_SIMPLE_PASSWORD_CHECK
+plugin-sql_errlog := PLUGIN_SQL_ERRLOG
+plugin-wsrep_info := PLUGIN_WSREP_INFO
+
+MARIADB_CLIENT := \
+ mysql \
+ mysqlcheck
+
+MARIADB_CLIENT_EXTRA := \
+ mysql_find_rows \
+ mysql_waitpid \
+ mysqlaccess \
+ mysqladmin \
+ mysqldump \
+ mysqlimport \
+ mysqlshow \
+ mysqlslap \
+ mytop
+
+MARIADB_SERVER := \
+ innochecksum \
+ my_print_defaults \
+ mysql_install_db \
+ mysql_upgrade \
+ mysqld
+
+MARIADB_SERVER_EXTRA := \
+ aria* \
+ mariabackup \
+ msql2mysql \
+ myisam_ftdump \
+ myisamchk \
+ myisamlog \
+ myisampack \
+ mysql_convert_table_format \
+ mysql_fix_extensions \
+ mysql_plugin \
+ mysql_secure_installation \
+ mysql_setpermission \
+ mysql_tzinfo_to_sql \
+ mysqlbinlog \
+ mysqld_multi \
+ mysqld_safe \
+ mysqld_safe_helper \
+ mysqldumpslow \
+ mysqlhotcopy \
+ perror \
+ replace \
+ resolve_stack_dump
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/host-build.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Package/mariadb/install/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/$(2) $(1)/usr/bin
+endef
+
+define Package/mariadb/description/Default
+MariaDB is a fast, stable and true multi-user, multi-threaded SQL
+database server. SQL (Structured Query Language) is the most popular
+database query language in the world. The main goals of MariaDB are
+speed, robustness and ease of use.
+endef
+
+define Package/libmariadbclient
+ SECTION:=libs
+ CATEGORY:=Libraries
+ DEPENDS:=$(MARIADB_COMMON_DEPENDS)
+ TITLE:=MariaDB database client library
+ URL:=https://mariadb.org/
+ PROVIDES:=libmysqlclient libmysqlclient-r
+endef
+
+define Package/libmariadbclient/description
+$(call Package/mariadb/description/Default)
+
+This package includes the client library.
+
+endef
+
+define Package/mariadb/Default
+ SECTION:=utils
+ CATEGORY:=Utilities
+ URL:=https://mariadb.org/
+ SUBMENU:=database
+endef
+
+define Package/mariadb-client
+ $(call Package/mariadb/Default)
+ TITLE:=MariaDB database core client binaries
+ DEPENDS:= \
+ $(MARIADB_COMMON_DEPENDS) \
+ +libncursesw
+endef
+
+define Package/mariadb-client/description
+$(call Package/mariadb/description/Default)
+
+This package includes the following core client binaries:
+
+$(subst $(space),$(newline),$(MARIADB_CLIENT))
+
+endef
+
+define Package/mariadb-client-extra
+ $(call Package/mariadb/Default)
+ TITLE:=MariaDB database extra client binaries
+ DEPENDS:=mariadb-client
+endef
+
+define Package/mariadb-client-extra/description
+$(call Package/mariadb/description/Default)
+
+This package includes the following extra client binaries:
+
+$(subst $(space),$(newline),$(MARIADB_CLIENT_EXTRA))
+
+endef
+
+define Package/mariadb-extra-charsets
+ $(call Package/mariadb/Default)
+ TITLE:=MariaDB database extra character sets
+ DEPENDS:=mariadb-server
+endef
+
+define Package/mariadb-extra-charsets/description
+$(call Package/mariadb/description/Default)
+
+The MariaDB server packaged by OpenWrt only provides support for UTF-8.
+This package contains single Byte character sets and collations that can
+be added at run time.
+
+endef
+
+define Package/mariadb-server
+ $(call Package/mariadb/Default)
+ DEPENDS:= \
+ $(MARIADB_COMMON_DEPENDS) \
+ +!arc:libaio \
+ +liblzma \
+ +libpcre \
+ +resolveip
+ TITLE:=MariaDB database core server binaries
+ MENU:=1
+ PROVIDES:=mysql-server
+endef
+
+define Package/mariadb-server/description
+$(call Package/mariadb/description/Default)
+
+This package includes the following core server binaries:
+
+$(subst $(space),$(newline),$(MARIADB_SERVER))
+
+endef
+
+define Package/mariadb-server-extra
+ $(call Package/mariadb/Default)
+ TITLE:=MariaDB database extra server binaries
+ DEPENDS:=mariadb-server
+endef
+
+define Package/mariadb-server-extra/description
+$(call Package/mariadb/description/Default)
+
+This package includes the following extra server binaries:
+
+$(subst $(space),$(newline),$(MARIADB_SERVER_EXTRA))
+
+endef
+
+# We won't need unit tests
+CMAKE_OPTIONS += -DWITH_UNIT_TESTS=0
+
+# 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
+# according to buildroot is PA-RISC which is not supported by OpenWrt as far as
+# I know. 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.
+CMAKE_OPTIONS += -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.
+CMAKE_OPTIONS += -DWITH_JEMALLOC=no -DWITHOUT_TOKUDB=1
+
+# Make it explicit that we are cross-compiling
+CMAKE_OPTIONS += -DCMAKE_CROSSCOMPILING=1
+
+# Explicitly disable dtrace to avoid detection of a host version
+CMAKE_OPTIONS += -DENABLE_DTRACE=0
+
+# Prevent mariadb from messing with OpenWrt's C(XX)FLAGS
+CMAKE_OPTIONS += -DSECURITY_HARDENED=OFF
+
+ifeq ($(CONFIG_PACKAGE_mariadb-server),)
+CMAKE_OPTIONS += -DWITHOUT_SERVER=ON
+else
+CMAKE_OPTIONS += -DWITHOUT_SERVER=OFF
+endif
+
+CMAKE_OPTIONS += \
+ -DCONNECT_WITH_JDBC=NO \
+ -DCONNECT_WITH_LIBXML2=system \
+ -DCONNECT_WITH_ODBC=NO \
+ -DDEFAULT_CHARSET=utf8 \
+ -DDEFAULT_COLLATION=utf8_general_ci \
+ -DDISABLE_SHARED=NO \
+ -DENABLED_PROFILING=OFF \
+ -DENABLE_STATIC_LIBS=OFF \
+ -DINSTALL_DOCDIR=share/doc/mariadb \
+ -DINSTALL_DOCREADMEDIR=share/doc/mariadb \
+ -DINSTALL_MANDIR=share/man \
+ -DINSTALL_MYSQLSHAREDIR=share/mysql \
+ -DINSTALL_MYSQLTESTDIR="" \
+ -DINSTALL_PLUGINDIR=lib/mysql/plugin \
+ -DINSTALL_SBINDIR=bin \
+ -DINSTALL_SCRIPTDIR=bin \
+ -DINSTALL_SQLBENCHDIR="" \
+ -DINSTALL_SUPPORTFILESDIR=share/mysql \
+ -DMYSQLD_USER=root \
+ -DMYSQL_DATADIR=/var/lib/mysql \
+ -DMYSQL_UNIX_ADDR=/var/run/mysqld.sock \
+ -DSKIP_TESTS=ON \
+ -DWITH_ASAN=OFF \
+ -DWITH_EMBEDDED_SERVER=OFF \
+ -DWITH_EXTRA_CHARSETS=none \
+ -DWITH_INNODB_BZIP2=OFF \
+ -DWITH_INNODB_LZ4=OFF \
+ -DWITH_INNODB_LZMA=ON \
+ -DWITH_INNODB_LZO=OFF \
+ -DWITH_INNODB_SNAPPY=OFF \
+ -DWITH_LIBEDIT=OFF \
+ -DWITH_LIBNUMA=NO \
+ -DWITH_LIBWRAP=OFF \
+ -DWITH_LIBWSEP=OFF \
+ -DWITH_MARIABACKUP=ON \
+ -DWITH_PCRE=system \
+ -DWITH_READLINE=OFF \
+ -DWITH_SAFEMALLOC=OFF \
+ -DWITH_SSL=system \
+ -DWITH_SYSTEMD=no \
+ -DWITH_VALGRIND=OFF \
+ -DWITH_ZLIB=system
+
+# Default-disable some modules
+CMAKE_OPTIONS += \
+ -DPLUGIN_CASSANDRA=NO \
+ -DPLUGIN_MROONGA=NO \
+ -DPLUGIN_OQGRAPH=NO \
+ -DPLUGIN_ROCKSDB=NO \
+ -DPLUGIN_SPHINX=NO \
+ -DPLUGIN_TOKUDB=NO \
+ -DPLUGIN_AUTH_PAM=NO \
+ -DPLUGIN_AUTH_GSSAPI=NO \
+ -DPLUGIN_AUTH_GSSAPI_CLIENT=NO \
+ -DPLUGIN_CRACKLIB_PASSWORD_CHECK=NO
+
+CMAKE_OPTIONS += \
+ $(foreach p,$(MARIADB_SERVER_PLUGINS),-D$(plugin-$(p))=$(if $(CONFIG_PACKAGE_$(PKG_NAME)-server-plugin-$(subst _,-,$(p))),DYNAMIC,NO))
+
+# Set CMAKE_FIND_ROOT_PATH_MODE_INCLUDE and CMAKE_FIND_ROOT_PATH_MODE_LIBRARY
+# to BOTH as otherwise the host build will not find some required dependencies
+# installed on the host machine, like ncurses.
+#
+# Add "$(STAGING_DIR_HOSTPKG)/lib" to the RPATH of the host helpers,
+# otherwise they might not find the location of a library at run time.
+CMAKE_HOST_OPTIONS += \
+ -DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE \
+ -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH \
+ -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=BOTH \
+ -DCMAKE_INSTALL_RPATH="$(STAGING_DIR_HOSTPKG)/lib" \
+ -DCMAKE_SKIP_RPATH=FALSE \
+ -DWITHOUT_SERVER=OFF \
+ -DWITHOUT_TOKUDB=1
+
+# 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=$(HOST_BUILD_DIR)/import_executables.cmake
+# must then be passed to cmake during target build.
+# see also https://mariadb.com/kb/en/mariadb/cross-compiling-mariadb/
+
+CMAKE_OPTIONS += -DIMPORT_EXECUTABLES=$(STAGING_DIR_HOSTPKG)/share/mariadb/import_executables.cmake
+
+define Host/Compile
+ $(call Host/Compile/Default,import_executables)
+endef
+
+define Host/Install
+ $(SED) 's|$(HOST_BUILD_DIR)|$(STAGING_DIR_HOSTPKG)/share/mariadb|' $(HOST_BUILD_DIR)/import_executables.cmake
+ $(INSTALL_DIR) $(1)/share/mariadb/{dbug,extra,scripts,sql}
+ $(INSTALL_BIN) $(HOST_BUILD_DIR)/dbug/factorial $(1)/share/mariadb/dbug
+ $(INSTALL_BIN) $(HOST_BUILD_DIR)/extra/comp_err $(1)/share/mariadb/extra
+ $(INSTALL_BIN) $(HOST_BUILD_DIR)/scripts/comp_sql $(1)/share/mariadb/scripts
+ $(INSTALL_BIN) $(HOST_BUILD_DIR)/sql/{gen_lex_hash,gen_lex_token} $(1)/share/mariadb/sql
+ $(INSTALL_DATA) $(HOST_BUILD_DIR)/import_executables.cmake $(1)/share/mariadb
+endef
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(2)/bin $(1)/usr/bin $(1)/usr/include $(1)/usr/lib/pkgconfig $(1)/usr/share/aclocal
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/mysql_config $(1)/usr/bin/
+ $(LN) $(STAGING_DIR)/usr/bin/mysql_config $(2)/bin/
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/mysql $(1)/usr/include/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libmysqlclient*.so* $(1)/usr/lib/
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/pkgconfig/mariadb.pc $(1)/usr/lib/pkgconfig
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/aclocal/mysql.m4 $(1)/usr/share/aclocal
+endef
+
+define Package/libmariadbclient/install
+ $(INSTALL_DIR) $(1)$(PLUGIN_DIR)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libmysqlclient*.so* $(1)/usr/lib/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)$(PLUGIN_DIR)/dialog.so $(1)$(PLUGIN_DIR)
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)$(PLUGIN_DIR)/mysql_clear_password.so $(1)$(PLUGIN_DIR)
+endef
+
+define Package/mariadb-client/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(foreach b,$(MARIADB_CLIENT),$(call Package/mariadb/install/bin,$(1),$(b));)
+endef
+
+define Package/mariadb-client-extra/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(foreach b,$(MARIADB_CLIENT_EXTRA),$(call Package/mariadb/install/bin,$(1),$(b));)
+endef
+
+define Package/mariadb-extra-charsets/install
+ $(INSTALL_DIR) $(1)/usr/share/mysql/charsets
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/mysql/charsets/* $(1)/usr/share/mysql/charsets
+endef
+
+define Package/mariadb-server/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(foreach b,$(MARIADB_SERVER),$(call Package/mariadb/install/bin,$(1),$(b));)
+ $(INSTALL_DIR) $(1)/etc/init.d/
+ $(INSTALL_DIR) $(1)/etc/mysql
+ $(INSTALL_BIN) files/mysqld.init $(1)/etc/init.d/mysqld
+ $(INSTALL_CONF) conf/my.cnf $(1)/etc/mysql
+ $(INSTALL_DIR) $(1)$(PLUGIN_DIR)
+ $(INSTALL_CONF) $(PKG_INSTALL_DIR)$(PLUGIN_DIR)/daemon_example.ini $(1)$(PLUGIN_DIR)
+ $(INSTALL_DIR) $(1)/usr/share/mysql/english
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/mysql/english/errmsg.sys $(1)/usr/share/mysql/english
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/mysql/fill_help_tables.sql $(1)/usr/share/mysql/
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/mysql/maria_add_gis_sp_bootstrap.sql $(1)/usr/share/mysql/
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/mysql/mysql_performance_tables.sql $(1)/usr/share/mysql/
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/mysql/mysql_system_tables.sql $(1)/usr/share/mysql/
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/mysql/mysql_system_tables_data.sql $(1)/usr/share/mysql/
+endef
+
+define Package/mariadb-server-extra/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(foreach b,$(MARIADB_SERVER_EXTRA),$(call Package/mariadb/install/bin,$(1),$(b));)
+endef
+
+define Package/mariadb-server/conffiles
+/etc/mysql/my.cnf
+/usr/lib/mysql/plugin/daemon_example.ini
+endef
+
+define BuildPlugin
+ define Package/$(PKG_NAME)-server-plugin-$(subst _,-,$(1))
+ $$(call Package/mariadb/Default)
+ TITLE:=MariaDB database plugin
+ DEPENDS:=mariadb-server $(patsubst +%,+PACKAGE_$(PKG_NAME)-server-plugin-$(subst _,-,$(1)):%,$(2))
+ endef
+ define Package/$(PKG_NAME)-server-plugin-$(subst _,-,$(1))/description
+ $$(call Package/mariadb/description/Default)
+
+This package provides the $(1) plugin.
+
+ endef
+ define Package/$(PKG_NAME)-server-plugin-$(subst _,-,$(1))/install
+ $(INSTALL_DIR) $$(1)$(PLUGIN_DIR)
+ $(INSTALL_BIN) \
+ $(PKG_INSTALL_DIR)$(PLUGIN_DIR)/$(1).so \
+ $$(1)$(PLUGIN_DIR)
+ endef
+ $$(eval $$(call BuildPackage,$(PKG_NAME)-server-plugin-$(subst _,-,$(1))))
+endef
+
+$(eval $(call HostBuild))
+$(eval $(call BuildPackage,libmariadbclient))
+$(eval $(call BuildPackage,mariadb-client))
+$(eval $(call BuildPackage,mariadb-client-extra))
+$(eval $(call BuildPackage,mariadb-extra-charsets))
+$(eval $(call BuildPackage,mariadb-server))
+$(eval $(call BuildPackage,mariadb-server-extra))
+
+$(eval $(call BuildPlugin,adt_null,))
+$(eval $(call BuildPlugin,auth_0x0100,))
+$(eval $(call BuildPlugin,auth_ed25519,))
+$(eval $(call BuildPlugin,auth_socket,))
+$(eval $(call BuildPlugin,auth_test_plugin,))
+$(eval $(call BuildPlugin,client_ed25519,))
+$(eval $(call BuildPlugin,debug_key_management,))
+$(eval $(call BuildPlugin,dialog_examples,))
+$(eval $(call BuildPlugin,disks,))
+$(eval $(call BuildPlugin,example_key_management,))
+$(eval $(call BuildPlugin,feedback,))
+$(eval $(call BuildPlugin,file_key_management,))
+$(eval $(call BuildPlugin,ha_archive,))
+$(eval $(call BuildPlugin,ha_blackhole,))
+$(eval $(call BuildPlugin,ha_connect,+libxml2))
+$(eval $(call BuildPlugin,ha_federated,))
+$(eval $(call BuildPlugin,ha_federatedx,))
+$(eval $(call BuildPlugin,ha_innodb,))
+$(eval $(call BuildPlugin,ha_spider,))
+$(eval $(call BuildPlugin,ha_test_sql_discovery,))
+$(eval $(call BuildPlugin,handlersocket,))
+$(eval $(call BuildPlugin,libdaemon_example,))
+$(eval $(call BuildPlugin,locales,))
+$(eval $(call BuildPlugin,metadata_lock_info,))
+$(eval $(call BuildPlugin,mypluglib,))
+$(eval $(call BuildPlugin,qa_auth_client,))
+$(eval $(call BuildPlugin,qa_auth_interface,))
+$(eval $(call BuildPlugin,qa_auth_server,))
+$(eval $(call BuildPlugin,query_cache_info,))
+$(eval $(call BuildPlugin,query_response_time,))
+$(eval $(call BuildPlugin,semisync_master,))
+$(eval $(call BuildPlugin,semisync_slave,))
+$(eval $(call BuildPlugin,server_audit,))
+$(eval $(call BuildPlugin,simple_password_check,))
+$(eval $(call BuildPlugin,sql_errlog,))
+$(eval $(call BuildPlugin,wsrep_info,))
diff --git a/utils/mysql/conf/my.cnf b/utils/mariadb/conf/my.cnf
index ec2ade2c8..ec2ade2c8 100644
--- a/utils/mysql/conf/my.cnf
+++ b/utils/mariadb/conf/my.cnf
diff --git a/utils/mysql/files/mysqld.init b/utils/mariadb/files/mysqld.init
index 98c8c65c4..98c8c65c4 100644
--- a/utils/mysql/files/mysqld.init
+++ b/utils/mariadb/files/mysqld.init
diff --git a/utils/mysql/patches/100-fix_hostname.patch b/utils/mariadb/patches/100-fix_hostname.patch
index faedc2716..05a0fc6db 100644
--- a/utils/mysql/patches/100-fix_hostname.patch
+++ b/utils/mariadb/patches/100-fix_hostname.patch
@@ -1,7 +1,7 @@
--- a/scripts/mysql_install_db.sh
+++ b/scripts/mysql_install_db.sh
-@@ -322,7 +322,7 @@ then
- fi
+@@ -379,7 +379,7 @@ fi
+
# Try to determine the hostname
-hostname=`@HOSTNAME@`
diff --git a/utils/mariadb/patches/110-pcre.cmake.patch b/utils/mariadb/patches/110-pcre.cmake.patch
new file mode 100644
index 000000000..6e1d0b259
--- /dev/null
+++ b/utils/mariadb/patches/110-pcre.cmake.patch
@@ -0,0 +1,11 @@
+--- a/cmake/pcre.cmake
++++ b/cmake/pcre.cmake
+@@ -14,6 +14,8 @@ MACRO (CHECK_PCRE)
+ return -pcre_exec(NULL, NULL, NULL, -999, -999, 0, NULL, 0) < 256;
+ }" PCRE_STACK_SIZE_OK)
+ SET(CMAKE_REQUIRED_LIBRARIES)
++ ELSE()
++ SET(PCRE_STACK_SIZE_OK TRUE)
+ ENDIF()
+ ENDIF()
+ IF(NOT HAVE_PCRE_STACK_GUARD OR NOT PCRE_STACK_SIZE_OK OR
diff --git a/utils/mariadb/patches/120-fix-ucontext-check.patch b/utils/mariadb/patches/120-fix-ucontext-check.patch
new file mode 100644
index 000000000..8baec2893
--- /dev/null
+++ b/utils/mariadb/patches/120-fix-ucontext-check.patch
@@ -0,0 +1,18 @@
+--- a/configure.cmake
++++ b/configure.cmake
+@@ -1107,9 +1107,12 @@ SET(CMAKE_EXTRA_INCLUDE_FILES)
+ CHECK_STRUCT_HAS_MEMBER("struct dirent" d_ino "dirent.h" STRUCT_DIRENT_HAS_D_INO)
+ CHECK_STRUCT_HAS_MEMBER("struct dirent" d_namlen "dirent.h" STRUCT_DIRENT_HAS_D_NAMLEN)
+ SET(SPRINTF_RETURNS_INT 1)
+-CHECK_INCLUDE_FILE(ucontext.h HAVE_UCONTEXT_H)
+-IF(NOT HAVE_UCONTEXT_H)
+- CHECK_INCLUDE_FILE(sys/ucontext.h HAVE_UCONTEXT_H)
++CHECK_INCLUDE_FILE(ucontext.h HAVE_UCONTEXT_HEADER)
++IF(NOT HAVE_UCONTEXT_HEADER)
++ CHECK_INCLUDE_FILE(sys/ucontext.h HAVE_UCONTEXT_HEADER)
++ENDIF()
++IF(HAVE_UCONTEXT_HEADER)
++ CHECK_FUNCTION_EXISTS(makecontext HAVE_UCONTEXT_H)
+ ENDIF()
+ IF(HAVE_UCONTEXT_H)
+ CHECK_FUNCTION_EXISTS(makecontext HAVE_UCONTEXT_H)
diff --git a/utils/mariadb/patches/130-c11_atomics.patch b/utils/mariadb/patches/130-c11_atomics.patch
new file mode 100644
index 000000000..f223da1a1
--- /dev/null
+++ b/utils/mariadb/patches/130-c11_atomics.patch
@@ -0,0 +1,121 @@
+Description: Fix mips missing atomics primitives
+ On mips we don't have native support for 64bit atomic operations. Make use
+ of libatomic to emulate them.
+Author: Vicențiu Ciorbaru <vicentiu@mariadb.org>
+
+--- a/configure.cmake
++++ b/configure.cmake
+@@ -128,7 +128,7 @@ IF(UNIX)
+ ENDIF()
+ FIND_PACKAGE(Threads)
+
+- SET(CMAKE_REQUIRED_LIBRARIES
++ LIST(APPEND CMAKE_REQUIRED_LIBRARIES
+ ${LIBM} ${LIBNSL} ${LIBBIND} ${LIBCRYPT} ${LIBSOCKET} ${LIBDL} ${CMAKE_THREAD_LIBS_INIT} ${LIBRT} ${LIBEXECINFO})
+ # Need explicit pthread for gcc -fsanitize=address
+ IF(CMAKE_USE_PTHREADS_INIT AND CMAKE_C_FLAGS MATCHES "-fsanitize=")
+@@ -1038,7 +1038,26 @@ ELSEIF(NOT WITH_ATOMIC_OPS)
+ long long int *ptr= &var;
+ return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
+ }"
+- HAVE_GCC_C11_ATOMICS)
++ HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
++ IF(HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
++ SET(HAVE_GCC_C11_ATOMICS True)
++ ELSE()
++ SET(OLD_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
++ LIST(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
++ CHECK_CXX_SOURCE_COMPILES("
++ int main()
++ {
++ long long int var= 1;
++ long long int *ptr= &var;
++ return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
++ }"
++ HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++ IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++ SET(HAVE_GCC_C11_ATOMICS True)
++ ELSE()
++ SET(CMAKE_REQUIRED_LIBRARIES ${OLD_CMAKE_REQUIRED_LIBRARIES})
++ ENDIF()
++ ENDIF()
+ ELSE()
+ MESSAGE(FATAL_ERROR "${WITH_ATOMIC_OPS} is not a valid value for WITH_ATOMIC_OPS!")
+ ENDIF()
+--- a/include/atomic/gcc_builtins.h
++++ b/include/atomic/gcc_builtins.h
+@@ -16,6 +16,7 @@
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
+
++#if defined (HAVE_GCC_ATOMIC_BUILTINS)
+ #define make_atomic_add_body(S) \
+ v= __sync_fetch_and_add(a, v);
+ #define make_atomic_fas_body(S) \
+@@ -26,6 +27,20 @@
+ sav= __sync_val_compare_and_swap(a, cmp_val, set);\
+ if (!(ret= (sav == cmp_val))) *cmp= sav
+
++#elif defined(HAVE_GCC_C11_ATOMICS)
++
++#define make_atomic_add_body(S) \
++ v= __atomic_fetch_add(a, v, __ATOMIC_SEQ_CST)
++#define make_atomic_fas_body(S) \
++ v= __atomic_exchange_n(a, v, __ATOMIC_SEQ_CST)
++#define make_atomic_cas_body(S) \
++ int ## S sav; \
++ ret= __atomic_compare_exchange_n(a, cmp, set, \
++ 0, \
++ __ATOMIC_SEQ_CST,\
++ __ATOMIC_SEQ_CST);
++#endif
++
+ #ifdef MY_ATOMIC_MODE_DUMMY
+ #define make_atomic_load_body(S) ret= *a
+ #define make_atomic_store_body(S) *a= v
+--- a/include/atomic/nolock.h
++++ b/include/atomic/nolock.h
+@@ -17,7 +17,7 @@
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
+
+ #if defined(__i386__) || defined(_MSC_VER) || defined(__x86_64__) \
+- || defined(HAVE_GCC_ATOMIC_BUILTINS) \
++ || defined(HAVE_GCC_ATOMIC_BUILTINS) || defined(HAVE_GCC_C11_ATOMICS) \
+ || defined(HAVE_SOLARIS_ATOMIC)
+
+ # ifdef MY_ATOMIC_MODE_DUMMY
+@@ -41,7 +41,7 @@
+ # elif __GNUC__
+ # if defined(HAVE_SOLARIS_ATOMIC)
+ # include "solaris.h"
+-# elif defined(HAVE_GCC_ATOMIC_BUILTINS)
++# elif defined(HAVE_GCC_ATOMIC_BUILTINS) || defined(HAVE_GCC_C11_ATOMICS)
+ # include "gcc_builtins.h"
+ # elif defined(__i386__) || defined(__x86_64__)
+ # include "x86-gcc.h"
+--- a/mysys/CMakeLists.txt
++++ b/mysys/CMakeLists.txt
+@@ -78,6 +78,10 @@ IF(HAVE_BFD_H)
+ TARGET_LINK_LIBRARIES(mysys bfd)
+ ENDIF(HAVE_BFD_H)
+
++IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++ TARGET_LINK_LIBRARIES(mysys atomic)
++ENDIF()
++
+ IF (WIN32)
+ TARGET_LINK_LIBRARIES(mysys IPHLPAPI)
+ ENDIF(WIN32)
+--- a/sql/CMakeLists.txt
++++ b/sql/CMakeLists.txt
+@@ -165,6 +165,10 @@ TARGET_LINK_LIBRARIES(sql ${MYSQLD_STATI
+ ${SSL_LIBRARIES}
+ ${LIBSYSTEMD})
+
++IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++ TARGET_LINK_LIBRARIES(sql atomic)
++ENDIF()
++
+ IF(WIN32)
+ SET(MYSQLD_SOURCE main.cc nt_servc.cc message.rc)
+ TARGET_LINK_LIBRARIES(sql psapi)
diff --git a/utils/mariadb/patches/140-mips-connect-unaligned.patch b/utils/mariadb/patches/140-mips-connect-unaligned.patch
new file mode 100644
index 000000000..c2b58778d
--- /dev/null
+++ b/utils/mariadb/patches/140-mips-connect-unaligned.patch
@@ -0,0 +1,262 @@
+Description: Handle unaligned buffers in connect's TYPBLK class
+ On MIPS platforms (and probably others) unaligned memory access results in a
+ bus error. In the connect storage engine, block data for some data formats is
+ stored packed in memory and the TYPBLK class is used to read values from it.
+ Since TYPBLK does not have special handling for this packed memory, it can
+ quite easily result in unaligned memory accesses.
+ .
+ The simple way to fix this is to perform all accesses to the main buffer
+ through memcpy. With GCC and optimizations turned on, this call to memcpy is
+ completely optimized away on architectures where unaligned accesses are ok
+ (like x86).
+Author: James Cowgill <jcowgill@debian.org>
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+--- a/storage/connect/valblk.h
++++ b/storage/connect/valblk.h
+@@ -139,6 +139,7 @@ class VALBLK : public BLOCK {
+ int Prec; // Precision of float values
+ }; // end of class VALBLK
+
++
+ /***********************************************************************/
+ /* Class TYPBLK: represents a block of typed values. */
+ /***********************************************************************/
+@@ -151,40 +152,41 @@ class TYPBLK : public VALBLK {
+ // Implementation
+ virtual bool Init(PGLOBAL g, bool check);
+ virtual int GetVlen(void) {return sizeof(TYPE);}
+- virtual char GetTinyValue(int n) {return (char)Typp[n];}
+- virtual uchar GetUTinyValue(int n) {return (uchar)Typp[n];}
+- virtual short GetShortValue(int n) {return (short)Typp[n];}
+- virtual ushort GetUShortValue(int n) {return (ushort)Typp[n];}
+- virtual int GetIntValue(int n) {return (int)Typp[n];}
+- virtual uint GetUIntValue(int n) {return (uint)Typp[n];}
+- virtual longlong GetBigintValue(int n) {return (longlong)Typp[n];}
+- virtual ulonglong GetUBigintValue(int n) {return (ulonglong)Typp[n];}
+- virtual double GetFloatValue(int n) {return (double)Typp[n];}
++
++ virtual char GetTinyValue(int n) {return (char)UnalignedRead(n);}
++ virtual uchar GetUTinyValue(int n) {return (uchar)UnalignedRead(n);}
++ virtual short GetShortValue(int n) {return (short)UnalignedRead(n);}
++ virtual ushort GetUShortValue(int n) {return (ushort)UnalignedRead(n);}
++ virtual int GetIntValue(int n) {return (int)UnalignedRead(n);}
++ virtual uint GetUIntValue(int n) {return (uint)UnalignedRead(n);}
++ virtual longlong GetBigintValue(int n) {return (longlong)UnalignedRead(n);}
++ virtual ulonglong GetUBigintValue(int n) {return (ulonglong)UnalignedRead(n);}
++ virtual double GetFloatValue(int n) {return (double)UnalignedRead(n);}
+ virtual char *GetCharString(char *p, int n);
+- virtual void Reset(int n) {Typp[n] = 0;}
++ virtual void Reset(int n) {UnalignedWrite(n, 0);}
+
+ // Methods
+ using VALBLK::SetValue;
+ virtual void SetValue(PCSZ sp, int n);
+ virtual void SetValue(const char *sp, uint len, int n);
+ virtual void SetValue(short sval, int n)
+- {Typp[n] = (TYPE)sval; SetNull(n, false);}
++ {UnalignedWrite(n, (TYPE)sval); SetNull(n, false);}
+ virtual void SetValue(ushort sval, int n)
+- {Typp[n] = (TYPE)sval; SetNull(n, false);}
++ {UnalignedWrite(n, (TYPE)sval); SetNull(n, false);}
+ virtual void SetValue(int lval, int n)
+- {Typp[n] = (TYPE)lval; SetNull(n, false);}
++ {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
+ virtual void SetValue(uint lval, int n)
+- {Typp[n] = (TYPE)lval; SetNull(n, false);}
++ {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
+ virtual void SetValue(longlong lval, int n)
+- {Typp[n] = (TYPE)lval; SetNull(n, false);}
++ {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
+ virtual void SetValue(ulonglong lval, int n)
+- {Typp[n] = (TYPE)lval; SetNull(n, false);}
++ {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
+ virtual void SetValue(double fval, int n)
+- {Typp[n] = (TYPE)fval; SetNull(n, false);}
++ {UnalignedWrite(n, (TYPE)fval); SetNull(n, false);}
+ virtual void SetValue(char cval, int n)
+- {Typp[n] = (TYPE)cval; SetNull(n, false);}
++ {UnalignedWrite(n, (TYPE)cval); SetNull(n, false);}
+ virtual void SetValue(uchar cval, int n)
+- {Typp[n] = (TYPE)cval; SetNull(n, false);}
++ {UnalignedWrite(n, (TYPE)cval); SetNull(n, false);}
+ virtual void SetValue(PVAL valp, int n);
+ virtual void SetValue(PVBLK pv, int n1, int n2);
+ virtual void SetMin(PVAL valp, int n);
+@@ -206,6 +208,17 @@ class TYPBLK : public VALBLK {
+ // Members
+ TYPE* const &Typp;
+ const char *Fmt;
++
++ // Unaligned access
++ TYPE UnalignedRead(int n) const {
++ TYPE result;
++ memcpy(&result, Typp + n, sizeof(TYPE));
++ return result;
++ }
++
++ void UnalignedWrite(int n, TYPE value) {
++ memcpy(Typp + n, &value, sizeof(TYPE));
++ }
+ }; // end of class TYPBLK
+
+ /***********************************************************************/
+--- a/storage/connect/valblk.cpp
++++ b/storage/connect/valblk.cpp
+@@ -266,14 +266,14 @@ bool TYPBLK<TYPE>::Init(PGLOBAL g, bool
+ template <class TYPE>
+ char *TYPBLK<TYPE>::GetCharString(char *p, int n)
+ {
+- sprintf(p, Fmt, Typp[n]);
++ sprintf(p, Fmt, UnalignedRead(n));
+ return p;
+ } // end of GetCharString
+
+ template <>
+ char *TYPBLK<double>::GetCharString(char *p, int n)
+ {
+- sprintf(p, Fmt, Prec, Typp[n]);
++ sprintf(p, Fmt, Prec, UnalignedRead(n));
+ return p;
+ } // end of GetCharString
+
+@@ -289,7 +289,7 @@ void TYPBLK<TYPE>::SetValue(PVAL valp, i
+ ChkTyp(valp);
+
+ if (!(b = valp->IsNull()))
+- Typp[n] = GetTypedValue(valp);
++ UnalignedWrite(n, GetTypedValue(valp));
+ else
+ Reset(n);
+
+@@ -351,9 +351,9 @@ void TYPBLK<TYPE>::SetValue(PCSZ p, int
+ ulonglong val = CharToNumber(p, strlen(p), maxval, Unsigned, &minus);
+
+ if (minus && val < maxval)
+- Typp[n] = (TYPE)(-(signed)val);
++ UnalignedWrite(n, (TYPE)(-(signed)val));
+ else
+- Typp[n] = (TYPE)val;
++ UnalignedWrite(n, (TYPE)val);
+
+ SetNull(n, false);
+ } // end of SetValue
+@@ -396,7 +396,7 @@ void TYPBLK<double>::SetValue(PCSZ p, in
+ throw Type;
+ } // endif Check
+
+- Typp[n] = atof(p);
++ UnalignedWrite(n, atof(p));
+ SetNull(n, false);
+ } // end of SetValue
+
+@@ -428,7 +428,7 @@ void TYPBLK<TYPE>::SetValue(PVBLK pv, in
+ ChkTyp(pv);
+
+ if (!(b = pv->IsNull(n2) && Nullable))
+- Typp[n1] = GetTypedValue(pv, n2);
++ UnalignedWrite(n1, GetTypedValue(pv, n2));
+ else
+ Reset(n1);
+
+@@ -479,10 +479,10 @@ void TYPBLK<TYPE>::SetMin(PVAL valp, int
+ {
+ CheckParms(valp, n)
+ TYPE tval = GetTypedValue(valp);
+- TYPE& tmin = Typp[n];
++ TYPE tmin = UnalignedRead(n);
+
+ if (tval < tmin)
+- tmin = tval;
++ UnalignedWrite(n, tval);
+
+ } // end of SetMin
+
+@@ -494,10 +494,10 @@ void TYPBLK<TYPE>::SetMax(PVAL valp, int
+ {
+ CheckParms(valp, n)
+ TYPE tval = GetTypedValue(valp);
+- TYPE& tmin = Typp[n];
++ TYPE tmin = UnalignedRead(n);
+
+ if (tval > tmin)
+- tmin = tval;
++ UnalignedWrite(n, tval);
+
+ } // end of SetMax
+
+@@ -511,8 +511,7 @@ void TYPBLK<TYPE>::SetValues(PVBLK pv, i
+ CheckType(pv)
+ TYPE *lp = ((TYPBLK*)pv)->Typp;
+
+- for (register int i = k; i < n; i++) // TODO
+- Typp[i] = lp[i];
++ memcpy(Typp + k, lp + k, sizeof(TYPE) * n);
+
+ } // end of SetValues
+ #endif // 0
+@@ -523,7 +522,7 @@ void TYPBLK<TYPE>::SetValues(PVBLK pv, i
+ template <class TYPE>
+ void TYPBLK<TYPE>::Move(int i, int j)
+ {
+- Typp[j] = Typp[i];
++ UnalignedWrite(j, UnalignedRead(i));
+ MoveNull(i, j);
+ } // end of Move
+
+@@ -537,7 +536,7 @@ int TYPBLK<TYPE>::CompVal(PVAL vp, int n
+ ChkIndx(n);
+ ChkTyp(vp);
+ #endif // _DEBUG
+- TYPE mlv = Typp[n];
++ TYPE mlv = UnalignedRead(n);
+ TYPE vlv = GetTypedValue(vp);
+
+ return (vlv > mlv) ? 1 : (vlv < mlv) ? (-1) : 0;
+@@ -549,8 +548,8 @@ int TYPBLK<TYPE>::CompVal(PVAL vp, int n
+ template <class TYPE>
+ int TYPBLK<TYPE>::CompVal(int i1, int i2)
+ {
+- TYPE lv1 = Typp[i1];
+- TYPE lv2 = Typp[i2];
++ TYPE lv1 = UnalignedRead(i1);
++ TYPE lv2 = UnalignedRead(i2);
+
+ return (lv1 > lv2) ? 1 : (lv1 < lv2) ? (-1) : 0;
+ } // end of CompVal
+@@ -587,7 +586,7 @@ int TYPBLK<TYPE>::Find(PVAL vp)
+ TYPE n = GetTypedValue(vp);
+
+ for (i = 0; i < Nval; i++)
+- if (n == Typp[i])
++ if (n == UnalignedRead(i))
+ break;
+
+ return (i < Nval) ? i : (-1);
+@@ -603,7 +602,7 @@ int TYPBLK<TYPE>::GetMaxLength(void)
+ int i, n, m;
+
+ for (i = n = 0; i < Nval; i++) {
+- m = sprintf(buf, Fmt, Typp[i]);
++ m = sprintf(buf, Fmt, UnalignedRead(i));
+ n = MY_MAX(n, m);
+ } // endfor i
+
+@@ -1333,7 +1332,7 @@ char *DATBLK::GetCharString(char *p, int
+ char *vp;
+
+ if (Dvalp) {
+- Dvalp->SetValue(Typp[n]);
++ Dvalp->SetValue(UnalignedRead(n));
+ vp = Dvalp->GetCharString(p);
+ } else
+ vp = TYPBLK<int>::GetCharString(p, n);
+@@ -1349,7 +1348,7 @@ void DATBLK::SetValue(PCSZ p, int n)
+ if (Dvalp) {
+ // Decode the string according to format
+ Dvalp->SetValue_psz(p);
+- Typp[n] = Dvalp->GetIntValue();
++ UnalignedWrite(n, Dvalp->GetIntValue());
+ } else
+ TYPBLK<int>::SetValue(p, n);
+
diff --git a/utils/mariadb/patches/150-mips-innobase-atomic.patch b/utils/mariadb/patches/150-mips-innobase-atomic.patch
new file mode 100644
index 000000000..dd7db7cbe
--- /dev/null
+++ b/utils/mariadb/patches/150-mips-innobase-atomic.patch
@@ -0,0 +1,14 @@
+Author: James Cowgill <jcowgill@debian.org>
+Description: fix FTBFS on 32-bit mips*
+Bug-Debian: #864298
+
+--- a/storage/innobase/include/os0sync.h
++++ b/storage/innobase/include/os0sync.h
+@@ -37,6 +37,7 @@ Created 9/6/1995 Heikki Tuuri
+
+ #include "univ.i"
+ #include "ut0lst.h"
++#include "sync0types.h"
+
+ /** CPU cache line size */
+ #ifdef __powerpc__
diff --git a/utils/mariadb/patches/160-mips-machine.patch b/utils/mariadb/patches/160-mips-machine.patch
new file mode 100644
index 000000000..f7d083243
--- /dev/null
+++ b/utils/mariadb/patches/160-mips-machine.patch
@@ -0,0 +1,25 @@
+Description: Fix DEFAULT_MACHINE on mips
+ The DEFAULT_MACHINE constant is calculated from the CMAKE_SYSTEM_PROCESSOR
+ variable which contains the processor which built mariadb. Since most Debian
+ buildds run on 64-bit hardware even though they build 32-bit binaries,
+ DEFAULT_MACHINE previously contained "mips64" on 32-bit builds. This confuses
+ some mroonga tests which rely on DEFAULT_MACHINE to detect 64-bitness.
+ .
+ This patch fixes the value of DEFAULT_MACHINE so it always contains just "mips"
+ on 32-bit mips builds.
+Author: James Cowgill <jcowgill@debian.org>
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+--- mariadb-10.1.orig/cmake/package_name.cmake
++++ mariadb-10.1/cmake/package_name.cmake
+@@ -34,6 +34,10 @@ IF(NOT VERSION)
+ SET(DEFAULT_MACHINE "mips")
+ ENDIF()
+
++ IF(NOT 64BIT AND CMAKE_SYSTEM_PROCESSOR MATCHES "^mips64")
++ SET(DEFAULT_MACHINE "mips")
++ ENDIF()
++
+ IF(CMAKE_SYSTEM_NAME MATCHES "Windows")
+ SET(NEED_DASH_BETWEEN_PLATFORM_AND_MACHINE 0)
+ SET(DEFAULT_PLATFORM "win")
diff --git a/utils/mariadb/patches/170-ppc-remove-glibc-dep.patch b/utils/mariadb/patches/170-ppc-remove-glibc-dep.patch
new file mode 100644
index 000000000..e4b5a4a82
--- /dev/null
+++ b/utils/mariadb/patches/170-ppc-remove-glibc-dep.patch
@@ -0,0 +1,75 @@
+From f5cf70d9d1dc7f4cbeffb7fb75cbbe08720e3873 Mon Sep 17 00:00:00 2001
+From: Gustavo Romero <gromero@br.ibm.com>
+Date: Sun, 26 Mar 2017 15:08:15 +0000
+Subject: [PATCH] Remove dependency on glibc on PPC
+
+Remove dependency on glibc by using gcc builtin function and no glibc
+wrappers.
+
+Currently there are no surrogates in musl for:
+
+ __ppc_get_timebase()
+ __ppc_set_ppr_low()
+ __ppc_set_ppr_med()
+
+however glibc __ppc_get_timebase() is just a wrapper for GCC builtin
+__builtin_get_timebase() available since GCC 4.8 [1], so assuming that
+aports on ppc64le will never be built using GCC < 4.8 we can just
+switch directly to the GCC builtin function.
+
+Also __ppc_set_ppr_{low,med}() are not available on musl but both
+are simple glibc wrappers on a single asm instruction, hence there
+is no harm in using asm directly instead. Actually, using asm
+directly was the first solution adopted in MariaDB [2].
+
+[1] https://goo.gl/jxLV6O
+[2] https://goo.gl/9bjuVC
+
+--- a/storage/xtradb/include/ut0ut.h
++++ b/storage/xtradb/include/ut0ut.h
+@@ -86,8 +86,7 @@ private:
+ independent way by using YieldProcessor. */
+ # define UT_RELAX_CPU() YieldProcessor()
+ # elif defined(__powerpc__)
+-#include <sys/platform/ppc.h>
+-# define UT_RELAX_CPU() __ppc_get_timebase()
++# define UT_RELAX_CPU() __builtin_ppc_get_timebase()
+ # else
+ # define UT_RELAX_CPU() ((void)0) /* avoid warning for an empty statement */
+ # endif
+@@ -101,9 +100,8 @@ private:
+ #endif
+
+ # if defined(HAVE_HMT_PRIORITY_INSTRUCTION)
+-#include <sys/platform/ppc.h>
+-# define UT_LOW_PRIORITY_CPU() __ppc_set_ppr_low()
+-# define UT_RESUME_PRIORITY_CPU() __ppc_set_ppr_med()
++# define UT_LOW_PRIORITY_CPU() __asm__ __volatile__ ("or 1,1,1")
++# define UT_RESUME_PRIORITY_CPU() __asm__ __volatile__ ("or 2,2,2")
+ # else
+ # define UT_LOW_PRIORITY_CPU() ((void)0)
+ # define UT_RESUME_PRIORITY_CPU() ((void)0)
+--- a/storage/innobase/include/ut0ut.h
++++ b/storage/innobase/include/ut0ut.h
+@@ -89,8 +89,7 @@ private:
+ independent way by using YieldProcessor. */
+ # define UT_RELAX_CPU() YieldProcessor()
+ # elif defined(__powerpc__)
+-#include <sys/platform/ppc.h>
+-# define UT_RELAX_CPU() __ppc_get_timebase()
++# define UT_RELAX_CPU() __builtin_ppc_get_timebase()
+ # else
+ # define UT_RELAX_CPU() ((void)0) /* avoid warning for an empty statement */
+ # endif
+@@ -104,9 +103,8 @@ private:
+ #endif
+
+ # if defined(HAVE_HMT_PRIORITY_INSTRUCTION)
+-#include <sys/platform/ppc.h>
+-# define UT_LOW_PRIORITY_CPU() __ppc_set_ppr_low()
+-# define UT_RESUME_PRIORITY_CPU() __ppc_set_ppr_med()
++# define UT_LOW_PRIORITY_CPU() __asm__ __volatile__ ("or 1,1,1")
++# define UT_RESUME_PRIORITY_CPU() __asm__ __volatile__ ("or 2,2,2")
+ # else
+ # define UT_LOW_PRIORITY_CPU() ((void)0)
+ # define UT_RESUME_PRIORITY_CPU() ((void)0)
diff --git a/utils/mysql/Makefile b/utils/mysql/Makefile
deleted file mode 100644
index b11c16048..000000000
--- a/utils/mysql/Makefile
+++ /dev/null
@@ -1,186 +0,0 @@
-#
-# Copyright (C) 2006-2018 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-include $(INCLUDE_DIR)/uclibc++.mk
-
-PKG_NAME:=mysql
-PKG_VERSION:=5.1.73
-PKG_RELEASE:=3
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=\
- http://mysql.he.net/Downloads/MySQL-5.1/ \
- http://www.linorg.usp.br/mysql/Downloads/MySQL-5.1/ \
- http://www.mirrorservice.org/sites/ftp.mysql.com/Downloads/MySQL-5.1/ \
- http://mirror.switch.ch/ftp/mirror/mysql/Downloads/MySQL-5.1/
-
-PKG_HASH:=05ebe21305408b24407d14b77607a3e5ffa3c300e03f1359d3066f301989dcb5
-PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
-PKG_LICENSE:=GPL-2.0
-
-PKG_BUILD_PARALLEL:=1
-PKG_USE_MIPS16:=0
-
-PKG_FIXUP:=libtool
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/libmysqlclient/Default
- SECTION:=libs
- CATEGORY:=Libraries
- DEPENDS:=$(CXX_DEPENDS) +zlib
- TITLE:=MySQL client library
- URL:=http://dev.mysql.com/
-endef
-
-define Package/mysql-server
- SECTION:=utils
- CATEGORY:=Utilities
- DEPENDS:=+libmysqlclient +libpthread +libncurses +libreadline
- TITLE:=MySQL Server
- URL:=http://dev.mysql.com/
- SUBMENU:=database
-endef
-
-define Package/libmysqlclient
- $(call Package/libmysqlclient/Default)
-endef
-
-define Package/libmysqlclient-r
- $(call Package/libmysqlclient/Default)
- TITLE += threadsafe
- DEPENDS+= +libpthread
-endef
-
-ifneq ($(CONFIG_USE_UCLIBCXX),)
- TARGET_CXX=g++-uc
-endif
-
-CONFIGURE_ARGS += \
- --enable-shared \
- --enable-static \
- --enable-thread-safe-client \
- --disable-assembler \
- --with-pthread \
- --with-server \
- --without-mysqlmanager \
- --with-mysqld-user=root \
- --with-unix-socket-path=/tmp \
- --without-libwrap \
- --with-low-memory \
- --without-embedded-server \
- --without-query-cache \
- --without-ssl \
- --without-docs \
- --without-man \
- --without-readline \
- --without-debug \
- --with-named-thread-libs=-lpthread
-
-CONFIGURE_VARS += \
- mysql_cv_compress=yes \
- mysql_cv_gethostname_style=glibc2 \
- mysql_cv_gcc_atomic_builtins=yes \
- mysql_cv_gcc_atomic_builtins_pthread_t=yes \
- ac_cv_c_stack_direction=-1
-
-define Build/Compile
- +$(MAKE) $(PKG_JOBS) -C "$(PKG_BUILD_DIR)" \
- SUBDIRS="include" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all
- $(MAKE) -C "$(PKG_BUILD_DIR)" \
- SUBDIRS="include" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- install
- g++ -I $(PKG_BUILD_DIR)/include \
- -o $(PKG_BUILD_DIR)/sql/gen_lex_hash \
- $(PKG_BUILD_DIR)/sql/gen_lex_hash.cc
- +$(MAKE) $(PKG_JOBS) -C "$(PKG_BUILD_DIR)/libmysql" \
- CC="g++" \
- CFLAGS="$(HOST_CFLAGS)" \
- CPPFLAGS="$(HOST_CFLAGS)" \
- LDFLAGS="$(HOST_LDFLAGS)" \
- conf_to_src
- +$(MAKE) $(PKG_JOBS) -C "$(PKG_BUILD_DIR)" \
- SUBDIRS="libmysql" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all
- $(MAKE) -C "$(PKG_BUILD_DIR)" \
- SUBDIRS="libmysql" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- install
- +$(MAKE) $(PKG_JOBS) -C "$(PKG_BUILD_DIR)" \
- SUBDIRS="libmysql_r" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all
- $(MAKE) -C "$(PKG_BUILD_DIR)" \
- SUBDIRS="libmysql_r" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- install
- $(MAKE) -C "$(PKG_BUILD_DIR)" \
- SUBDIRS="scripts" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- bin_SCRIPTS="mysql_config" \
- install
- +$(MAKE) $(PKG_JOBS) -C "$(PKG_BUILD_DIR)" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all
- $(MAKE) -C "$(PKG_BUILD_DIR)" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- install
-endef
-
-
-define Build/InstallDev
- $(INSTALL_DIR) $(2)/bin $(1)/usr/bin $(1)/usr/include $(1)/usr/lib
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/mysql_config $(1)/usr/bin/
- ln -sf $(STAGING_DIR)/usr/bin/mysql_config $(2)/bin/
- $(CP) $(PKG_INSTALL_DIR)/usr/include/mysql $(1)/usr/include/
- # NOTE: needed for MySQL-Python
- $(CP) $(PKG_BUILD_DIR)/include/mysqld_error.h $(1)/usr/include/mysql/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/mysql $(1)/usr/lib/
- rm -f $(1)/usr/lib/mysql/libmysqlclient.la
-endef
-
-define Package/libmysqlclient/install
- $(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/mysql/libmysqlclient.so.* $(1)/usr/lib/
-endef
-define Package/libmysqlclient-r/install
- $(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/mysql/libmysqlclient_r.so.* $(1)/usr/lib/
-endef
-
-define Package/mysql-server/install
- $(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/mysql $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/mysqld $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/myisamchk $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/mysqladmin $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/mysqldump $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/mysql_install_db $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/my_print_defaults $(1)/usr/bin/
- $(INSTALL_DIR) $(1)/etc/init.d/
- $(INSTALL_BIN) files/mysqld.init $(1)/etc/init.d/mysqld
- $(INSTALL_CONF) conf/my.cnf $(1)/etc/
- $(INSTALL_DIR) $(1)/usr/share/mysql
- $(INSTALL_DIR) $(1)/usr/share/mysql/english
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/mysql/english/errmsg.sys $(1)/usr/share/mysql/english
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/mysql/fill_help_tables.sql $(1)/usr/share/mysql/
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/mysql/mysql_system_tables.sql $(1)/usr/share/mysql/
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/mysql/mysql_system_tables_data.sql $(1)/usr/share/mysql/
-endef
-
-define Package/mysql-server/conffiles
-/etc/my.cnf
-endef
-
-$(eval $(call BuildPackage,mysql-server))
-$(eval $(call BuildPackage,libmysqlclient))
-$(eval $(call BuildPackage,libmysqlclient-r))
diff --git a/utils/mysql/patches/110-cross_compile.patch b/utils/mysql/patches/110-cross_compile.patch
deleted file mode 100644
index 85d259134..000000000
--- a/utils/mysql/patches/110-cross_compile.patch
+++ /dev/null
@@ -1,179 +0,0 @@
---- a/storage/innodb_plugin/plug.in
-+++ b/storage/innodb_plugin/plug.in
-@@ -56,10 +56,8 @@ MYSQL_PLUGIN_ACTIONS(innodb_plugin, [
- esac
- AC_SUBST(INNODB_DYNAMIC_CFLAGS)
-
-- AC_MSG_CHECKING(whether GCC atomic builtins are available)
-- # either define HAVE_IB_GCC_ATOMIC_BUILTINS or not
-- AC_TRY_RUN(
-- [
-+ AC_CACHE_CHECK([whether GCC atomic builtins are available],
-+ [mysql_cv_gcc_atomic_builtins], [AC_TRY_RUN([
- int main()
- {
- long x;
-@@ -96,21 +94,18 @@ MYSQL_PLUGIN_ACTIONS(innodb_plugin, [
-
- return(0);
- }
-- ],
-- [
-- AC_DEFINE([HAVE_IB_GCC_ATOMIC_BUILTINS], [1],
-- [GCC atomic builtins are available])
-- AC_MSG_RESULT(yes)
-- ],
-- [
-- AC_MSG_RESULT(no)
-- ]
-- )
-+ ], [mysql_cv_gcc_atomic_builtins=yes],
-+ [mysql_cv_gcc_atomic_builtins=no],
-+ [mysql_cv_gcc_atomic_builtins=no])])
-+
-+ if test "x$mysql_cv_gcc_atomic_builtins" = xyes; then
-+ AC_DEFINE(HAVE_IB_GCC_ATOMIC_BUILTINS, 1,
-+ [Define to 1 if compiler provides atomic builtins.])
-+ fi
-
-- AC_MSG_CHECKING(whether pthread_t can be used by GCC atomic builtins)
-- # either define HAVE_IB_ATOMIC_PTHREAD_T_GCC or not
-- AC_TRY_RUN(
-- [
-+
-+ AC_CACHE_CHECK([whether pthread_t can be used by GCC atomic builtins],
-+ [mysql_cv_gcc_atomic_builtins_pthread_t], [AC_TRY_RUN([
- #include <pthread.h>
- #include <string.h>
-
-@@ -127,16 +122,14 @@ MYSQL_PLUGIN_ACTIONS(innodb_plugin, [
-
- return(0);
- }
-- ],
-- [
-- AC_DEFINE([HAVE_IB_ATOMIC_PTHREAD_T_GCC], [1],
-- [pthread_t can be used by GCC atomic builtins])
-- AC_MSG_RESULT(yes)
-- ],
-- [
-- AC_MSG_RESULT(no)
-- ]
-- )
-+ ], [mysql_cv_gcc_atomic_builtins_pthread_t=yes],
-+ [mysql_cv_gcc_atomic_builtins_pthread_t=no],
-+ [mysql_cv_gcc_atomic_builtins_pthread_t=no])])
-+
-+ if test "x$mysql_cv_gcc_atomic_builtins_pthread_t" = xyes; then
-+ AC_DEFINE(HAVE_IB_ATOMIC_PTHREAD_T_GCC, 1,
-+ [Define to 1 if pthread_t can be used by GCC atomic builtins])
-+ fi
-
- AC_MSG_CHECKING(whether Solaris libc atomic functions are available)
- # Define HAVE_IB_SOLARIS_ATOMICS if _all_ of the following
-@@ -156,7 +149,6 @@ MYSQL_PLUGIN_ACTIONS(innodb_plugin, [
- AC_DEFINE([HAVE_IB_SOLARIS_ATOMICS], [1],
- [Define to 1 if Solaris libc atomic functions are available]
- )
-- fi
-
- AC_MSG_CHECKING(whether pthread_t can be used by Solaris libc atomic functions)
- # either define HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS or not
-@@ -230,6 +222,8 @@ MYSQL_PLUGIN_ACTIONS(innodb_plugin, [
- AC_MSG_RESULT(no)
- ]
- )
-+ fi
-+
- ])
-
- # vim: set ft=config:
---- a/sql/gen_lex_hash.cc
-+++ b/sql/gen_lex_hash.cc
-@@ -344,55 +344,6 @@ void print_find_structs()
- }
-
-
--static void usage(int version)
--{
-- printf("%s Ver 3.6 Distrib %s, for %s (%s)\n",
-- my_progname, MYSQL_SERVER_VERSION, SYSTEM_TYPE, MACHINE_TYPE);
-- if (version)
-- return;
-- puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
-- puts("This program generates a perfect hashing function for the sql_lex.cc");
-- printf("Usage: %s [OPTIONS]\n\n", my_progname);
-- my_print_help(my_long_options);
--}
--
--
--extern "C" my_bool
--get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
-- char *argument __attribute__((unused)))
--{
-- switch(optid) {
-- case 'V':
-- usage(1);
-- exit(0);
-- case 'I':
-- case '?':
-- usage(0);
-- exit(0);
-- case '#':
-- DBUG_PUSH(argument ? argument : default_dbug_option);
-- break;
-- }
-- return 0;
--}
--
--
--static int get_options(int argc, char **argv)
--{
-- int ho_error;
--
-- if ((ho_error= handle_options(&argc, &argv, my_long_options, get_one_option)))
-- exit(ho_error);
--
-- if (argc >= 1)
-- {
-- usage(0);
-- exit(1);
-- }
-- return(0);
--}
--
--
- int check_dup_symbols(SYMBOL *s1, SYMBOL *s2)
- {
- if (s1->length!=s2->length || strncmp(s1->name,s2->name,s1->length))
-@@ -443,12 +394,6 @@ int check_duplicates()
-
- int main(int argc,char **argv)
- {
-- MY_INIT(argv[0]);
-- DBUG_PROCESS(argv[0]);
--
-- if (get_options(argc,(char **) argv))
-- exit(1);
--
- /* Broken up to indicate that it's not advice to you, gentle reader. */
- printf("/*\n\n Do " "not " "edit " "this " "file " "directly!\n\n*/\n");
-
-@@ -549,7 +494,6 @@ static SYMBOL *get_hash_symbol(const cha
- }\n\
- }\n"
- );
-- my_end(0);
- exit(0);
- }
-
---- a/sql/Makefile.am
-+++ b/sql/Makefile.am
-@@ -26,7 +26,6 @@ INCLUDES = @ZLIB_INCLUDES@ \
- WRAPLIBS= @WRAPLIBS@
- SUBDIRS = share
- libexec_PROGRAMS = mysqld
--EXTRA_PROGRAMS = gen_lex_hash
- bin_PROGRAMS = mysql_tzinfo_to_sql
-
- noinst_LTLIBRARIES= libndb.la \
diff --git a/utils/mysql/patches/120-bison-compat.patch b/utils/mysql/patches/120-bison-compat.patch
deleted file mode 100644
index 6c9ac9444..000000000
--- a/utils/mysql/patches/120-bison-compat.patch
+++ /dev/null
@@ -1,3290 +0,0 @@
---- a/sql/sql_lex.cc
-+++ b/sql/sql_lex.cc
-@@ -775,14 +775,13 @@ bool consume_comment(Lex_input_stream *l
- (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;
---- a/sql/sql_lex.h
-+++ b/sql/sql_lex.h
-@@ -2072,7 +2072,7 @@ extern void lex_init(void);
- 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);
-
---- a/sql/sql_parse.cc
-+++ b/sql/sql_parse.cc
-@@ -8012,7 +8012,7 @@ bool check_host_name(LEX_STRING *str)
- }
-
-
--extern int MYSQLparse(void *thd); // from sql_yacc.cc
-+extern int MYSQLparse(THD *thd); // from sql_yacc.cc
-
-
- /**
---- a/sql/sql_yacc.yy
-+++ b/sql/sql_yacc.yy
-@@ -25,17 +25,15 @@
- %{
- /* 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.
-+** Use the thd 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 YYPS (& thd->m_parser_state->m_yacc)
-
- #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"
-@@ -64,7 +62,7 @@ const LEX_STRING null_lex_str= {0,0};
- ulong val= *(F); \
- if (my_yyoverflow((B), (D), &val)) \
- { \
-- yyerror((char*) (A)); \
-+ yyerror(current_thd, (char*) (A)); \
- return 2; \
- } \
- else \
-@@ -76,7 +74,7 @@ const LEX_STRING null_lex_str= {0,0};
- #define MYSQL_YYABORT \
- do \
- { \
-- LEX::cleanup_lex_after_parse_error(YYTHD);\
-+ LEX::cleanup_lex_after_parse_error(thd); \
- YYABORT; \
- } while (0)
-
-@@ -159,10 +157,8 @@ void my_parse_error(const char *s)
- 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
- a stored procedure. We must ensure that a parsing error
-@@ -675,7 +671,10 @@ static bool add_create_index (LEX *lex,
- 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 +1515,6 @@ rule: <-- starts at col 1
- query:
- END_OF_INPUT
- {
-- THD *thd= YYTHD;
- if (!thd->bootstrap &&
- (!(thd->lex->select_lex.options & OPTION_FOUND_COMMENT)))
- {
-@@ -1530,7 +1528,7 @@ query:
- {
- 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 +1624,6 @@ statement:
- 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 +1638,6 @@ deallocate_or_drop:
- 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 +1647,12 @@ prepare:
- 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 +1662,6 @@ prepare_src:
- execute:
- EXECUTE_SYM ident
- {
-- THD *thd= YYTHD;
- LEX *lex= thd->lex;
- lex->sql_command= SQLCOM_EXECUTE;
- lex->prepared_stmt_name= $2;
-@@ -1826,7 +1819,6 @@ master_file_def:
- 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 +1836,13 @@ create:
- }
- 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 +1971,6 @@ server_option:
- event_tail:
- remember_name EVENT_SYM opt_if_not_exists sp_name
- {
-- THD *thd= YYTHD;
- LEX *lex=Lex;
-
- lex->stmt_definition_begin= $1;
-@@ -2046,7 +2037,7 @@ opt_ev_status:
- 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 +2087,6 @@ opt_ev_comment:
-
- ev_sql_stmt:
- {
-- THD *thd= YYTHD;
- LEX *lex= thd->lex;
- Lex_input_stream *lip= YYLIP;
-
-@@ -2139,7 +2129,6 @@ ev_sql_stmt:
- }
- ev_sql_stmt_inner
- {
-- THD *thd= YYTHD;
- LEX *lex= thd->lex;
-
- /* return back to the original memory root ASAP */
-@@ -2198,11 +2187,10 @@ sp_name:
- $$= 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 +2260,7 @@ call:
- 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 +2333,7 @@ sp_fdparam:
- (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 +2370,7 @@ sp_pdparam:
- (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 +2433,12 @@ sp_decl:
- {
- 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 +2464,7 @@ sp_decl:
- 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 +2488,7 @@ sp_decl:
- }
-
- 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 +2503,7 @@ sp_decl:
- 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 +2589,7 @@ sp_decl:
-
- sp_cursor_stmt:
- {
-- Lex->sphead->reset_lex(YYTHD);
-+ Lex->sphead->reset_lex(thd);
- }
- select
- {
-@@ -2618,7 +2605,7 @@ sp_cursor_stmt:
- }
- lex->sp_lex_in_use= TRUE;
- $$= lex;
-- if (lex->sphead->restore_lex(YYTHD))
-+ if (lex->sphead->restore_lex(thd))
- MYSQL_YYABORT;
- }
- ;
-@@ -2662,7 +2649,7 @@ sp_hcond_element:
- 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 +2662,7 @@ sp_cond:
- 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 +2692,21 @@ sp_hcond:
- }
- | 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 +2776,6 @@ sp_proc_stmt_if:
-
- sp_proc_stmt_statement:
- {
-- THD *thd= YYTHD;
- LEX *lex= thd->lex;
- Lex_input_stream *lip= YYLIP;
-
-@@ -2798,7 +2784,6 @@ sp_proc_stmt_statement:
- }
- statement
- {
-- THD *thd= YYTHD;
- LEX *lex= thd->lex;
- Lex_input_stream *lip= YYLIP;
- sp_head *sp= lex->sphead;
-@@ -2845,7 +2830,7 @@ sp_proc_stmt_statement:
-
- sp_proc_stmt_return:
- RETURN_SYM
-- { Lex->sphead->reset_lex(YYTHD); }
-+ { Lex->sphead->reset_lex(thd); }
- expr
- {
- LEX *lex= Lex;
-@@ -2867,7 +2852,7 @@ sp_proc_stmt_return:
- MYSQL_YYABORT;
- sp->m_flags|= sp_head::HAS_RETURN;
- }
-- if (sp->restore_lex(YYTHD))
-+ if (sp->restore_lex(thd))
- MYSQL_YYABORT;
- }
- ;
-@@ -3094,7 +3079,7 @@ sp_fetch_list:
- ;
-
- sp_if:
-- { Lex->sphead->reset_lex(YYTHD); }
-+ { Lex->sphead->reset_lex(thd); }
- expr THEN_SYM
- {
- LEX *lex= Lex;
-@@ -3108,7 +3093,7 @@ sp_if:
- 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 +3132,7 @@ simple_case_stmt:
- {
- 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 +3141,7 @@ simple_case_stmt:
- 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 +3183,7 @@ searched_when_clause_list:
- simple_when_clause:
- WHEN_SYM
- {
-- Lex->sphead->reset_lex(YYTHD); /* For expr $3 */
-+ Lex->sphead->reset_lex(thd); /* For expr $3 */
- }
- expr
- {
-@@ -3208,7 +3193,7 @@ simple_when_clause:
- 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 +3208,7 @@ simple_when_clause:
- searched_when_clause:
- WHEN_SYM
- {
-- Lex->sphead->reset_lex(YYTHD); /* For expr $3 */
-+ Lex->sphead->reset_lex(thd); /* For expr $3 */
- }
- expr
- {
-@@ -3231,7 +3216,7 @@ searched_when_clause:
- 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 +3380,7 @@ sp_unlabeled_control:
- MYSQL_YYABORT;
- }
- | WHILE_SYM
-- { Lex->sphead->reset_lex(YYTHD); }
-+ { Lex->sphead->reset_lex(thd); }
- expr DO_SYM
- {
- LEX *lex= Lex;
-@@ -3409,7 +3394,7 @@ sp_unlabeled_control:
- 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 +3409,7 @@ sp_unlabeled_control:
- 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 +3421,7 @@ sp_unlabeled_control:
- 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 +3844,6 @@ create2:
- create3 {}
- | LIKE table_ident
- {
-- THD *thd= YYTHD;
- TABLE_LIST *src_table;
- LEX *lex= thd->lex;
-
-@@ -3873,7 +3857,6 @@ create2:
- }
- | '(' LIKE table_ident ')'
- {
-- THD *thd= YYTHD;
- TABLE_LIST *src_table;
- LEX *lex= thd->lex;
-
-@@ -4342,7 +4325,6 @@ part_bit_expr:
- 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 +4346,7 @@ part_bit_expr:
- 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 +4611,7 @@ create_table_option:
- | 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 +4773,19 @@ default_collation:
- 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 +4797,7 @@ known_storage_engines:
- 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 +5025,7 @@ type:
- {
- 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 +5039,7 @@ type:
- { $$=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 +5171,7 @@ int_type:
- 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 +5245,7 @@ attribute:
- | 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 +5294,7 @@ attribute:
- 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 +5655,6 @@ string_list:
- 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 +5780,7 @@ alter:
- 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 +6173,6 @@ alter_list_item:
- {
- if (!$4)
- {
-- THD *thd= YYTHD;
- $4= thd->variables.collation_database;
- }
- $5= $5 ? $5 : $4;
-@@ -6556,7 +6536,7 @@ keycache_list:
- 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 +6565,7 @@ preload_list:
- 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 +6573,7 @@ preload_keys:
-
- 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 +6793,6 @@ select_item_list:
- | select_item
- | '*'
- {
-- THD *thd= YYTHD;
- Item *item= new (thd->mem_root)
- Item_field(&thd->lex->current_select->context,
- NULL, NULL, "*");
-@@ -6828,7 +6807,6 @@ select_item_list:
- 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 +6907,7 @@ expr:
- 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 +6915,7 @@ expr:
- | 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 +6957,50 @@ expr:
- 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 +7010,19 @@ expr:
- 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 +7044,12 @@ bool_pri:
- 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 +7059,7 @@ predicate:
- }
- | 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 +7067,13 @@ predicate:
- {
- $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 +7081,7 @@ predicate:
- {
- $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 +7089,14 @@ predicate:
- }
- | 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 +7104,42 @@ predicate:
- }
- | 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 +7149,85 @@ predicate:
- 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 +7276,6 @@ simple_expr:
- | 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 +7291,7 @@ simple_expr:
- | 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 +7301,25 @@ simple_expr:
- }
- | '-' 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 +7328,20 @@ simple_expr:
- | '(' 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 +7350,7 @@ simple_expr:
- | 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 +7358,7 @@ simple_expr:
- }
- | 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 +7366,27 @@ simple_expr:
- | 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 +7399,14 @@ simple_expr:
- 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 +7414,7 @@ simple_expr:
- | 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 +7429,19 @@ simple_expr:
- 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 +7449,30 @@ function_call_keyword:
- }
- | 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 +7487,6 @@ function_call_keyword:
- }
- | 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 +7498,103 @@ function_call_keyword:
- }
- | 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 +7602,7 @@ function_call_keyword:
- }
- | 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 +7623,34 @@ function_call_keyword:
- 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 +7658,83 @@ function_call_nonkeyword:
- | 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 +7749,9 @@ function_call_nonkeyword:
- */
- 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 +7759,42 @@ function_call_nonkeyword:
- | 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 +7809,61 @@ function_call_nonkeyword:
- 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 +7875,30 @@ function_call_conflict:
- }
- | 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 +7910,7 @@ function_call_conflict:
- }
- | 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 +7932,52 @@ function_call_conflict:
- 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 +8015,6 @@ function_call_generic:
- }
- opt_udf_expr_list ')'
- {
-- THD *thd= YYTHD;
- Create_func *builder;
- Item *item= NULL;
-
-@@ -8097,7 +8068,6 @@ function_call_generic:
- }
- | ident '.' ident '(' opt_expr_list ')'
- {
-- THD *thd= YYTHD;
- Create_qfunc *builder;
- Item *item= NULL;
-
-@@ -8161,7 +8131,7 @@ opt_udf_expr_list:
- 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 +8164,7 @@ udf_expr:
- 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 +8172,46 @@ udf_expr:
- 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 +8221,13 @@ sum_expr:
- { 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 +8238,55 @@ sum_expr:
- */
- | 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 +8298,7 @@ sum_expr:
- {
- 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 +8327,7 @@ variable_aux:
- 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 +8336,7 @@ variable_aux:
- }
- | 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 +8350,7 @@ variable_aux:
- 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 +8365,7 @@ opt_distinct:
- 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 +8392,9 @@ opt_gorder_clause:
-
- 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 +8447,7 @@ opt_expr_list:
- expr_list:
- expr
- {
-- $$= new (YYTHD->mem_root) List<Item>;
-+ $$= new (thd->mem_root) List<Item>;
- if ($$ == NULL)
- MYSQL_YYABORT;
- $$->push_back($1);
-@@ -8497,7 +8467,7 @@ ident_list_arg:
- 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 +8565,7 @@ join_table:
- {
- 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 +8580,7 @@ join_table:
- {
- 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 +8610,7 @@ join_table:
- {
- 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 +8646,7 @@ join_table:
- {
- 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 +8694,7 @@ table_factor:
- }
- 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 +8892,7 @@ index_hints_list:
-
- 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 +8901,15 @@ opt_key_definition:
- ;
-
- 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 +8922,7 @@ using_list:
- {
- 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 +8931,7 @@ using_list:
- }
- | 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 +8972,7 @@ interval_time_stamp:
- implementation without changing its
- resolution.
- */
-- WARN_DEPRECATED(yythd, VER_CELOSIA, "FRAC_SECOND", "MICROSECOND");
-+ WARN_DEPRECATED(thd, VER_CELOSIA, "FRAC_SECOND", "MICROSECOND");
- }
- ;
-
-@@ -9086,7 +9056,6 @@ opt_escape:
- }
- | /* 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 +9076,9 @@ group_clause:
-
- 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 +9125,6 @@ alter_order_list:
- 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 +9177,9 @@ order_clause:
-
- 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 +9239,19 @@ limit_option:
- }
- | 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 +9333,7 @@ procedure_clause:
- 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 +9358,6 @@ procedure_list2:
- procedure_item:
- remember_name expr remember_end
- {
-- THD *thd= YYTHD;
--
- if (add_proc_to_list(thd, $2))
- MYSQL_YYABORT;
- if (!$2->name)
-@@ -9560,7 +9526,6 @@ drop:
- }
- | 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 +9548,6 @@ drop:
- }
- | DROP FUNCTION_SYM if_exists ident
- {
-- THD *thd= YYTHD;
- LEX *lex= thd->lex;
- LEX_STRING db= {0, 0};
- sp_name *spname;
-@@ -9664,7 +9628,7 @@ table_list:
- 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 +9641,7 @@ table_alias_ref_list:
- 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 +9832,7 @@ expr_or_default:
- 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 +9886,7 @@ update_list:
- 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 +9929,7 @@ delete:
- 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 +9962,7 @@ table_wild_one:
- 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 +9971,10 @@ table_wild_one:
- }
- | 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 +10094,7 @@ show_param:
- {
- 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 +10102,7 @@ show_param:
- 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 +10110,7 @@ show_param:
- 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 +10118,7 @@ show_param:
- 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 +10126,7 @@ show_param:
- 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 +10134,22 @@ show_param:
- 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 +10162,7 @@ show_param:
- 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 +10197,7 @@ show_param:
- 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 +10209,15 @@ show_param:
- {
- 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 +10249,7 @@ show_param:
- {
- 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 +10257,7 @@ show_param:
- 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 +10265,24 @@ show_param:
- 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 +10291,21 @@ show_param:
- 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 +10335,7 @@ show_param:
- {
- 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 +10344,7 @@ show_param:
- {
- 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 +10380,14 @@ show_param:
- {
- 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 +10465,7 @@ wild_and_where:
- /* 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 +10489,7 @@ describe:
- 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 +10518,7 @@ opt_describe_column:
- | 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 +10661,6 @@ use:
- load:
- LOAD DATA_SYM
- {
-- THD *thd= YYTHD;
- LEX *lex= thd->lex;
-
- if (lex->sphead)
-@@ -10711,7 +10674,7 @@ load:
- | 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 +10682,7 @@ load:
- 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 +10702,7 @@ load_data:
- 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 +10717,7 @@ load_data:
- | 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 +10835,7 @@ field_or_var:
- 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 +10852,6 @@ text_literal:
- 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 +10877,7 @@ text_literal:
- 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 +10886,7 @@ text_literal:
- }
- | 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 +10905,7 @@ text_literal:
- 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 +10916,15 @@ text_literal:
- 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 +10936,7 @@ text_string:
- }
- | 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 +10951,6 @@ text_string:
- param_marker:
- PARAM_MARKER
- {
-- THD *thd= YYTHD;
- LEX *lex= thd->lex;
- Lex_input_stream *lip= YYLIP;
- Item_param *item;
-@@ -11022,38 +10983,38 @@ literal:
- | 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 +11025,7 @@ literal:
- 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 +11043,7 @@ literal:
- }
- | 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 +11054,7 @@ literal:
- 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 +11078,7 @@ NUM_literal:
- 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 +11088,7 @@ NUM_literal:
- | 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 +11097,23 @@ NUM_literal:
- }
- | 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 +11133,7 @@ table_wild:
- 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 +11141,6 @@ table_wild:
- }
- | ident '.' ident '.' '*'
- {
-- THD *thd= YYTHD;
- SELECT_LEX *sel= Select;
- const char* schema= thd->client_capabilities & CLIENT_NO_SCHEMA ?
- NullS : $1.str;
-@@ -11200,7 +11160,6 @@ order_ident:
- simple_ident:
- ident
- {
-- THD *thd= YYTHD;
- LEX *lex= thd->lex;
- Lex_input_stream *lip= YYLIP;
- sp_variable_t *spv;
-@@ -11251,7 +11210,6 @@ simple_ident:
- 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 +11231,6 @@ simple_ident_nospvar:
- simple_ident_q:
- ident '.' ident
- {
-- THD *thd= YYTHD;
- LEX *lex= thd->lex;
-
- /*
-@@ -11352,7 +11309,6 @@ simple_ident_q:
- }
- | '.' ident '.' ident
- {
-- THD *thd= YYTHD;
- LEX *lex= thd->lex;
- SELECT_LEX *sel= lex->current_select;
- if (sel->no_table_names_allowed)
-@@ -11377,7 +11333,6 @@ simple_ident_q:
- }
- | 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 +11400,7 @@ table_ident:
- }
- | ident '.' ident
- {
-- $$= new Table_ident(YYTHD, $1,$3,0);
-+ $$= new Table_ident(thd, $1,$3,0);
- if ($$ == NULL)
- MYSQL_YYABORT;
- }
-@@ -11467,7 +11422,7 @@ table_ident_opt_wild:
- }
- | ident '.' ident opt_wild
- {
-- $$= new Table_ident(YYTHD, $1,$3,0);
-+ $$= new Table_ident(thd, $1,$3,0);
- if ($$ == NULL)
- MYSQL_YYABORT;
- }
-@@ -11477,7 +11432,7 @@ table_ident_nodb:
- 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 +11442,6 @@ IDENT_sys:
- IDENT { $$= $1; }
- | IDENT_QUOTED
- {
-- THD *thd= YYTHD;
--
- if (thd->charset_is_system_charset)
- {
- CHARSET_INFO *cs= system_charset_info;
-@@ -11516,8 +11469,6 @@ IDENT_sys:
- TEXT_STRING_sys:
- TEXT_STRING
- {
-- THD *thd= YYTHD;
--
- if (thd->charset_is_system_charset)
- $$= $1;
- else
-@@ -11532,8 +11483,6 @@ TEXT_STRING_sys:
- TEXT_STRING_literal:
- TEXT_STRING
- {
-- THD *thd= YYTHD;
--
- if (thd->charset_is_collation_connection)
- $$= $1;
- else
-@@ -11548,8 +11497,6 @@ TEXT_STRING_literal:
- TEXT_STRING_filesystem:
- TEXT_STRING
- {
-- THD *thd= YYTHD;
--
- if (thd->charset_is_character_set_filesystem)
- $$= $1;
- else
-@@ -11566,7 +11513,6 @@ ident:
- IDENT_sys { $$=$1; }
- | keyword
- {
-- THD *thd= YYTHD;
- $$.str= thd->strmake($1.str, $1.length);
- if ($$.str == NULL)
- MYSQL_YYABORT;
-@@ -11578,7 +11524,6 @@ label_ident:
- IDENT_sys { $$=$1; }
- | keyword_sp
- {
-- THD *thd= YYTHD;
- $$.str= thd->strmake($1.str, $1.length);
- if ($$.str == NULL)
- MYSQL_YYABORT;
-@@ -11595,7 +11540,6 @@ ident_or_text:
- user:
- ident_or_text
- {
-- THD *thd= YYTHD;
- if (!($$=(LEX_USER*) thd->alloc(sizeof(st_lex_user))))
- MYSQL_YYABORT;
- $$->user = $1;
-@@ -11609,7 +11553,6 @@ user:
- }
- | 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 @@ user:
- }
- | 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_value_list:
-
- option_type_value:
- {
-- THD *thd= YYTHD;
- LEX *lex= thd->lex;
- Lex_input_stream *lip= YYLIP;
-
-@@ -12022,7 +11964,6 @@ option_type_value:
- }
- ext_option_value
- {
-- THD *thd= YYTHD;
- LEX *lex= thd->lex;
- Lex_input_stream *lip= YYLIP;
-
-@@ -12105,7 +12046,6 @@ ext_option_value:
- 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 @@ sys_option_value:
- 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 @@ sys_option_value:
- }
- | 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 @@ option_value:
- '@' 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 @@ option_value:
- }
- | '@' '@' 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 @@ option_value:
- }
- | 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 @@ option_value:
- }
- | PASSWORD equal text_or_password
- {
-- THD *thd= YYTHD;
- LEX *lex= thd->lex;
- LEX_USER *user;
- sp_pcontext *spc= lex->spcont;
-@@ -12278,7 +12214,6 @@ option_value:
- internal_variable_name:
- ident
- {
-- THD *thd= YYTHD;
- sp_pcontext *spc= thd->lex->spcont;
- sp_variable_t *spv;
-
-@@ -12337,7 +12272,7 @@ internal_variable_name:
- }
- 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 @@ internal_variable_name:
- }
- | 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_or_password:
- 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 @@ set_expr_or_default:
- | 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_lock:
- 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 @@ handler:
- 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 @@ grant_user:
- $$=$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 @@ grant_user:
- 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:
- 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_work:
-
- 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_opt:
-
- 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 @@ union_order_or_limit:
- }
- order_or_limit
- {
-- THD *thd= YYTHD;
- thd->lex->current_select->no_table_names_allowed= 0;
- thd->where= "";
- }
-@@ -13255,14 +13188,14 @@ no_definer:
- 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_suid:
- 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:
- }
- 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 @@ trigger_tail:
- EACH_SYM
- ROW_SYM
- { /* $15 */
-- THD *thd= YYTHD;
- LEX *lex= thd->lex;
- Lex_input_stream *lip= YYLIP;
- sp_head *sp;
-@@ -13437,8 +13367,8 @@ trigger_tail:
- 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 @@ trigger_tail:
- 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 @@ udf_tail:
- 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 @@ udf_tail:
- | 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 @@ sf_tail:
- sp_name /* $3 */
- '(' /* $4 */
- { /* $5 */
-- THD *thd= YYTHD;
- LEX *lex= thd->lex;
- Lex_input_stream *lip= YYLIP;
- sp_head *sp;
-@@ -13565,7 +13492,7 @@ sf_tail:
- 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 @@ sf_tail:
- }
- sp_c_chistics /* $13 */
- { /* $14 */
-- THD *thd= YYTHD;
- LEX *lex= thd->lex;
- Lex_input_stream *lip= YYLIP;
-
-@@ -13583,7 +13509,6 @@ sf_tail:
- }
- sp_proc_stmt /* $15 */
- {
-- THD *thd= YYTHD;
- LEX *lex= thd->lex;
- sp_head *sp= lex->sphead;
-
-@@ -13654,10 +13579,10 @@ sp_tail:
- 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_tail:
- 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_tail:
- }
- sp_c_chistics
- {
-- THD *thd= YYTHD;
- LEX *lex= thd->lex;
-
- lex->sphead->m_chistics= &lex->sp_chistics;
-@@ -13691,9 +13614,9 @@ sp_tail:
- 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 @@ xid:
- 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());
- }