summaryrefslogtreecommitdiff
path: root/community/percona-server
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2013-10-17 01:14:24 -0700
committerroot <root@rshg054.dnsready.net>2013-10-17 01:14:24 -0700
commitc72dc5de577922ea7f6002cdabcfac1576eae211 (patch)
tree3b8c1ab907b1575184230eb1adc05e26e3a1b87a /community/percona-server
parentc22d00d6478c9a00b4c7e491af65637537247c8f (diff)
Thu Oct 17 01:13:29 PDT 2013
Diffstat (limited to 'community/percona-server')
-rw-r--r--community/percona-server/PKGBUILD28
-rw-r--r--community/percona-server/my.cnf145
-rw-r--r--community/percona-server/mysql56-bison3.patch (renamed from community/percona-server/0001-MDEV-4902-sql_yacc.yy-incompatible-with-bison-3.patch)1946
-rw-r--r--community/percona-server/mysql56-bufsize.patch20
-rw-r--r--community/percona-server/percona.install4
5 files changed, 1187 insertions, 956 deletions
diff --git a/community/percona-server/PKGBUILD b/community/percona-server/PKGBUILD
index eff9ebd3b..f201be457 100644
--- a/community/percona-server/PKGBUILD
+++ b/community/percona-server/PKGBUILD
@@ -1,8 +1,8 @@
-# $Id: PKGBUILD 96790 2013-09-05 08:50:02Z mtorromeo $
+# $Id: PKGBUILD 98649 2013-10-16 12:59:04Z mtorromeo $
# Maintainer: Massimiliano Torromeo <massimiliano.torromeo@gmail.com>
pkgname=percona-server
-pkgver=5.5.33_rel31.1
+pkgver=5.6.13_rel61.0
pkgrel=1
pkgdesc="A backwards-compatible drop-in replacement for MySQL that provides improved performance, diagnostics and instrumentation"
arch=('i686' 'x86_64')
@@ -18,16 +18,17 @@ url="http://www.percona.com/software/percona-server/"
options=('!libtool' 'emptydirs')
backup=('etc/mysql/my.cnf')
install=percona.install
-source=("http://www.percona.com/downloads/Percona-Server-${pkgver%.*_*}/Percona-Server-${pkgver/_rel/-}/source/Percona-Server-${pkgver/_/-}.tar.gz"
- '0001-MDEV-4902-sql_yacc.yy-incompatible-with-bison-3.patch'
+source=("http://www.percona.com/downloads/Percona-Server-${pkgver%.*_*}/Percona-Server-${pkgver/_/-}/source/Percona-Server-${pkgver/_/-}.tar.gz"
'mysqld-post.sh'
'mysqld.service'
- 'mysqld-tmpfile.conf')
+ 'mysqld-tmpfile.conf'
+ 'mysql56-bufsize.patch'
+ 'mysql56-bison3.patch')
prepare() {
- cd "${srcdir}/Percona-Server-${pkgver/_/-}"
- sed -i 's|ADD_SUBDIRECTORY(libmysqld/examples)|# ADD_SUBDIRECTORY(libmysqld/examples)|' CMakeLists.txt
- patch -p1 -i "$srcdir/0001-MDEV-4902-sql_yacc.yy-incompatible-with-bison-3.patch"
+ cd "$srcdir/Percona-Server-${pkgver/_/-}"
+ patch -p0 -i "$srcdir/mysql56-bufsize.patch"
+ patch -p1 -i "$srcdir/mysql56-bison3.patch"
}
build() {
@@ -72,7 +73,7 @@ build() {
-DWITH_FEDERATED_STORAGE_ENGINE=OFF \
-DWITH_EXAMPLE_STORAGE_ENGINE=OFF \
-DCMAKE_C_FLAGS="-fPIC ${CFLAGS} -fno-strict-aliasing -DBIG_JOINS=1 -fomit-frame-pointer" \
- -DCMAKE_CXX_FLAGS="-fPIC ${CXXFLAGS} -fno-strict-aliasing -DBIG_JOINS=1 -felide-constructors -fno-rtti -fpermissive"
+ -DCMAKE_CXX_FLAGS="-fPIC ${CXXFLAGS} -fno-strict-aliasing -DBIG_JOINS=1 -felide-constructors -fno-rtti"
make
}
@@ -81,7 +82,7 @@ package() {
cd "${srcdir}"/build
make DESTDIR=${pkgdir} install
- install -Dm644 "${pkgdir}"/usr/share/mysql/my-medium.cnf "${pkgdir}"/etc/mysql/my.cnf
+ install -Dm644 "${pkgdir}"/usr/share/mysql/my-default.cnf "${pkgdir}"/etc/mysql/my.cnf
install -Dm755 "${srcdir}"/mysqld-post.sh "${pkgdir}"/usr/bin/mysqld-post
install -Dm644 "${srcdir}"/mysqld-tmpfile.conf "${pkgdir}"/usr/lib/tmpfiles.d/mysqld.conf
install -Dm644 "${srcdir}"/mysqld.service "${pkgdir}"/usr/lib/systemd/system/mysqld.service
@@ -101,8 +102,9 @@ package() {
rm "${pkgdir}"/usr/share/man/man1/mysql-test-run.pl.1
}
-sha256sums=('2039ae974d0973b765a4cdc7ffa1dc75ebd93540769fb134b3a8dc521dfc0b3a'
- '35f5e7819d6c24863f3319462676ea989fd58f8a334925432444b6bf5c42fdaf'
+sha256sums=('6fa6c240f08c3aedacbefe31559128d239c7f18089c5bba64136698bd64910c8'
'82a241d9fa4032187a26597d044e94ba810b209b53a7ce14bb6eb92555993a48'
'9bc66470f3f80534c0bb62f9f8325ccf60b164f421f74ad74a963f065d7b1869'
- 'badf6a701d9dc6ea3b4ddca26cb0f42b6236432ccdbc14c64962147802594a60')
+ 'badf6a701d9dc6ea3b4ddca26cb0f42b6236432ccdbc14c64962147802594a60'
+ '1039e232a7778544b00eb215c93bb06c588c95c2fd49cfb162dc50eb4dfbf729'
+ '89aab4eafa97cd0e40b61871a472fd90b4372e69c7af0d86145e5a7de9c8d4ee')
diff --git a/community/percona-server/my.cnf b/community/percona-server/my.cnf
deleted file mode 100644
index afdd6dc2c..000000000
--- a/community/percona-server/my.cnf
+++ /dev/null
@@ -1,145 +0,0 @@
-# MySQL config file for medium systems.
-#
-# This is for a system with little memory (32M - 64M) where MySQL plays
-# an important part, or systems up to 128M where MySQL is used together with
-# other programs (such as a web server)
-#
-# MySQL programs look for option files in a set of
-# locations which depend on the deployment platform.
-# You can copy this option file to one of those
-# locations. For information about these locations, see:
-# http://dev.mysql.com/doc/mysql/en/option-files.html
-#
-# In this file, you can use all long options that a program supports.
-# If you want to know which options a program supports, run the program
-# with the "--help" option.
-
-# The following options will be passed to all MySQL clients
-[client]
-#password = your_password
-port = 3306
-socket = /run/mysqld/mysqld.sock
-
-# Here follows entries for some specific programs
-
-# The MySQL server
-[mysqld]
-port = 3306
-socket = /run/mysqld/mysqld.sock
-datadir = /var/lib/mysql
-skip-external-locking
-key_buffer_size = 16M
-max_allowed_packet = 1M
-table_open_cache = 64
-sort_buffer_size = 512K
-net_buffer_length = 8K
-read_buffer_size = 256K
-read_rnd_buffer_size = 512K
-myisam_sort_buffer_size = 8M
-
-# Don't listen on a TCP/IP port at all. This can be a security enhancement,
-# if all processes that need to connect to mysqld run on the same host.
-# All interaction with mysqld must be made via Unix sockets or named pipes.
-# Note that using this option without enabling named pipes on Windows
-# (via the "enable-named-pipe" option) will render mysqld useless!
-#
-skip-networking
-
-# Replication Master Server (default)
-# binary logging is required for replication
-log-bin=mysql-bin
-
-# binary logging format - mixed recommended
-binlog_format=mixed
-
-# required unique id between 1 and 2^32 - 1
-# defaults to 1 if master-host is not set
-# but will not function as a master if omitted
-server-id = 1
-
-# Replication Slave (comment out master section to use this)
-#
-# To configure this host as a replication slave, you can choose between
-# two methods :
-#
-# 1) Use the CHANGE MASTER TO command (fully described in our manual) -
-# the syntax is:
-#
-# CHANGE MASTER TO MASTER_HOST=<host>, MASTER_PORT=<port>,
-# MASTER_USER=<user>, MASTER_PASSWORD=<password> ;
-#
-# where you replace <host>, <user>, <password> by quoted strings and
-# <port> by the master's port number (3306 by default).
-#
-# Example:
-#
-# CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306,
-# MASTER_USER='joe', MASTER_PASSWORD='secret';
-#
-# OR
-#
-# 2) Set the variables below. However, in case you choose this method, then
-# start replication for the first time (even unsuccessfully, for example
-# if you mistyped the password in master-password and the slave fails to
-# connect), the slave will create a master.info file, and any later
-# change in this file to the variables' values below will be ignored and
-# overridden by the content of the master.info file, unless you shutdown
-# the slave server, delete master.info and restart the slaver server.
-# For that reason, you may want to leave the lines below untouched
-# (commented) and instead use CHANGE MASTER TO (see above)
-#
-# required unique id between 2 and 2^32 - 1
-# (and different from the master)
-# defaults to 2 if master-host is set
-# but will not function as a slave if omitted
-#server-id = 2
-#
-# The replication master for this slave - required
-#master-host = <hostname>
-#
-# The username the slave will use for authentication when connecting
-# to the master - required
-#master-user = <username>
-#
-# The password the slave will authenticate with when connecting to
-# the master - required
-#master-password = <password>
-#
-# The port the master is listening on.
-# optional - defaults to 3306
-#master-port = <port>
-#
-# binary logging - not required for slaves, but recommended
-#log-bin=mysql-bin
-
-# Uncomment the following if you are using InnoDB tables
-#innodb_data_home_dir = /var/lib/mysql
-#innodb_data_file_path = ibdata1:10M:autoextend
-#innodb_log_group_home_dir = /var/lib/mysql
-# You can set .._buffer_pool_size up to 50 - 80 %
-# of RAM but beware of setting memory usage too high
-#innodb_buffer_pool_size = 16M
-#innodb_additional_mem_pool_size = 2M
-# Set .._log_file_size to 25 % of buffer pool size
-#innodb_log_file_size = 5M
-#innodb_log_buffer_size = 8M
-#innodb_flush_log_at_trx_commit = 1
-#innodb_lock_wait_timeout = 50
-
-[mysqldump]
-quick
-max_allowed_packet = 16M
-
-[mysql]
-no-auto-rehash
-# Remove the next comment character if you are not familiar with SQL
-#safe-updates
-
-[myisamchk]
-key_buffer_size = 20M
-sort_buffer_size = 20M
-read_buffer = 2M
-write_buffer = 2M
-
-[mysqlhotcopy]
-interactive-timeout
diff --git a/community/percona-server/0001-MDEV-4902-sql_yacc.yy-incompatible-with-bison-3.patch b/community/percona-server/mysql56-bison3.patch
index fda79cff3..79c6b5c28 100644
--- a/community/percona-server/0001-MDEV-4902-sql_yacc.yy-incompatible-with-bison-3.patch
+++ b/community/percona-server/mysql56-bison3.patch
@@ -1,36 +1,17 @@
-From 6325837d6abf272b8c3dfac664f18435f8a2abf8 Mon Sep 17 00:00:00 2001
-From: Massimiliano Torromeo <massimiliano.torromeo@gmail.com>
-Date: Thu, 5 Sep 2013 09:52:54 +0200
-Subject: [PATCH] MDEV-4902 - sql_yacc.yy incompatible with bison 3
-
-- YYPARSE_PARAM and YYLEX_PARAM are removed in Bison 3.0. Deprecated
- since Bison 1.875 in favor of %lex-param, %parse-param.
-- %pure_parser is deprecated in favor of %define api.pure.
-- %parse-param adds an argument to yyerror() as well, updated
- MYSQLerror() accordingly.
-- %parse-param allows to declare proper type for argument. That's
- what 99% of this patch is about.
----
- sql/sql_lex.cc | 12 +-
- sql/sql_lex.h | 2 +-
- sql/sql_parse.cc | 2 +-
- sql/sql_yacc.yy | 799 ++++++++++++++++++++++++-------------------------------
- 4 files changed, 361 insertions(+), 454 deletions(-)
-
diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc
-index 18323f8..b01d451 100644
+index 1bb7747..009780f 100644
--- a/sql/sql_lex.cc
+++ b/sql/sql_lex.cc
-@@ -29,7 +29,7 @@
- #include "sp.h"
- #include "sp_head.h"
+@@ -34,7 +34,7 @@
+ #include "sql_optimizer.h" // JOIN
+ #include <mysql/psi/mysql_statement.h>
-static int lex_one_token(void *arg, void *yythd);
+static int lex_one_token(void *arg, THD *thd);
/*
We are using pointer to this variable for distinguishing between assignment
-@@ -869,9 +869,8 @@ bool consume_comment(Lex_input_stream *lip, int remaining_recursions_permitted)
+@@ -905,9 +905,8 @@ bool consume_comment(Lex_input_stream *lip, int remaining_recursions_permitted)
(which can't be followed by a signed number)
*/
@@ -41,7 +22,7 @@ index 18323f8..b01d451 100644
Lex_input_stream *lip= & thd->m_parser_state->m_lip;
YYSTYPE *yylval=(YYSTYPE*) arg;
int token;
-@@ -889,7 +888,7 @@ int MYSQLlex(void *arg, void *yythd)
+@@ -926,7 +925,7 @@ int MYSQLlex(void *arg, void *yythd)
return token;
}
@@ -50,7 +31,7 @@ index 18323f8..b01d451 100644
switch(token) {
case WITH:
-@@ -900,7 +899,7 @@ int MYSQLlex(void *arg, void *yythd)
+@@ -937,7 +936,7 @@ int MYSQLlex(void *arg, void *yythd)
to transform the grammar into a LALR(1) grammar,
which sql_yacc.yy can process.
*/
@@ -58,8 +39,8 @@ index 18323f8..b01d451 100644
+ token= lex_one_token(arg, thd);
switch(token) {
case CUBE_SYM:
- return WITH_CUBE_SYM;
-@@ -923,14 +922,13 @@ int MYSQLlex(void *arg, void *yythd)
+ lip->m_digest_psi= MYSQL_ADD_TOKEN(lip->m_digest_psi, WITH_CUBE_SYM,
+@@ -966,14 +965,13 @@ int MYSQLlex(void *arg, void *yythd)
return token;
}
@@ -76,23 +57,23 @@ index 18323f8..b01d451 100644
LEX *lex= thd->lex;
YYSTYPE *yylval=(YYSTYPE*) arg;
diff --git a/sql/sql_lex.h b/sql/sql_lex.h
-index 8648b32..ba37127 100644
+index b7030e4..e2d3a60 100644
--- a/sql/sql_lex.h
+++ b/sql/sql_lex.h
-@@ -2820,7 +2820,7 @@ extern void lex_init(void);
+@@ -2845,7 +2845,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);
+ extern void trim_whitespace(const CHARSET_INFO *cs, LEX_STRING *str);
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
-index a1a79fd..d826b77 100644
+index bcf5be1..d58838b 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
-@@ -7636,7 +7636,7 @@ bool check_host_name(LEX_STRING *str)
+@@ -8497,7 +8497,7 @@ bool check_host_name(LEX_STRING *str)
}
@@ -102,10 +83,10 @@ index a1a79fd..d826b77 100644
/**
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
-index 34ae03b..2a6d9aa 100644
+index 0c9e81d..765e389 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
-@@ -22,20 +22,13 @@
+@@ -22,21 +22,14 @@
*/
%{
@@ -118,8 +99,10 @@ index 34ae03b..2a6d9aa 100644
-#define YYTHD ((THD *)yythd)
-#define YYLIP (& YYTHD->m_parser_state->m_lip)
-#define YYPS (& YYTHD->m_parser_state->m_yacc)
+-#define YYCSCL YYTHD->variables.character_set_client
+#define YYLIP (& thd->m_parser_state->m_lip)
+#define YYPS (& thd->m_parser_state->m_yacc)
++#define YYCSCL thd->variables.character_set_client
#define MYSQL_YACC
#define YYINITDEPTH 100
@@ -129,33 +112,25 @@ index 34ae03b..2a6d9aa 100644
#define Select Lex->current_select
#include "sql_priv.h"
#include "unireg.h" // REQUIRED: for other includes
-@@ -69,14 +62,14 @@
- #pragma warning (disable : 4065)
- #endif
-
--int yylex(void *yylval, void *yythd);
-+int yylex(void *yylval, THD *thd);
-
- #define yyoverflow(A,B,C,D,E,F) \
- { \
+@@ -85,7 +78,7 @@ int yylex(void *yylval, void *yythd);
ulong val= *(F); \
if (my_yyoverflow((B), (D), &val)) \
{ \
- yyerror((char*) (A)); \
-+ yyerror(current_thd, (char*) (A)); \
++ yyerror(current_thd, (char*) (A)); \
return 2; \
} \
else \
-@@ -88,7 +81,7 @@ int yylex(void *yylval, void *yythd);
+@@ -97,7 +90,7 @@ int yylex(void *yylval, void *yythd);
#define MYSQL_YYABORT \
do \
{ \
- LEX::cleanup_lex_after_parse_error(YYTHD);\
-+ LEX::cleanup_lex_after_parse_error(thd);\
++ LEX::cleanup_lex_after_parse_error(thd); \
YYABORT; \
} while (0)
-@@ -174,10 +167,8 @@ void my_parse_error(const char *s)
+@@ -183,10 +176,8 @@ void my_parse_error(const char *s)
to abort from the parser.
*/
@@ -167,7 +142,7 @@ index 34ae03b..2a6d9aa 100644
/*
Restore the original LEX if it was replaced when parsing
a stored procedure. We must ensure that a parsing error
-@@ -780,7 +771,10 @@ static bool add_create_index (LEX *lex, Key::Keytype type,
+@@ -1024,7 +1015,10 @@ bool match_authorized_user(Security_context *ctx, LEX_USER *user)
bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize);
%}
@@ -177,9 +152,9 @@ index 34ae03b..2a6d9aa 100644
+%parse-param { THD *thd }
+%lex-param { THD *thd }
/*
- Currently there are 168 shift/reduce conflicts.
+ Currently there are 161 shift/reduce conflicts.
We should not introduce new conflicts any more.
-@@ -1668,7 +1662,6 @@ rule: <-- starts at col 1
+@@ -1971,7 +1965,6 @@ rule: <-- starts at col 1
query:
END_OF_INPUT
{
@@ -187,7 +162,7 @@ index 34ae03b..2a6d9aa 100644
if (!thd->bootstrap &&
(!(thd->lex->select_lex.options & OPTION_FOUND_COMMENT)))
{
-@@ -1682,7 +1675,7 @@ query:
+@@ -1985,7 +1978,7 @@ query:
{
Lex_input_stream *lip = YYLIP;
@@ -196,7 +171,7 @@ index 34ae03b..2a6d9aa 100644
lip->multi_statements &&
! lip->eof())
{
-@@ -1778,7 +1771,6 @@ statement:
+@@ -2082,7 +2075,6 @@ statement:
deallocate:
deallocate_or_drop PREPARE_SYM ident
{
@@ -204,7 +179,7 @@ index 34ae03b..2a6d9aa 100644
LEX *lex= thd->lex;
lex->sql_command= SQLCOM_DEALLOCATE_PREPARE;
lex->prepared_stmt_name= $3;
-@@ -1793,7 +1785,6 @@ deallocate_or_drop:
+@@ -2097,7 +2089,6 @@ deallocate_or_drop:
prepare:
PREPARE_SYM ident FROM prepare_src
{
@@ -212,7 +187,7 @@ index 34ae03b..2a6d9aa 100644
LEX *lex= thd->lex;
lex->sql_command= SQLCOM_PREPARE;
lex->prepared_stmt_name= $2;
-@@ -1803,14 +1794,12 @@ prepare:
+@@ -2107,14 +2098,12 @@ prepare:
prepare_src:
TEXT_STRING_sys
{
@@ -227,7 +202,7 @@ index 34ae03b..2a6d9aa 100644
LEX *lex= thd->lex;
lex->prepared_stmt_code= $2;
lex->prepared_stmt_code_is_varref= TRUE;
-@@ -1820,7 +1809,6 @@ prepare_src:
+@@ -2124,7 +2113,6 @@ prepare_src:
execute:
EXECUTE_SYM ident
{
@@ -235,25 +210,25 @@ index 34ae03b..2a6d9aa 100644
LEX *lex= thd->lex;
lex->sql_command= SQLCOM_EXECUTE;
lex->prepared_stmt_name= $2;
-@@ -1955,7 +1943,7 @@ master_def:
+@@ -2291,7 +2279,7 @@ master_def:
}
if (Lex->mi.heartbeat_period > slave_net_timeout)
{
-- push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_WARN,
-+ push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
+- push_warning_printf(YYTHD, Sql_condition::WARN_LEVEL_WARN,
++ push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MAX,
ER(ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MAX));
}
-@@ -1963,7 +1951,7 @@ master_def:
+@@ -2299,7 +2287,7 @@ master_def:
{
if (Lex->mi.heartbeat_period != 0.0)
{
-- push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_WARN,
-+ push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
+- push_warning_printf(YYTHD, Sql_condition::WARN_LEVEL_WARN,
++ push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MIN,
ER(ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MIN));
Lex->mi.heartbeat_period= 0.0;
-@@ -2038,7 +2026,6 @@ master_file_def:
+@@ -2382,7 +2370,6 @@ master_file_def:
create:
CREATE opt_table_options TABLE_SYM opt_if_not_exists table_ident
{
@@ -261,24 +236,24 @@ index 34ae03b..2a6d9aa 100644
LEX *lex= thd->lex;
lex->sql_command= SQLCOM_CREATE_TABLE;
if (!lex->select_lex.add_table_to_list(thd, $5, NULL,
-@@ -2063,13 +2050,13 @@ create:
+@@ -2408,7 +2395,6 @@ create:
}
create2
{
-- LEX *lex= YYTHD->lex;
-+ LEX *lex= thd->lex;
+- THD *thd= YYTHD;
+ 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,
+@@ -2417,7 +2403,7 @@ create:
+ lex->create_info.db_type=
+ lex->create_info.options & HA_LEX_CREATE_TMP_TABLE ?
+ ha_default_temp_handlerton(thd) : ha_default_handlerton(thd);
+- push_warning_printf(YYTHD, Sql_condition::WARN_LEVEL_WARN,
++ push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
ER_WARN_USING_OTHER_HANDLER,
ER(ER_WARN_USING_OTHER_HANDLER),
ha_resolve_storage_engine_name(lex->create_info.db_type),
-@@ -2199,7 +2186,6 @@ server_option:
+@@ -2551,7 +2537,6 @@ server_option:
event_tail:
remember_name EVENT_SYM opt_if_not_exists sp_name
{
@@ -286,16 +261,16 @@ index 34ae03b..2a6d9aa 100644
LEX *lex=Lex;
lex->stmt_definition_begin= $1;
-@@ -2266,7 +2252,7 @@ opt_ev_status:
+@@ -2618,7 +2603,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();
+- Item *item= new (YYTHD->mem_root) Item_func_now_local(0);
++ Item *item= new (thd->mem_root) Item_func_now_local(0);
if (item == NULL)
MYSQL_YYABORT;
Lex->event_parse_data->item_starts= item;
-@@ -2316,7 +2302,6 @@ opt_ev_comment:
+@@ -2668,7 +2653,6 @@ opt_ev_comment:
ev_sql_stmt:
{
@@ -303,15 +278,15 @@ index 34ae03b..2a6d9aa 100644
LEX *lex= thd->lex;
Lex_input_stream *lip= YYLIP;
-@@ -2359,7 +2344,6 @@ ev_sql_stmt:
+@@ -2711,7 +2695,6 @@ ev_sql_stmt:
}
ev_sql_stmt_inner
{
- THD *thd= YYTHD;
LEX *lex= thd->lex;
- /* return back to the original memory root ASAP */
-@@ -2418,11 +2402,10 @@ sp_name:
+ sp_finish_parsing(thd);
+@@ -2765,11 +2748,10 @@ sp_name:
$$= new sp_name($1, $3, true);
if ($$ == NULL)
MYSQL_YYABORT;
@@ -323,138 +298,130 @@ index 34ae03b..2a6d9aa 100644
- THD *thd= YYTHD;
LEX *lex= thd->lex;
LEX_STRING db;
- if (check_routine_name(&$1))
-@@ -2492,7 +2475,7 @@ call:
+ if (sp_check_name(&$1))
+@@ -2839,7 +2821,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);
+- sp_add_used_routine(lex, YYTHD, $2, SP_TYPE_PROCEDURE);
++ sp_add_used_routine(lex, thd, $2, SP_TYPE_PROCEDURE);
}
opt_sp_cparam_list {}
;
-@@ -2565,7 +2548,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))
- {
-@@ -2602,7 +2585,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))
- {
-@@ -2665,13 +2648,12 @@ sp_decl:
+@@ -2900,7 +2882,6 @@ sp_init_param:
+ sp_fdparam:
+ ident sp_init_param type_with_opt_collate
{
- LEX *lex= Lex;
-
-- lex->sphead->reset_lex(YYTHD);
-+ lex->sphead->reset_lex(thd);
- lex->spcont->declare_var_boundary($2);
- }
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ sp_head *sp= lex->sphead;
+ sp_pcontext *pctx= lex->get_sp_current_parsing_ctx();
+@@ -2941,7 +2922,6 @@ sp_pdparams:
+ sp_pdparam:
+ sp_opt_inout sp_init_param ident type_with_opt_collate
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ sp_head *sp= lex->sphead;
+ sp_pcontext *pctx= lex->get_sp_current_parsing_ctx();
+@@ -3017,7 +2997,6 @@ sp_decls:
+ sp_decl:
+ DECLARE_SYM sp_decl_idents
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ sp_head *sp= lex->sphead;
+ sp_pcontext *pctx= lex->get_sp_current_parsing_ctx();
+@@ -3028,7 +3007,6 @@ sp_decl:
type_with_opt_collate
sp_opt_default
{
- THD *thd= YYTHD;
- LEX *lex= Lex;
- sp_pcontext *pctx= lex->spcont;
- uint num_vars= pctx->context_var_count();
-@@ -2697,7 +2679,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;
-@@ -2721,7 +2703,7 @@ sp_decl:
- }
+ LEX *lex= thd->lex;
+ sp_head *sp= lex->sphead;
+ sp_pcontext *pctx= lex->get_sp_current_parsing_ctx();
+@@ -3101,7 +3079,6 @@ sp_decl:
+ }
+ | DECLARE_SYM ident CONDITION_SYM FOR_SYM sp_cond
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ sp_pcontext *pctx= lex->get_sp_current_parsing_ctx();
- 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;
-@@ -2736,7 +2718,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;
-@@ -2822,7 +2804,7 @@ sp_decl:
+@@ -3117,7 +3094,6 @@ sp_decl:
+ }
+ | DECLARE_SYM sp_handler_type HANDLER_SYM FOR_SYM
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ sp_head *sp= lex->sphead;
- sp_cursor_stmt:
+@@ -3157,7 +3133,6 @@ sp_decl:
+ }
+ sp_hcond_list sp_proc_stmt
{
-- Lex->sphead->reset_lex(YYTHD);
-+ Lex->sphead->reset_lex(thd);
+- THD *thd= YYTHD;
+ LEX *lex= Lex;
+ sp_head *sp= lex->sphead;
+ sp_pcontext *pctx= lex->get_sp_current_parsing_ctx();
+@@ -3191,7 +3166,6 @@ sp_decl:
}
- select
+ | DECLARE_SYM ident CURSOR_SYM FOR_SYM
{
-@@ -2838,7 +2820,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;
+- THD *thd= YYTHD;
+ LEX *lex= Lex;
+ sp_head *sp= lex->sphead;
+
+@@ -3200,7 +3174,6 @@ sp_decl:
}
- ;
-@@ -2887,7 +2869,7 @@ sp_cond:
+ select
+ {
+- THD *thd= YYTHD;
+ LEX *cursor_lex= Lex;
+ sp_head *sp= cursor_lex->sphead;
+
+@@ -3305,7 +3278,7 @@ sp_cond:
my_error(ER_WRONG_VALUE, MYF(0), "CONDITION", "0");
MYSQL_YYABORT;
}
-- $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t));
-+ $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t));
+- $$= new (YYTHD->mem_root) sp_condition_value($1);
++ $$= new (thd->mem_root) sp_condition_value($1);
if ($$ == NULL)
MYSQL_YYABORT;
- $$->type= sp_cond_type_t::number;
-@@ -2904,7 +2886,7 @@ sqlstate:
+ }
+@@ -3328,7 +3301,7 @@ sqlstate:
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));
+- $$= new (YYTHD->mem_root) sp_condition_value($3.str);
++ $$= new (thd->mem_root) sp_condition_value($3.str);
if ($$ == NULL)
MYSQL_YYABORT;
- $$->type= sp_cond_type_t::state;
-@@ -2934,21 +2916,21 @@ sp_hcond:
+ }
+@@ -3359,19 +3332,19 @@ 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));
+- $$= new (YYTHD->mem_root) sp_condition_value(sp_condition_value::WARNING);
++ $$= new (thd->mem_root) sp_condition_value(sp_condition_value::WARNING);
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));
+- $$= new (YYTHD->mem_root) sp_condition_value(sp_condition_value::NOT_FOUND);
++ $$= new (thd->mem_root) sp_condition_value(sp_condition_value::NOT_FOUND);
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));
+- $$= new (YYTHD->mem_root) sp_condition_value(sp_condition_value::EXCEPTION);
++ $$= new (thd->mem_root) sp_condition_value(sp_condition_value::EXCEPTION);
if ($$ == NULL)
MYSQL_YYABORT;
- $$->type= sp_cond_type_t::exception;
-@@ -2958,7 +2940,6 @@ sp_hcond:
+ }
+@@ -3380,7 +3353,6 @@ sp_hcond:
signal_stmt:
SIGNAL_SYM signal_value opt_set_signal_information
{
@@ -462,7 +429,7 @@ index 34ae03b..2a6d9aa 100644
LEX *lex= thd->lex;
Yacc_state *state= & thd->m_parser_state->m_yacc;
-@@ -3008,7 +2989,7 @@ opt_signal_value:
+@@ -3433,7 +3405,7 @@ opt_signal_value:
opt_set_signal_information:
/* empty */
{
@@ -471,25 +438,25 @@ index 34ae03b..2a6d9aa 100644
}
| SET signal_information_item_list
;
-@@ -3017,7 +2998,7 @@ signal_information_item_list:
+@@ -3442,7 +3414,7 @@ signal_information_item_list:
signal_condition_information_item_name EQ signal_allowed_expr
{
Set_signal_information *info;
- info= & YYTHD->m_parser_state->m_yacc.m_set_signal_info;
-+ info= & thd->m_parser_state->m_yacc.m_set_signal_info;
++ info= &thd->m_parser_state->m_yacc.m_set_signal_info;
int index= (int) $1;
info->clear();
info->m_item[index]= $3;
-@@ -3026,7 +3007,7 @@ signal_information_item_list:
+@@ -3451,7 +3423,7 @@ signal_information_item_list:
signal_condition_information_item_name EQ signal_allowed_expr
{
Set_signal_information *info;
- info= & YYTHD->m_parser_state->m_yacc.m_set_signal_info;
-+ info= & thd->m_parser_state->m_yacc.m_set_signal_info;
++ info= &thd->m_parser_state->m_yacc.m_set_signal_info;
int index= (int) $3;
if (info->m_item[index] != NULL)
{
-@@ -3097,7 +3078,6 @@ signal_condition_information_item_name:
+@@ -3522,7 +3494,6 @@ signal_condition_information_item_name:
resignal_stmt:
RESIGNAL_SYM opt_signal_value opt_set_signal_information
{
@@ -497,149 +464,379 @@ index 34ae03b..2a6d9aa 100644
LEX *lex= thd->lex;
Yacc_state *state= & thd->m_parser_state->m_yacc;
-@@ -3172,7 +3152,6 @@ sp_proc_stmt_if:
+@@ -3543,7 +3514,7 @@ get_diagnostics:
+ info->set_which_da($2);
+
+ Lex->sql_command= SQLCOM_GET_DIAGNOSTICS;
+- Lex->m_sql_cmd= new (YYTHD->mem_root) Sql_cmd_get_diagnostics(info);
++ Lex->m_sql_cmd= new (thd->mem_root) Sql_cmd_get_diagnostics(info);
+
+ if (Lex->m_sql_cmd == NULL)
+ MYSQL_YYABORT;
+@@ -3560,13 +3531,13 @@ which_area:
+ diagnostics_information:
+ statement_information
+ {
+- $$= new (YYTHD->mem_root) Statement_information($1);
++ $$= new (thd->mem_root) Statement_information($1);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | CONDITION_SYM condition_number condition_information
+ {
+- $$= new (YYTHD->mem_root) Condition_information($2, $3);
++ $$= new (thd->mem_root) Condition_information($2, $3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -3575,7 +3546,7 @@ diagnostics_information:
+ statement_information:
+ statement_information_item
+ {
+- $$= new (YYTHD->mem_root) List<Statement_information_item>;
++ $$= new (thd->mem_root) List<Statement_information_item>;
+ if ($$ == NULL || $$->push_back($1))
+ MYSQL_YYABORT;
+ }
+@@ -3590,7 +3561,7 @@ statement_information:
+ statement_information_item:
+ simple_target_specification EQ statement_information_item_name
+ {
+- $$= new (YYTHD->mem_root) Statement_information_item($3, $1);
++ $$= new (thd->mem_root) Statement_information_item($3, $1);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -3598,7 +3569,6 @@ statement_information_item:
+ simple_target_specification:
+ ident
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ Lex_input_stream *lip= YYLIP;
+ sp_head *sp= lex->sphead;
+@@ -3627,7 +3597,7 @@ simple_target_specification:
+ }
+ | '@' ident_or_text
+ {
+- $$= new (YYTHD->mem_root) Item_func_get_user_var($2);
++ $$= new (thd->mem_root) Item_func_get_user_var($2);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -3652,7 +3622,7 @@ condition_number:
+ condition_information:
+ condition_information_item
+ {
+- $$= new (YYTHD->mem_root) List<Condition_information_item>;
++ $$= new (thd->mem_root) List<Condition_information_item>;
+ if ($$ == NULL || $$->push_back($1))
+ MYSQL_YYABORT;
+ }
+@@ -3667,7 +3637,7 @@ condition_information:
+ condition_information_item:
+ simple_target_specification EQ condition_information_item_name
+ {
+- $$= new (YYTHD->mem_root) Condition_information_item($3, $1);
++ $$= new (thd->mem_root) Condition_information_item($3, $1);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -3706,7 +3676,6 @@ sp_decl_idents:
+ {
+ /* NOTE: field definition is filled in sp_decl section. */
+
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ sp_pcontext *pctx= lex->get_sp_current_parsing_ctx();
+
+@@ -3726,7 +3695,6 @@ sp_decl_idents:
+ {
+ /* NOTE: field definition is filled in sp_decl section. */
+
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ sp_pcontext *pctx= lex->get_sp_current_parsing_ctx();
+
+@@ -3782,7 +3750,6 @@ sp_proc_stmt_if:
sp_proc_stmt_statement:
{
- THD *thd= YYTHD;
LEX *lex= thd->lex;
Lex_input_stream *lip= YYLIP;
-
-@@ -3181,7 +3160,6 @@ sp_proc_stmt_statement:
+ sp_head *sp= lex->sphead;
+@@ -3792,7 +3759,6 @@ sp_proc_stmt_statement:
}
statement
{
- THD *thd= YYTHD;
LEX *lex= thd->lex;
- Lex_input_stream *lip= YYLIP;
sp_head *sp= lex->sphead;
-@@ -3228,7 +3206,7 @@ sp_proc_stmt_statement:
+@@ -3839,7 +3805,6 @@ sp_proc_stmt_statement:
sp_proc_stmt_return:
RETURN_SYM
-- { Lex->sphead->reset_lex(YYTHD); }
-+ { Lex->sphead->reset_lex(thd); }
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ sp_head *sp= lex->sphead;
+
+@@ -3849,7 +3814,6 @@ sp_proc_stmt_return:
+ }
expr
{
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ sp_head *sp= lex->sphead;
+
+@@ -3895,7 +3859,6 @@ sp_proc_stmt_return:
+
+ sp_proc_stmt_unlabeled:
+ { /* Unlabeled controls get a secret label. */
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ sp_head *sp= lex->sphead;
+ sp_pcontext *pctx= lex->get_sp_current_parsing_ctx();
+@@ -3918,7 +3881,6 @@ sp_proc_stmt_unlabeled:
+ sp_proc_stmt_leave:
+ LEAVE_SYM label_ident
+ {
+- THD *thd= YYTHD;
LEX *lex= Lex;
-@@ -3250,7 +3228,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;
- }
- ;
-@@ -3477,7 +3455,7 @@ sp_fetch_list:
- ;
+ sp_head *sp = lex->sphead;
+ sp_pcontext *pctx= lex->get_sp_current_parsing_ctx();
+@@ -3977,7 +3939,6 @@ sp_proc_stmt_leave:
+ sp_proc_stmt_iterate:
+ ITERATE_SYM label_ident
+ {
+- THD *thd= YYTHD;
+ LEX *lex= Lex;
+ sp_head *sp= lex->sphead;
+ sp_pcontext *pctx= lex->get_sp_current_parsing_ctx();
+@@ -4027,7 +3988,6 @@ sp_proc_stmt_iterate:
+ sp_proc_stmt_open:
+ OPEN_SYM ident
+ {
+- THD *thd= YYTHD;
+ LEX *lex= Lex;
+ sp_head *sp= lex->sphead;
+ sp_pcontext *pctx= lex->get_sp_current_parsing_ctx();
+@@ -4051,7 +4011,6 @@ sp_proc_stmt_open:
+ sp_proc_stmt_fetch:
+ FETCH_SYM sp_opt_fetch_noise ident INTO
+ {
+- THD *thd= YYTHD;
+ LEX *lex= Lex;
+ sp_head *sp= lex->sphead;
+ sp_pcontext *pctx= lex->get_sp_current_parsing_ctx();
+@@ -4077,7 +4036,6 @@ sp_proc_stmt_fetch:
+ sp_proc_stmt_close:
+ CLOSE_SYM ident
+ {
+- THD *thd= YYTHD;
+ LEX *lex= Lex;
+ sp_head *sp= lex->sphead;
+ sp_pcontext *pctx= lex->get_sp_current_parsing_ctx();
+@@ -4145,7 +4103,6 @@ sp_fetch_list:
sp_if:
-- { Lex->sphead->reset_lex(YYTHD); }
-+ { Lex->sphead->reset_lex(thd); }
- expr THEN_SYM
{
- LEX *lex= Lex;
-@@ -3491,7 +3469,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;
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ sp_head *sp= lex->sphead;
+
+@@ -4154,7 +4111,6 @@ sp_if:
}
- sp_proc_stmts1
-@@ -3530,7 +3508,7 @@ simple_case_stmt:
+ expr
{
+- THD *thd= YYTHD;
LEX *lex= Lex;
- case_stmt_action_case(lex);
-- lex->sphead->reset_lex(YYTHD); /* For expr $3 */
-+ lex->sphead->reset_lex(thd); /* For expr $3 */
+ sp_head *sp= lex->sphead;
+ sp_pcontext *pctx= lex->get_sp_current_parsing_ctx();
+@@ -4190,7 +4146,6 @@ sp_if:
+ }
+ THEN_SYM sp_proc_stmts1
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ sp_head *sp= lex->sphead;
+ sp_pcontext *pctx= lex->get_sp_current_parsing_ctx();
+@@ -4232,7 +4187,6 @@ case_stmt_specification:
+ simple_case_stmt:
+ CASE_SYM
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ sp_head *sp= lex->sphead;
+
+@@ -4243,7 +4197,6 @@ simple_case_stmt:
}
expr
{
-@@ -3539,7 +3517,7 @@ simple_case_stmt:
- MYSQL_YYABORT;
+- THD *thd= YYTHD;
+ LEX *lex= Lex;
+ sp_head *sp= lex->sphead;
- /* For expr $3 */
-- if (lex->sphead->restore_lex(YYTHD))
-+ if (lex->sphead->restore_lex(thd))
- MYSQL_YYABORT;
+@@ -4294,7 +4247,7 @@ simple_case_stmt:
+ searched_case_stmt:
+ CASE_SYM
+ {
+- case_stmt_action_case(YYTHD);
++ case_stmt_action_case(thd);
}
- simple_when_clause_list
-@@ -3581,7 +3559,7 @@ searched_when_clause_list:
+ searched_when_clause_list
+ else_clause_opt
+@@ -4318,7 +4271,6 @@ 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
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ sp_head *sp= lex->sphead;
+
+@@ -4329,7 +4281,6 @@ simple_when_clause:
{
-@@ -3591,7 +3569,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))
+ /* Simple case: <caseval> = <whenval> */
+
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ sp_head *sp= lex->sphead;
+ sp_pcontext *pctx= lex->get_sp_current_parsing_ctx();
+@@ -4368,7 +4319,7 @@ simple_when_clause:
+ THEN_SYM
+ sp_proc_stmts1
+ {
+- if (case_stmt_action_then(YYTHD, Lex))
++ if (case_stmt_action_then(thd, Lex))
MYSQL_YYABORT;
}
- THEN_SYM
-@@ -3606,7 +3584,7 @@ simple_when_clause:
+ ;
+@@ -4376,7 +4327,6 @@ simple_when_clause:
searched_when_clause:
WHEN_SYM
{
-- Lex->sphead->reset_lex(YYTHD); /* For expr $3 */
-+ Lex->sphead->reset_lex(thd); /* For expr $3 */
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ sp_head *sp= lex->sphead;
+
+@@ -4385,7 +4335,6 @@ searched_when_clause:
}
expr
{
-@@ -3614,7 +3592,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;
- }
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ sp_head *sp= lex->sphead;
+ sp_pcontext *pctx= lex->get_sp_current_parsing_ctx();
+@@ -4421,7 +4370,7 @@ searched_when_clause:
THEN_SYM
-@@ -3778,7 +3756,7 @@ sp_unlabeled_control:
+ sp_proc_stmts1
+ {
+- if (case_stmt_action_then(YYTHD, Lex))
++ if (case_stmt_action_then(thd, Lex))
MYSQL_YYABORT;
}
- | WHILE_SYM
-- { Lex->sphead->reset_lex(YYTHD); }
-+ { Lex->sphead->reset_lex(thd); }
- expr DO_SYM
+ ;
+@@ -4429,7 +4378,6 @@ searched_when_clause:
+ else_clause_opt:
+ /* empty */
{
+- THD *thd= YYTHD;
LEX *lex= Lex;
-@@ -3792,7 +3770,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))
+ sp_head *sp= lex->sphead;
+ sp_pcontext *pctx= lex->get_sp_current_parsing_ctx();
+@@ -4459,7 +4407,7 @@ sp_labeled_control:
+ }
+ else
+ {
+- lab= pctx->push_label(YYTHD, $1, sp->instructions());
++ lab= pctx->push_label(thd, $1, sp->instructions());
+ lab->type= sp_label::ITERATION;
+ }
+ }
+@@ -4501,7 +4449,7 @@ sp_labeled_block:
MYSQL_YYABORT;
+ }
+
+- lab= pctx->push_label(YYTHD, $1, sp->instructions());
++ lab= pctx->push_label(thd, $1, sp->instructions());
+ lab->type= sp_label::BEGIN;
+ }
+ sp_block_content sp_opt_label
+@@ -4528,7 +4476,7 @@ sp_unlabeled_block:
+ sp_pcontext *pctx= lex->get_sp_current_parsing_ctx();
+
+ sp_label *lab=
+- pctx->push_label(YYTHD, EMPTY_STR, sp->instructions());
++ pctx->push_label(thd, EMPTY_STR, sp->instructions());
+
+ lab->type= sp_label::BEGIN;
}
- sp_proc_stmts1 END WHILE_SYM
-@@ -3807,7 +3785,7 @@ sp_unlabeled_control:
- lex->sphead->do_cont_backpatch();
+@@ -4544,7 +4492,6 @@ sp_block_content:
+ { /* QQ This is just a dummy for grouping declarations and statements
+ together. No [[NOT] ATOMIC] yet, and we need to figure out how
+ make it coexist with the existing BEGIN COMMIT/ROLLBACK. */
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ sp_pcontext *parent_pctx= lex->get_sp_current_parsing_ctx();
+
+@@ -4557,7 +4504,6 @@ sp_block_content:
+ sp_proc_stmts
+ END
+ {
+- THD *thd= YYTHD;
+ LEX *lex= Lex;
+ sp_head *sp= lex->sphead;
+ sp_pcontext *pctx= lex->get_sp_current_parsing_ctx();
+@@ -4593,7 +4539,6 @@ sp_unlabeled_control:
+ LOOP_SYM
+ sp_proc_stmts1 END LOOP_SYM
+ {
+- THD *thd= YYTHD;
+ LEX *lex= Lex;
+ sp_head *sp= lex->sphead;
+ sp_pcontext *pctx= lex->get_sp_current_parsing_ctx();
+@@ -4608,7 +4553,6 @@ sp_unlabeled_control:
}
- | REPEAT_SYM sp_proc_stmts1 UNTIL_SYM
-- { Lex->sphead->reset_lex(YYTHD); }
-+ { Lex->sphead->reset_lex(thd); }
- expr END REPEAT_SYM
+ | WHILE_SYM
{
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ sp_head *sp= lex->sphead;
+
+@@ -4617,7 +4561,6 @@ sp_unlabeled_control:
+ }
+ expr
+ {
+- THD *thd= YYTHD;
LEX *lex= Lex;
-@@ -3819,7 +3797,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;
-@@ -4242,7 +4220,6 @@ create2:
+ sp_head *sp= lex->sphead;
+ sp_pcontext *pctx= lex->get_sp_current_parsing_ctx();
+@@ -4655,7 +4598,6 @@ sp_unlabeled_control:
+ sp_proc_stmts1
+ END WHILE_SYM
+ {
+- THD *thd= YYTHD;
+ LEX *lex= Lex;
+ sp_head *sp= lex->sphead;
+ sp_pcontext *pctx= lex->get_sp_current_parsing_ctx();
+@@ -4671,7 +4613,6 @@ sp_unlabeled_control:
+ }
+ | REPEAT_SYM sp_proc_stmts1 UNTIL_SYM
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ sp_head *sp= lex->sphead;
+
+@@ -4680,7 +4621,6 @@ sp_unlabeled_control:
+ }
+ expr
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ sp_head *sp= lex->sphead;
+ sp_pcontext *pctx= lex->get_sp_current_parsing_ctx();
+@@ -5133,7 +5073,6 @@ create2:
create3 {}
| LIKE table_ident
{
@@ -647,7 +844,7 @@ index 34ae03b..2a6d9aa 100644
TABLE_LIST *src_table;
LEX *lex= thd->lex;
-@@ -4257,7 +4234,6 @@ create2:
+@@ -5148,7 +5087,6 @@ create2:
}
| '(' LIKE table_ident ')'
{
@@ -655,7 +852,7 @@ index 34ae03b..2a6d9aa 100644
TABLE_LIST *src_table;
LEX *lex= thd->lex;
-@@ -4858,7 +4834,7 @@ part_value_expr_item:
+@@ -5749,7 +5687,7 @@ part_value_expr_item:
my_parse_error(ER(ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR));
MYSQL_YYABORT;
}
@@ -664,57 +861,50 @@ index 34ae03b..2a6d9aa 100644
{
MYSQL_YYABORT;
}
-@@ -5252,19 +5228,19 @@ default_collation:
+@@ -6207,7 +6145,6 @@ 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);
-@@ -5276,7 +5252,7 @@ known_storage_engines:
+- THD *thd= YYTHD;
+ plugin_ref plugin=
+ ha_resolve_by_name(thd, &$1,
+ thd->lex->create_info.options & HA_LEX_CREATE_TMP_TABLE);
+@@ -6233,7 +6170,6 @@ storage_engines:
+ 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
- {
-@@ -5506,7 +5482,7 @@ type:
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ plugin_ref plugin=
+ ha_resolve_by_name(thd, &$1,
+@@ -6469,7 +6405,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)");
-@@ -5520,7 +5496,7 @@ type:
- { $$=MYSQL_TYPE_TIME; }
- | TIMESTAMP
+ /* Reset unsupported positive column width to default value */
+ Lex->length= NULL;
+- push_warning_printf(YYTHD, Sql_condition::WARN_LEVEL_WARN,
++ push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
+ ER_INVALID_YEAR_COLUMN_LENGTH,
+ ER(ER_INVALID_YEAR_COLUMN_LENGTH),
+ length);
+@@ -6483,7 +6419,7 @@ type:
+ { $$= MYSQL_TYPE_TIME2; }
+ | TIMESTAMP type_datetime_precision
{
- if (YYTHD->variables.sql_mode & MODE_MAXDB)
+ if (thd->variables.sql_mode & MODE_MAXDB)
- $$=MYSQL_TYPE_DATETIME;
+ $$=MYSQL_TYPE_DATETIME2;
else
{
-@@ -5652,7 +5628,7 @@ int_type:
+@@ -6491,7 +6427,7 @@ type:
+ Unlike other types TIMESTAMP fields are NOT NULL by default.
+ This behavior is deprecated now.
+ */
+- if (!YYTHD->variables.explicit_defaults_for_timestamp)
++ if (!thd->variables.explicit_defaults_for_timestamp)
+ Lex->type|= NOT_NULL_FLAG;
+
+ $$=MYSQL_TYPE_TIMESTAMP2;
+@@ -6618,7 +6554,7 @@ int_type:
real_type:
REAL
{
@@ -723,25 +913,16 @@ index 34ae03b..2a6d9aa 100644
MYSQL_TYPE_FLOAT : MYSQL_TYPE_DOUBLE;
}
| DOUBLE_SYM
-@@ -5727,7 +5703,7 @@ attribute:
- | DEFAULT now_or_signed_literal { Lex->default_value=$2; }
- | ON UPDATE_SYM NOW_SYM optional_braces
+@@ -6807,7 +6743,7 @@ type_with_opt_collate:
+ now:
+ NOW_SYM func_datetime_precision
{
-- 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;
-@@ -5798,7 +5774,7 @@ type_with_opt_collate:
- now_or_signed_literal:
- NOW_SYM optional_braces
- {
-- $$= new (YYTHD->mem_root) Item_func_now_local();
-+ $$= new (thd->mem_root) Item_func_now_local();
+- $$= new (YYTHD->mem_root) Item_func_now_local($2);
++ $$= new (thd->mem_root) Item_func_now_local($2);
if ($$ == NULL)
MYSQL_YYABORT;
- }
-@@ -6217,7 +6193,6 @@ string_list:
+ };
+@@ -7287,7 +7223,6 @@ string_list:
alter:
ALTER opt_ignore TABLE_SYM table_ident
{
@@ -749,15 +930,15 @@ index 34ae03b..2a6d9aa 100644
LEX *lex= thd->lex;
lex->name.str= 0;
lex->name.length= 0;
-@@ -6243,7 +6218,6 @@ alter:
+@@ -7313,7 +7248,6 @@ alter:
}
alter_commands
{
- THD *thd= YYTHD;
LEX *lex= thd->lex;
- if (!lex->m_stmt)
+ if (!lex->m_sql_cmd)
{
-@@ -6356,7 +6330,7 @@ alter:
+@@ -7426,7 +7360,7 @@ alter:
Event_parse_data.
*/
@@ -766,7 +947,25 @@ index 34ae03b..2a6d9aa 100644
MYSQL_YYABORT;
Lex->event_parse_data->identifier= $4;
-@@ -6471,7 +6445,6 @@ alter_commands:
+@@ -7529,7 +7463,7 @@ alter_commands:
+ /* empty */
+ | DISCARD TABLESPACE
+ {
+- Lex->m_sql_cmd= new (YYTHD->mem_root)
++ Lex->m_sql_cmd= new (thd->mem_root)
+ Sql_cmd_discard_import_tablespace(
+ Sql_cmd_discard_import_tablespace::DISCARD_TABLESPACE);
+ if (Lex->m_sql_cmd == NULL)
+@@ -7537,7 +7471,7 @@ alter_commands:
+ }
+ | IMPORT TABLESPACE
+ {
+- Lex->m_sql_cmd= new (YYTHD->mem_root)
++ Lex->m_sql_cmd= new (thd->mem_root)
+ Sql_cmd_discard_import_tablespace(
+ Sql_cmd_discard_import_tablespace::IMPORT_TABLESPACE);
+ if (Lex->m_sql_cmd == NULL)
+@@ -7571,7 +7505,6 @@ alter_commands:
| OPTIMIZE PARTITION_SYM opt_no_write_to_binlog
all_or_alt_part_name_list
{
@@ -774,7 +973,7 @@ index 34ae03b..2a6d9aa 100644
LEX *lex= thd->lex;
lex->no_write_to_binlog= $3;
lex->check_opt.init();
-@@ -6485,7 +6458,6 @@ alter_commands:
+@@ -7585,7 +7518,6 @@ alter_commands:
| ANALYZE_SYM PARTITION_SYM opt_no_write_to_binlog
all_or_alt_part_name_list
{
@@ -782,15 +981,15 @@ index 34ae03b..2a6d9aa 100644
LEX *lex= thd->lex;
lex->no_write_to_binlog= $3;
lex->check_opt.init();
-@@ -6497,7 +6469,6 @@ alter_commands:
+@@ -7597,7 +7529,6 @@ alter_commands:
}
| CHECK_SYM PARTITION_SYM all_or_alt_part_name_list
{
- THD *thd= YYTHD;
LEX *lex= thd->lex;
lex->check_opt.init();
- DBUG_ASSERT(!lex->m_stmt);
-@@ -6510,7 +6481,6 @@ alter_commands:
+ DBUG_ASSERT(!lex->m_sql_cmd);
+@@ -7610,7 +7541,6 @@ alter_commands:
| REPAIR PARTITION_SYM opt_no_write_to_binlog
all_or_alt_part_name_list
{
@@ -798,15 +997,23 @@ index 34ae03b..2a6d9aa 100644
LEX *lex= thd->lex;
lex->no_write_to_binlog= $3;
lex->check_opt.init();
-@@ -6530,7 +6500,6 @@ alter_commands:
+@@ -7630,7 +7560,6 @@ alter_commands:
}
| TRUNCATE_SYM PARTITION_SYM all_or_alt_part_name_list
{
- THD *thd= YYTHD;
LEX *lex= thd->lex;
lex->check_opt.init();
- DBUG_ASSERT(!lex->m_stmt);
-@@ -6785,7 +6754,6 @@ alter_list_item:
+ DBUG_ASSERT(!lex->m_sql_cmd);
+@@ -7643,7 +7572,6 @@ alter_commands:
+ | EXCHANGE_SYM PARTITION_SYM alt_part_name_item
+ WITH TABLE_SYM table_ident have_partitioning
+ {
+- THD *thd= YYTHD;
+ LEX *lex= thd->lex;
+ size_t dummy;
+ lex->select_lex.db=$6->db.str;
+@@ -7925,7 +7853,6 @@ alter_list_item:
{
if (!$4)
{
@@ -814,39 +1021,39 @@ index 34ae03b..2a6d9aa 100644
$4= thd->variables.collation_database;
}
$5= $5 ? $5 : $4;
-@@ -6980,7 +6948,6 @@ repair:
+@@ -8287,7 +8214,6 @@ repair:
}
table_list opt_mi_repair_type
{
- THD *thd= YYTHD;
LEX* lex= thd->lex;
- DBUG_ASSERT(!lex->m_stmt);
- lex->m_stmt= new (thd->mem_root) Repair_table_statement(lex);
-@@ -7018,7 +6985,6 @@ analyze:
+ DBUG_ASSERT(!lex->m_sql_cmd);
+ lex->m_sql_cmd= new (thd->mem_root) Sql_cmd_repair_table();
+@@ -8325,7 +8251,6 @@ analyze:
}
table_list
{
- THD *thd= YYTHD;
LEX* lex= thd->lex;
- DBUG_ASSERT(!lex->m_stmt);
- lex->m_stmt= new (thd->mem_root) Analyze_table_statement(lex);
-@@ -7053,7 +7019,6 @@ check:
+ DBUG_ASSERT(!lex->m_sql_cmd);
+ lex->m_sql_cmd= new (thd->mem_root) Sql_cmd_analyze_table();
+@@ -8360,7 +8285,6 @@ check:
}
table_list opt_mi_check_type
{
- THD *thd= YYTHD;
LEX* lex= thd->lex;
- DBUG_ASSERT(!lex->m_stmt);
- lex->m_stmt= new (thd->mem_root) Check_table_statement(lex);
-@@ -7094,7 +7059,6 @@ optimize:
+ DBUG_ASSERT(!lex->m_sql_cmd);
+ lex->m_sql_cmd= new (thd->mem_root) Sql_cmd_check_table();
+@@ -8401,7 +8325,6 @@ optimize:
}
table_list
{
- THD *thd= YYTHD;
LEX* lex= thd->lex;
- DBUG_ASSERT(!lex->m_stmt);
- lex->m_stmt= new (thd->mem_root) Optimize_table_statement(lex);
-@@ -7179,7 +7143,7 @@ keycache_list:
+ DBUG_ASSERT(!lex->m_sql_cmd);
+ lex->m_sql_cmd= new (thd->mem_root) Sql_cmd_optimize_table();
+@@ -8486,7 +8409,7 @@ keycache_list:
assign_to_keycache:
table_ident cache_keys_spec
{
@@ -855,16 +1062,16 @@ index 34ae03b..2a6d9aa 100644
MDL_SHARED_READ,
Select->pop_index_hints()))
MYSQL_YYABORT;
-@@ -7189,7 +7153,7 @@ assign_to_keycache:
+@@ -8496,7 +8419,7 @@ assign_to_keycache:
assign_to_keycache_parts:
table_ident adm_partition 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,
++ if (!Select->add_table_to_list(thd, $1, NULL, 0, TL_READ,
MDL_SHARED_READ,
Select->pop_index_hints()))
MYSQL_YYABORT;
-@@ -7225,7 +7189,7 @@ preload_list:
+@@ -8532,7 +8455,7 @@ preload_list:
preload_keys:
table_ident cache_keys_spec opt_ignore_leaves
{
@@ -873,7 +1080,7 @@ index 34ae03b..2a6d9aa 100644
MDL_SHARED_READ,
Select->pop_index_hints()))
MYSQL_YYABORT;
-@@ -7235,7 +7199,7 @@ preload_keys:
+@@ -8542,7 +8465,7 @@ preload_keys:
preload_keys_parts:
table_ident adm_partition cache_keys_spec opt_ignore_leaves
{
@@ -882,7 +1089,7 @@ index 34ae03b..2a6d9aa 100644
MDL_SHARED_READ,
Select->pop_index_hints()))
MYSQL_YYABORT;
-@@ -7252,7 +7216,7 @@ adm_partition:
+@@ -8559,7 +8482,7 @@ adm_partition:
cache_keys_spec:
{
@@ -891,7 +1098,7 @@ index 34ae03b..2a6d9aa 100644
Select->set_index_hint_type(INDEX_HINT_USE,
old_mode ?
INDEX_HINT_MASK_JOIN :
-@@ -7471,7 +7435,6 @@ select_item_list:
+@@ -8774,7 +8697,6 @@ select_item_list:
| select_item
| '*'
{
@@ -899,12 +1106,12 @@ index 34ae03b..2a6d9aa 100644
Item *item= new (thd->mem_root)
Item_field(&thd->lex->current_select->context,
NULL, NULL, "*");
-@@ -7486,14 +7449,12 @@ select_item_list:
+@@ -8789,14 +8711,11 @@ select_item_list:
select_item:
remember_name table_wild remember_end
{
- THD *thd= YYTHD;
-
+-
if (add_item_to_list(thd, $2))
MYSQL_YYABORT;
}
@@ -914,7 +1121,7 @@ index 34ae03b..2a6d9aa 100644
DBUG_ASSERT($1 < $3);
if (add_item_to_list(thd, $2))
-@@ -7589,7 +7550,7 @@ expr:
+@@ -8891,7 +8810,7 @@ expr:
else
{
/* X OR Y */
@@ -923,16 +1130,16 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
}
-@@ -7597,7 +7558,7 @@ expr:
+@@ -8899,7 +8818,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);
+- $$ = new (YYTHD->mem_root) Item_func_xor($1, $3);
++ $$ = new (thd->mem_root) Item_func_xor($1, $3);
if ($$ == NULL)
MYSQL_YYABORT;
}
-@@ -7639,50 +7600,50 @@ expr:
+@@ -8941,50 +8860,50 @@ expr:
else
{
/* X AND Y */
@@ -991,7 +1198,7 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
}
-@@ -7692,19 +7653,19 @@ expr:
+@@ -8994,19 +8913,19 @@ expr:
bool_pri:
bool_pri IS NULL_SYM %prec IS
{
@@ -1014,7 +1221,7 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
}
-@@ -7726,13 +7687,12 @@ bool_pri:
+@@ -9028,13 +8947,12 @@ bool_pri:
predicate:
bit_expr IN_SYM '(' subselect ')'
{
@@ -1029,7 +1236,7 @@ index 34ae03b..2a6d9aa 100644
Item *item= new (thd->mem_root) Item_in_subselect($1, $5);
if (item == NULL)
MYSQL_YYABORT;
-@@ -7742,7 +7702,7 @@ predicate:
+@@ -9044,7 +8962,7 @@ predicate:
}
| bit_expr IN_SYM '(' expr ')'
{
@@ -1038,7 +1245,7 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
}
-@@ -7750,13 +7710,13 @@ predicate:
+@@ -9052,13 +8970,13 @@ predicate:
{
$6->push_front($4);
$6->push_front($1);
@@ -1054,7 +1261,7 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
}
-@@ -7764,7 +7724,7 @@ predicate:
+@@ -9066,7 +8984,7 @@ predicate:
{
$7->push_front($5);
$7->push_front($1);
@@ -1063,7 +1270,7 @@ index 34ae03b..2a6d9aa 100644
if (item == NULL)
MYSQL_YYABORT;
item->negate();
-@@ -7772,14 +7732,14 @@ predicate:
+@@ -9074,14 +8992,14 @@ predicate:
}
| bit_expr BETWEEN_SYM bit_expr AND_SYM predicate
{
@@ -1080,7 +1287,7 @@ index 34ae03b..2a6d9aa 100644
if (item == NULL)
MYSQL_YYABORT;
item->negate();
-@@ -7787,42 +7747,42 @@ predicate:
+@@ -9089,42 +9007,42 @@ predicate:
}
| bit_expr SOUNDS_SYM LIKE bit_expr
{
@@ -1132,7 +1339,7 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
}
-@@ -7832,85 +7792,85 @@ predicate:
+@@ -9134,85 +9052,85 @@ predicate:
bit_expr:
bit_expr '|' bit_expr %prec '|'
{
@@ -1232,7 +1439,7 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
}
-@@ -7959,7 +7919,6 @@ simple_expr:
+@@ -9261,7 +9179,6 @@ simple_expr:
| function_call_conflict
| simple_expr COLLATE_SYM ident_or_text %prec NEG
{
@@ -1240,7 +1447,7 @@ index 34ae03b..2a6d9aa 100644
Item *i1= new (thd->mem_root) Item_string($3.str,
$3.length,
thd->charset());
-@@ -7975,7 +7934,7 @@ simple_expr:
+@@ -9277,7 +9194,7 @@ simple_expr:
| sum_expr
| simple_expr OR_OR_SYM simple_expr
{
@@ -1249,7 +1456,7 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
}
-@@ -7985,25 +7944,25 @@ simple_expr:
+@@ -9287,25 +9204,25 @@ simple_expr:
}
| '-' simple_expr %prec NEG
{
@@ -1279,7 +1486,7 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
}
-@@ -8012,20 +7971,20 @@ simple_expr:
+@@ -9314,20 +9231,20 @@ simple_expr:
| '(' expr ',' expr_list ')'
{
$4->push_front($2);
@@ -1303,7 +1510,16 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
}
-@@ -8034,7 +7993,7 @@ simple_expr:
+@@ -9364,7 +9281,7 @@ simple_expr:
+ type= MYSQL_TYPE_DATETIME;
+ }
+ if (type != MYSQL_TYPE_STRING)
+- $$= create_temporal_literal(YYTHD,
++ $$= create_temporal_literal(thd,
+ str.ptr(), str.length(),
+ system_charset_info,
+ type, false);
+@@ -9375,7 +9292,7 @@ simple_expr:
| MATCH ident_list_arg AGAINST '(' bit_expr fulltext_options ')'
{
$2->push_front($5);
@@ -1312,7 +1528,7 @@ index 34ae03b..2a6d9aa 100644
if (i1 == NULL)
MYSQL_YYABORT;
Select->add_ftfunc_to_list(i1);
-@@ -8042,7 +8001,7 @@ simple_expr:
+@@ -9383,7 +9300,7 @@ simple_expr:
}
| BINARY simple_expr %prec NEG
{
@@ -1321,7 +1537,7 @@ index 34ae03b..2a6d9aa 100644
&my_charset_bin);
if ($$ == NULL)
MYSQL_YYABORT;
-@@ -8050,27 +8009,27 @@ simple_expr:
+@@ -9391,27 +9308,27 @@ simple_expr:
| CAST_SYM '(' expr AS cast_type ')'
{
LEX *lex= Lex;
@@ -1353,8 +1569,8 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
}
-@@ -8083,14 +8042,14 @@ simple_expr:
- my_error(ER_WRONG_COLUMN_NAME, MYF(0), il->my_name()->str);
+@@ -9424,14 +9341,14 @@ simple_expr:
+ my_error(ER_WRONG_COLUMN_NAME, MYF(0), il->m_name.ptr());
MYSQL_YYABORT;
}
- $$= new (YYTHD->mem_root) Item_default_value(Lex->current_context(),
@@ -1370,7 +1586,7 @@ index 34ae03b..2a6d9aa 100644
$3);
if ($$ == NULL)
MYSQL_YYABORT;
-@@ -8098,7 +8057,7 @@ simple_expr:
+@@ -9439,7 +9356,7 @@ simple_expr:
| INTERVAL_SYM expr interval '+' expr %prec INTERVAL_SYM
/* we cannot put interval before - */
{
@@ -1379,7 +1595,7 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
}
-@@ -8113,19 +8072,19 @@ simple_expr:
+@@ -9454,19 +9371,19 @@ simple_expr:
function_call_keyword:
CHAR_SYM '(' expr_list ')'
{
@@ -1402,7 +1618,7 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION);
-@@ -8133,31 +8092,30 @@ function_call_keyword:
+@@ -9474,31 +9391,30 @@ function_call_keyword:
}
| DATE_SYM '(' expr ')'
{
@@ -1438,7 +1654,7 @@ index 34ae03b..2a6d9aa 100644
List<Item> *list= new (thd->mem_root) List<Item>;
if (list == NULL)
MYSQL_YYABORT;
-@@ -8172,7 +8130,6 @@ function_call_keyword:
+@@ -9513,7 +9429,6 @@ function_call_keyword:
}
| INTERVAL_SYM '(' expr ',' expr ',' expr_list ')' %prec INTERVAL_SYM
{
@@ -1446,7 +1662,7 @@ index 34ae03b..2a6d9aa 100644
$7->push_front($5);
$7->push_front($3);
Item_row *item= new (thd->mem_root) Item_row(*$7);
-@@ -8184,103 +8141,103 @@ function_call_keyword:
+@@ -9525,103 +9440,103 @@ function_call_keyword:
}
| LEFT '(' expr ',' expr ')'
{
@@ -1567,7 +1783,7 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION);
-@@ -8288,7 +8245,7 @@ function_call_keyword:
+@@ -9629,7 +9544,7 @@ function_call_keyword:
}
| YEAR_SYM '(' expr ')'
{
@@ -1576,7 +1792,7 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
}
-@@ -8309,34 +8266,34 @@ function_call_keyword:
+@@ -9650,27 +9565,27 @@ function_call_keyword:
function_call_nonkeyword:
ADDDATE_SYM '(' expr ',' expr ')'
{
@@ -1601,22 +1817,14 @@ index 34ae03b..2a6d9aa 100644
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 ')'
+ | CURTIME func_datetime_precision
{
-- $$= new (YYTHD->mem_root) Item_func_curtime_local($3);
-+ $$= new (thd->mem_root) Item_func_curtime_local($3);
+- $$= new (YYTHD->mem_root) Item_func_curtime_local($2);
++ $$= new (thd->mem_root) Item_func_curtime_local($2);
if ($$ == NULL)
MYSQL_YYABORT;
Lex->safe_to_cache_query=0;
-@@ -8344,83 +8301,83 @@ function_call_nonkeyword:
+@@ -9678,26 +9593,26 @@ function_call_nonkeyword:
| DATE_ADD_INTERVAL '(' expr ',' INTERVAL_SYM expr interval ')'
%prec INTERVAL_SYM
{
@@ -1647,21 +1855,7 @@ index 34ae03b..2a6d9aa 100644
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;
+@@ -9708,44 +9623,44 @@ function_call_nonkeyword:
}
| POSITION_SYM '(' bit_expr IN_SYM expr ')'
{
@@ -1713,27 +1907,15 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
}
-@@ -8435,9 +8392,9 @@ function_call_nonkeyword:
+@@ -9760,42 +9675,42 @@ function_call_nonkeyword:
*/
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION);
if (global_system_variables.sysdate_is_now == 0)
-- $$= new (YYTHD->mem_root) Item_func_sysdate_local();
-+ $$= new (thd->mem_root) Item_func_sysdate_local();
+- $$= new (YYTHD->mem_root) Item_func_sysdate_local($2);
++ $$= new (thd->mem_root) Item_func_sysdate_local($2);
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;
-@@ -8445,42 +8402,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);
+- $$= new (YYTHD->mem_root) Item_func_now_local($2);
++ $$= new (thd->mem_root) Item_func_now_local($2);
if ($$ == NULL)
MYSQL_YYABORT;
Lex->safe_to_cache_query=0;
@@ -1760,22 +1942,22 @@ index 34ae03b..2a6d9aa 100644
MYSQL_YYABORT;
Lex->safe_to_cache_query=0;
}
- | UTC_TIME_SYM optional_braces
+ | UTC_TIME_SYM func_datetime_precision
{
-- $$= new (YYTHD->mem_root) Item_func_curtime_utc();
-+ $$= new (thd->mem_root) Item_func_curtime_utc();
+- $$= new (YYTHD->mem_root) Item_func_curtime_utc($2);
++ $$= new (thd->mem_root) Item_func_curtime_utc($2);
if ($$ == NULL)
MYSQL_YYABORT;
Lex->safe_to_cache_query=0;
}
- | UTC_TIMESTAMP_SYM optional_braces
+ | UTC_TIMESTAMP_SYM func_datetime_precision
{
-- $$= new (YYTHD->mem_root) Item_func_now_utc();
-+ $$= new (thd->mem_root) Item_func_now_utc();
+- $$= new (YYTHD->mem_root) Item_func_now_utc($2);
++ $$= new (thd->mem_root) Item_func_now_utc($2);
if ($$ == NULL)
MYSQL_YYABORT;
Lex->safe_to_cache_query=0;
-@@ -8495,62 +8452,61 @@ function_call_nonkeyword:
+@@ -9810,75 +9725,74 @@ function_call_nonkeyword:
function_call_conflict:
ASCII_SYM '(' expr ')'
{
@@ -1820,6 +2002,20 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
}
+ | FORMAT_SYM '(' expr ',' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_format($3, $5);
++ $$= new (thd->mem_root) Item_func_format($3, $5);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | FORMAT_SYM '(' expr ',' expr ',' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_format($3, $5, $7);
++ $$= new (thd->mem_root) Item_func_format($3, $5, $7);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
| MICROSECOND_SYM '(' expr ')'
{
- $$= new (YYTHD->mem_root) Item_func_microsecond($3);
@@ -1838,6 +2034,7 @@ index 34ae03b..2a6d9aa 100644
{
- $$= new (YYTHD->mem_root) Item_func_old_password($3);
+ $$= new (thd->mem_root) Item_func_old_password($3);
+ Lex->contains_plaintext_password= true;
if ($$ == NULL)
MYSQL_YYABORT;
}
@@ -1845,9 +2042,9 @@ index 34ae03b..2a6d9aa 100644
{
- THD *thd= YYTHD;
Item* i1;
- if (thd->variables.old_passwords)
- i1= new (thd->mem_root) Item_func_old_password($3);
-@@ -8562,31 +8518,30 @@ function_call_conflict:
+ Lex->contains_plaintext_password= true;
+ if (thd->variables.old_passwords == 1)
+@@ -9891,31 +9805,31 @@ function_call_conflict:
}
| QUARTER_SYM '(' expr ')'
{
@@ -1870,6 +2067,22 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
}
+ | REVERSE_SYM '(' expr ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_reverse($3);
++ $$= new (thd->mem_root) Item_func_reverse($3);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | ROW_COUNT_SYM '(' ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_row_count();
++ $$= new (thd->mem_root) Item_func_row_count();
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION);
+@@ -9923,13 +9837,12 @@ function_call_conflict:
+ }
| TRUNCATE_SYM '(' expr ',' expr ')'
{
- $$= new (YYTHD->mem_root) Item_func_round($3,$5,1);
@@ -1880,10 +2093,10 @@ index 34ae03b..2a6d9aa 100644
| WEEK_SYM '(' expr ')'
{
- THD *thd= YYTHD;
- Item *i1= new (thd->mem_root) Item_int((char*) "0",
+ Item *i1= new (thd->mem_root) Item_int(NAME_STRING("0"),
thd->variables.default_week_format,
1);
-@@ -8598,7 +8553,7 @@ function_call_conflict:
+@@ -9941,19 +9854,19 @@ function_call_conflict:
}
| WEEK_SYM '(' expr ',' expr ')'
{
@@ -1892,13 +2105,48 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
}
-@@ -8620,52 +8575,52 @@ function_call_conflict:
+ | WEIGHT_STRING_SYM '(' expr opt_ws_levels ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_weight_string($3, 0, 0, $4);
++ $$= new (thd->mem_root) Item_func_weight_string($3, 0, 0, $4);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | WEIGHT_STRING_SYM '(' expr AS CHAR_SYM ws_nweights opt_ws_levels ')'
+ {
+- $$= new (YYTHD->mem_root)
++ $$= new (thd->mem_root)
+ Item_func_weight_string($3, 0, $6,
+ $7 | MY_STRXFRM_PAD_WITH_SPACE);
+ if ($$ == NULL)
+@@ -9961,17 +9874,17 @@ function_call_conflict:
+ }
+ | WEIGHT_STRING_SYM '(' expr AS BINARY ws_nweights ')'
+ {
+- Item *item= new (YYTHD->mem_root) Item_char_typecast($3, $6, &my_charset_bin);
++ Item *item= new (thd->mem_root) Item_char_typecast($3, $6, &my_charset_bin);
+ if (item == NULL)
+ MYSQL_YYABORT;
+- $$= new (YYTHD->mem_root)
++ $$= new (thd->mem_root)
+ Item_func_weight_string(item, 0, $6, MY_STRXFRM_PAD_WITH_SPACE);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+ | WEIGHT_STRING_SYM '(' expr ',' ulong_num ',' ulong_num ',' ulong_num ')'
+ {
+- $$= new (YYTHD->mem_root) Item_func_weight_string($3, $5, $7, $9);
++ $$= new (thd->mem_root) Item_func_weight_string($3, $5, $7, $9);
+ if ($$ == NULL)
+ MYSQL_YYABORT;
+ }
+@@ -9993,52 +9906,52 @@ function_call_conflict:
geometry_function:
CONTAINS_SYM '(' expr ',' expr ')'
{
- $$= GEOM_NEW(YYTHD,
+ $$= GEOM_NEW(thd,
- Item_func_spatial_rel($3, $5,
+ Item_func_spatial_mbr_rel($3, $5,
Item_func::SP_CONTAINS_FUNC));
}
| GEOMETRYCOLLECTION '(' expr_list ')'
@@ -1953,7 +2201,7 @@ index 34ae03b..2a6d9aa 100644
Item_func_spatial_collection(* $3,
Geometry::wkb_polygon,
Geometry::wkb_linestring));
-@@ -8703,7 +8658,6 @@ function_call_generic:
+@@ -10076,7 +9989,6 @@ function_call_generic:
}
opt_udf_expr_list ')'
{
@@ -1961,7 +2209,7 @@ index 34ae03b..2a6d9aa 100644
Create_func *builder;
Item *item= NULL;
-@@ -8757,7 +8711,6 @@ function_call_generic:
+@@ -10130,7 +10042,6 @@ function_call_generic:
}
| ident '.' ident '(' opt_expr_list ')'
{
@@ -1969,7 +2217,7 @@ index 34ae03b..2a6d9aa 100644
Create_qfunc *builder;
Item *item= NULL;
-@@ -8821,7 +8774,7 @@ opt_udf_expr_list:
+@@ -10192,7 +10103,7 @@ opt_udf_expr_list:
udf_expr_list:
udf_expr
{
@@ -1978,16 +2226,16 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
$$->push_back($1);
-@@ -8854,7 +8807,7 @@ udf_expr:
- remember_name we may get quoted or escaped names.
+@@ -10225,7 +10136,7 @@ udf_expr:
*/
- 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());
+ else if ($2->type() != Item::FIELD_ITEM &&
+ $2->type() != Item::REF_ITEM /* For HAVING */ )
+- $2->item_name.copy($1, (uint) ($3 - $1), YYTHD->charset());
++ $2->item_name.copy($1, (uint) ($3 - $1), thd->charset());
$$= $2;
}
;
-@@ -8862,46 +8815,46 @@ udf_expr:
+@@ -10233,46 +10144,46 @@ udf_expr:
sum_expr:
AVG_SYM '(' in_sum_expr ')'
{
@@ -2042,7 +2290,7 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
}
-@@ -8911,13 +8864,13 @@ sum_expr:
+@@ -10282,13 +10193,13 @@ sum_expr:
{ Select->in_sum_expr--; }
')'
{
@@ -2058,7 +2306,7 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
}
-@@ -8928,55 +8881,55 @@ sum_expr:
+@@ -10299,55 +10210,55 @@ sum_expr:
*/
| MIN_SYM '(' DISTINCT in_sum_expr ')'
{
@@ -2123,7 +2371,7 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
}
-@@ -8988,7 +8941,7 @@ sum_expr:
+@@ -10359,7 +10270,7 @@ sum_expr:
{
SELECT_LEX *sel= Select;
sel->in_sum_expr--;
@@ -2132,16 +2380,16 @@ index 34ae03b..2a6d9aa 100644
Item_func_group_concat(Lex->current_context(), $3, $5,
sel->gorder_list, $7);
if ($$ == NULL)
-@@ -9017,7 +8970,7 @@ variable_aux:
- ident_or_text SET_VAR expr
+@@ -10389,7 +10300,7 @@ variable_aux:
{
Item_func_set_user_var *item;
-- $$= item= new (YYTHD->mem_root) Item_func_set_user_var($1, $3, false);
-+ $$= item= new (thd->mem_root) Item_func_set_user_var($1, $3, false);
+ $$= item=
+- new (YYTHD->mem_root) Item_func_set_user_var($1, $3, false);
++ new (thd->mem_root) Item_func_set_user_var($1, $3, false);
if ($$ == NULL)
MYSQL_YYABORT;
LEX *lex= Lex;
-@@ -9026,7 +8979,7 @@ variable_aux:
+@@ -10398,7 +10309,7 @@ variable_aux:
}
| ident_or_text
{
@@ -2150,7 +2398,7 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
LEX *lex= Lex;
-@@ -9040,7 +8993,7 @@ variable_aux:
+@@ -10412,7 +10323,7 @@ variable_aux:
my_parse_error(ER(ER_SYNTAX_ERROR));
MYSQL_YYABORT;
}
@@ -2159,7 +2407,7 @@ index 34ae03b..2a6d9aa 100644
MYSQL_YYABORT;
if (!((Item_func_get_system_var*) $$)->is_written_to_binlog())
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_VARIABLE);
-@@ -9055,7 +9008,7 @@ opt_distinct:
+@@ -10427,7 +10338,7 @@ opt_distinct:
opt_gconcat_separator:
/* empty */
{
@@ -2168,7 +2416,7 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
}
-@@ -9082,9 +9035,9 @@ opt_gorder_clause:
+@@ -10454,9 +10365,9 @@ opt_gorder_clause:
gorder_list:
gorder_list ',' order_ident order_dir
@@ -2180,7 +2428,7 @@ index 34ae03b..2a6d9aa 100644
;
in_sum_expr:
-@@ -9137,7 +9090,7 @@ opt_expr_list:
+@@ -10509,7 +10420,7 @@ opt_expr_list:
expr_list:
expr
{
@@ -2189,7 +2437,7 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
$$->push_back($1);
-@@ -9157,7 +9110,7 @@ ident_list_arg:
+@@ -10529,7 +10440,7 @@ ident_list_arg:
ident_list:
simple_ident
{
@@ -2198,7 +2446,7 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
$$->push_back($1);
-@@ -9257,7 +9210,7 @@ join_table:
+@@ -10629,7 +10540,7 @@ join_table:
{
MYSQL_YYABORT_UNLESS($1 && $3);
/* Change the current name resolution context to a local context. */
@@ -2207,7 +2455,7 @@ index 34ae03b..2a6d9aa 100644
MYSQL_YYABORT;
Select->parsing_place= IN_ON;
}
-@@ -9272,7 +9225,7 @@ join_table:
+@@ -10644,7 +10555,7 @@ join_table:
{
MYSQL_YYABORT_UNLESS($1 && $3);
/* Change the current name resolution context to a local context. */
@@ -2216,7 +2464,7 @@ index 34ae03b..2a6d9aa 100644
MYSQL_YYABORT;
Select->parsing_place= IN_ON;
}
-@@ -9302,7 +9255,7 @@ join_table:
+@@ -10674,7 +10585,7 @@ join_table:
{
MYSQL_YYABORT_UNLESS($1 && $5);
/* Change the current name resolution context to a local context. */
@@ -2225,7 +2473,7 @@ index 34ae03b..2a6d9aa 100644
MYSQL_YYABORT;
Select->parsing_place= IN_ON;
}
-@@ -9338,7 +9291,7 @@ join_table:
+@@ -10710,7 +10621,7 @@ join_table:
{
MYSQL_YYABORT_UNLESS($1 && $5);
/* Change the current name resolution context to a local context. */
@@ -2234,16 +2482,16 @@ index 34ae03b..2a6d9aa 100644
MYSQL_YYABORT;
Select->parsing_place= IN_ON;
}
-@@ -9393,7 +9346,7 @@ table_factor:
+@@ -10781,7 +10692,7 @@ table_factor:
}
- table_ident opt_table_alias opt_key_definition
+ table_ident opt_use_partition opt_table_alias opt_key_definition
{
-- if (!($$= Select->add_table_to_list(YYTHD, $2, $3,
-+ if (!($$= Select->add_table_to_list(thd, $2, $3,
+- if (!($$= Select->add_table_to_list(YYTHD, $2, $4,
++ if (!($$= Select->add_table_to_list(thd, $2, $4,
Select->get_table_join_options(),
YYPS->m_lock_type,
YYPS->m_mdl_type,
-@@ -9700,7 +9653,7 @@ index_hints_list:
+@@ -11090,7 +11001,7 @@ index_hints_list:
opt_index_hints_list:
/* empty */
@@ -2252,7 +2500,7 @@ index 34ae03b..2a6d9aa 100644
;
opt_key_definition:
-@@ -9709,15 +9662,15 @@ opt_key_definition:
+@@ -11099,15 +11010,15 @@ opt_key_definition:
;
opt_key_usage_list:
@@ -2271,7 +2519,7 @@ index 34ae03b..2a6d9aa 100644
;
key_usage_list:
-@@ -9730,7 +9683,7 @@ using_list:
+@@ -11120,7 +11031,7 @@ using_list:
{
if (!($$= new List<String>))
MYSQL_YYABORT;
@@ -2280,7 +2528,7 @@ index 34ae03b..2a6d9aa 100644
$1.length,
system_charset_info);
if (s == NULL)
-@@ -9739,7 +9692,7 @@ using_list:
+@@ -11129,7 +11040,7 @@ using_list:
}
| using_list ',' ident
{
@@ -2289,7 +2537,7 @@ index 34ae03b..2a6d9aa 100644
$3.length,
system_charset_info);
if (s == NULL)
-@@ -9844,7 +9797,6 @@ opt_escape:
+@@ -11234,7 +11145,6 @@ opt_escape:
}
| /* empty */
{
@@ -2297,7 +2545,7 @@ index 34ae03b..2a6d9aa 100644
Lex->escape_used= FALSE;
$$= ((thd->variables.sql_mode & MODE_NO_BACKSLASH_ESCAPES) ?
new (thd->mem_root) Item_string("", 0, &my_charset_latin1) :
-@@ -9865,9 +9817,9 @@ group_clause:
+@@ -11255,9 +11165,9 @@ group_clause:
group_list:
group_list ',' order_ident order_dir
@@ -2309,7 +2557,7 @@ index 34ae03b..2a6d9aa 100644
;
olap_opt:
-@@ -9928,7 +9880,6 @@ alter_order_list:
+@@ -11324,7 +11234,6 @@ alter_order_list:
alter_order_item:
simple_ident_nospvar order_dir
{
@@ -2317,7 +2565,7 @@ index 34ae03b..2a6d9aa 100644
bool ascending= ($2 == 1) ? true : false;
if (add_order_to_list(thd, $1, ascending))
MYSQL_YYABORT;
-@@ -9981,9 +9932,9 @@ order_clause:
+@@ -11377,9 +11286,9 @@ order_clause:
order_list:
order_list ',' order_ident order_dir
@@ -2329,15 +2577,15 @@ index 34ae03b..2a6d9aa 100644
;
order_dir:
-@@ -10047,7 +9998,6 @@ limit_option:
+@@ -11442,7 +11351,6 @@ limit_options:
+ limit_option:
ident
{
- Item_splocal *splocal;
- THD *thd= YYTHD;
- LEX *lex= thd->lex;
- Lex_input_stream *lip= & thd->m_parser_state->m_lip;
- sp_variable_t *spv;
-@@ -10084,19 +10034,19 @@ limit_option:
+ LEX *lex= Lex;
+ Lex_input_stream *lip= YYLIP;
+ sp_head *sp= lex->sphead;
+@@ -11473,19 +11381,19 @@ limit_option:
}
| ULONGLONG_NUM
{
@@ -2360,32 +2608,15 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
}
-@@ -10183,7 +10133,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)
-@@ -10208,7 +10158,6 @@ procedure_list2:
- procedure_item:
- remember_name expr remember_end
- {
-- THD *thd= YYTHD;
-
- if (add_proc_to_list(thd, $2))
- MYSQL_YYABORT;
-@@ -10383,7 +10332,6 @@ drop:
+@@ -11787,7 +11695,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))
-@@ -10406,7 +10354,6 @@ drop:
+ if ($4.str &&
+@@ -11808,7 +11715,6 @@ drop:
}
| DROP FUNCTION_SYM if_exists ident
{
@@ -2393,7 +2624,7 @@ index 34ae03b..2a6d9aa 100644
LEX *lex= thd->lex;
LEX_STRING db= {0, 0};
sp_name *spname;
-@@ -10491,7 +10438,7 @@ table_list:
+@@ -11893,7 +11799,7 @@ table_list:
table_name:
table_ident
{
@@ -2402,7 +2633,16 @@ index 34ae03b..2a6d9aa 100644
TL_OPTION_UPDATING,
YYPS->m_lock_type,
YYPS->m_mdl_type))
-@@ -10507,7 +10454,7 @@ table_alias_ref_list:
+@@ -11904,7 +11810,7 @@ table_name:
+ table_name_with_opt_use_partition:
+ table_ident opt_use_partition
+ {
+- if (!Select->add_table_to_list(YYTHD, $1, NULL,
++ if (!Select->add_table_to_list(thd, $1, NULL,
+ TL_OPTION_UPDATING,
+ YYPS->m_lock_type,
+ YYPS->m_mdl_type,
+@@ -11922,7 +11828,7 @@ table_alias_ref_list:
table_alias_ref:
table_ident_opt_wild
{
@@ -2411,7 +2651,7 @@ index 34ae03b..2a6d9aa 100644
TL_OPTION_UPDATING | TL_OPTION_ALIAS,
YYPS->m_lock_type,
YYPS->m_mdl_type))
-@@ -10581,7 +10528,7 @@ insert_lock_option:
+@@ -12011,12 +11917,12 @@ insert_lock_option:
| DELAYED_SYM
{
Lex->keyword_delayed_begin_offset= (uint)(YYLIP->get_tok_start() -
@@ -2420,7 +2660,13 @@ index 34ae03b..2a6d9aa 100644
Lex->keyword_delayed_end_offset= Lex->keyword_delayed_begin_offset +
YYLIP->yyLength() + 1;
$$= TL_WRITE_DELAYED;
-@@ -10594,7 +10541,7 @@ replace_lock_option:
+
+- push_warning_printf(YYTHD, Sql_condition::WARN_LEVEL_WARN,
++ push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
+ ER_WARN_DEPRECATED_SYNTAX,
+ ER(ER_WARN_DEPRECATED_SYNTAX),
+ "INSERT DELAYED", "INSERT");
+@@ -12029,12 +11935,12 @@ replace_lock_option:
| DELAYED_SYM
{
Lex->keyword_delayed_begin_offset= (uint)(YYLIP->get_tok_start() -
@@ -2429,7 +2675,13 @@ index 34ae03b..2a6d9aa 100644
Lex->keyword_delayed_end_offset= Lex->keyword_delayed_begin_offset +
YYLIP->yyLength() + 1;
$$= TL_WRITE_DELAYED;
-@@ -10711,7 +10658,7 @@ expr_or_default:
+
+- push_warning_printf(YYTHD, Sql_condition::WARN_LEVEL_WARN,
++ push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
+ ER_WARN_DEPRECATED_SYNTAX,
+ ER(ER_WARN_DEPRECATED_SYNTAX),
+ "REPLACE DELAYED", "REPLACE");
+@@ -12151,7 +12057,7 @@ expr_or_default:
expr { $$= $1;}
| DEFAULT
{
@@ -2438,7 +2690,7 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
}
-@@ -10764,7 +10711,7 @@ update_list:
+@@ -12204,7 +12110,7 @@ update_list:
update_elem:
simple_ident_nospvar equal expr_or_default
{
@@ -2447,16 +2699,16 @@ index 34ae03b..2a6d9aa 100644
MYSQL_YYABORT;
}
;
-@@ -10809,7 +10756,7 @@ delete:
+@@ -12249,7 +12155,7 @@ delete:
single_multi:
- FROM table_ident
+ FROM table_ident opt_use_partition
{
- if (!Select->add_table_to_list(YYTHD, $2, NULL, TL_OPTION_UPDATING,
+ if (!Select->add_table_to_list(thd, $2, NULL, TL_OPTION_UPDATING,
YYPS->m_lock_type,
- YYPS->m_mdl_type))
- MYSQL_YYABORT;
-@@ -10853,7 +10800,7 @@ table_wild_one:
+ YYPS->m_mdl_type,
+ NULL,
+@@ -12295,7 +12201,7 @@ table_wild_one:
Table_ident *ti= new Table_ident($1);
if (ti == NULL)
MYSQL_YYABORT;
@@ -2465,7 +2717,7 @@ index 34ae03b..2a6d9aa 100644
ti,
NULL,
TL_OPTION_UPDATING | TL_OPTION_ALIAS,
-@@ -10863,10 +10810,10 @@ table_wild_one:
+@@ -12305,10 +12211,10 @@ table_wild_one:
}
| ident '.' ident opt_wild
{
@@ -2478,15 +2730,15 @@ index 34ae03b..2a6d9aa 100644
ti,
NULL,
TL_OPTION_UPDATING | TL_OPTION_ALIAS,
-@@ -10906,7 +10853,6 @@ truncate:
+@@ -12348,7 +12254,6 @@ truncate:
}
table_name
{
- THD *thd= YYTHD;
LEX* lex= thd->lex;
- DBUG_ASSERT(!lex->m_stmt);
- lex->m_stmt= new (thd->mem_root) Truncate_statement(lex);
-@@ -11000,7 +10946,7 @@ show_param:
+ DBUG_ASSERT(!lex->m_sql_cmd);
+ lex->m_sql_cmd= new (thd->mem_root) Sql_cmd_truncate_table();
+@@ -12442,7 +12347,7 @@ show_param:
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_DATABASES;
@@ -2495,7 +2747,7 @@ index 34ae03b..2a6d9aa 100644
MYSQL_YYABORT;
}
| opt_full TABLES opt_db wild_and_where
-@@ -11008,7 +10954,7 @@ show_param:
+@@ -12450,7 +12355,7 @@ show_param:
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_TABLES;
lex->select_lex.db= $3;
@@ -2503,17 +2755,8 @@ index 34ae03b..2a6d9aa 100644
+ if (prepare_schema_table(thd, lex, 0, SCH_TABLE_NAMES))
MYSQL_YYABORT;
}
- | opt_var_type TEMPORARY TABLES opt_db
-@@ -11017,7 +10963,7 @@ show_param:
- lex->sql_command= SQLCOM_SHOW_TEMPORARY_TABLES;
- lex->option_type= $1;
- lex->select_lex.db= $4;
-- if (prepare_schema_table(YYTHD, lex, 0, SCH_TEMPORARY_TABLES))
-+ if (prepare_schema_table(thd, lex, 0, SCH_TEMPORARY_TABLES))
- MYSQL_YYABORT;
- }
| opt_full TRIGGERS_SYM opt_db wild_and_where
-@@ -11025,7 +10971,7 @@ show_param:
+@@ -12458,7 +12363,7 @@ show_param:
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_TRIGGERS;
lex->select_lex.db= $3;
@@ -2522,7 +2765,7 @@ index 34ae03b..2a6d9aa 100644
MYSQL_YYABORT;
}
| EVENTS_SYM opt_db wild_and_where
-@@ -11033,7 +10979,7 @@ show_param:
+@@ -12466,7 +12371,7 @@ show_param:
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_EVENTS;
lex->select_lex.db= $2;
@@ -2531,7 +2774,7 @@ index 34ae03b..2a6d9aa 100644
MYSQL_YYABORT;
}
| TABLE_SYM STATUS_SYM opt_db wild_and_where
-@@ -11041,7 +10987,7 @@ show_param:
+@@ -12474,7 +12379,7 @@ show_param:
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_TABLE_STATUS;
lex->select_lex.db= $3;
@@ -2540,7 +2783,7 @@ index 34ae03b..2a6d9aa 100644
MYSQL_YYABORT;
}
| OPEN_SYM TABLES opt_db wild_and_where
-@@ -11049,14 +10995,14 @@ show_param:
+@@ -12482,14 +12387,14 @@ show_param:
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_OPEN_TABLES;
lex->select_lex.db= $3;
@@ -2557,7 +2800,7 @@ index 34ae03b..2a6d9aa 100644
MYSQL_YYABORT;
}
| ENGINE_SYM known_storage_engines show_engine_param
-@@ -11069,7 +11015,7 @@ show_param:
+@@ -12502,7 +12407,7 @@ show_param:
lex->sql_command= SQLCOM_SHOW_FIELDS;
if ($5)
$4->change_db($5);
@@ -2566,7 +2809,7 @@ index 34ae03b..2a6d9aa 100644
MYSQL_YYABORT;
}
| master_or_binary LOGS_SYM
-@@ -11096,21 +11042,21 @@ show_param:
+@@ -12529,14 +12434,14 @@ show_param:
lex->sql_command= SQLCOM_SHOW_KEYS;
if ($4)
$3->change_db($4);
@@ -2582,26 +2825,25 @@ index 34ae03b..2a6d9aa 100644
+ if (prepare_schema_table(thd, lex, 0, SCH_ENGINES))
MYSQL_YYABORT;
}
- | AUTHORS_SYM
+ | PRIVILEGES
+@@ -12554,7 +12459,7 @@ show_param:
+ { Lex->sql_command = SQLCOM_SHOW_ERRORS;}
+ | PROFILES_SYM
{
- LEX *lex=Lex;
- lex->sql_command= SQLCOM_SHOW_AUTHORS;
-- push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_WARN,
-+ push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
- ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT,
- ER(ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT),
- "SHOW AUTHORS");
-@@ -11119,7 +11065,7 @@ show_param:
+- push_warning_printf(YYTHD, Sql_condition::WARN_LEVEL_WARN,
++ push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
+ ER_WARN_DEPRECATED_SYNTAX,
+ ER(ER_WARN_DEPRECATED_SYNTAX),
+ "SHOW PROFILES", "Performance Schema");
+@@ -12562,13 +12467,13 @@ show_param:
+ }
+ | PROFILE_SYM opt_profile_defs opt_profile_args opt_limit_clause_init
{
- LEX *lex=Lex;
- lex->sql_command= SQLCOM_SHOW_CONTRIBUTORS;
-- push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_WARN,
-+ push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
- ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT,
- ER(ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT),
- "SHOW CONTRIBUTORS");
-@@ -11143,7 +11089,7 @@ show_param:
- {
+- push_warning_printf(YYTHD, Sql_condition::WARN_LEVEL_WARN,
++ push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
+ ER_WARN_DEPRECATED_SYNTAX,
+ ER(ER_WARN_DEPRECATED_SYNTAX),
+ "SHOW PROFILE", "Performance Schema");
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_PROFILE;
- if (prepare_schema_table(YYTHD, lex, NULL, SCH_PROFILES) != 0)
@@ -2609,7 +2851,7 @@ index 34ae03b..2a6d9aa 100644
YYABORT;
}
| opt_var_type STATUS_SYM wild_and_where
-@@ -11151,7 +11097,7 @@ show_param:
+@@ -12576,7 +12481,7 @@ show_param:
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_STATUS;
lex->option_type= $1;
@@ -2618,7 +2860,7 @@ index 34ae03b..2a6d9aa 100644
MYSQL_YYABORT;
}
| opt_full PROCESSLIST_SYM
-@@ -11161,21 +11107,21 @@ show_param:
+@@ -12586,21 +12491,21 @@ show_param:
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_VARIABLES;
lex->option_type= $1;
@@ -2643,7 +2885,7 @@ index 34ae03b..2a6d9aa 100644
MYSQL_YYABORT;
}
| GRANTS
-@@ -11205,7 +11151,7 @@ show_param:
+@@ -12630,7 +12535,7 @@ show_param:
{
LEX *lex= Lex;
lex->sql_command = SQLCOM_SHOW_CREATE;
@@ -2652,7 +2894,7 @@ index 34ae03b..2a6d9aa 100644
MYSQL_YYABORT;
lex->only_view= 0;
lex->create_info.storage_media= HA_SM_DEFAULT;
-@@ -11214,7 +11160,7 @@ show_param:
+@@ -12639,7 +12544,7 @@ show_param:
{
LEX *lex= Lex;
lex->sql_command = SQLCOM_SHOW_CREATE;
@@ -2661,16 +2903,7 @@ index 34ae03b..2a6d9aa 100644
MYSQL_YYABORT;
lex->only_view= 1;
}
-@@ -11236,7 +11182,7 @@ show_param:
- #ifdef HAVE_RESPONSE_TIME_DISTRIBUTION
- LEX *lex= Lex;
- lex->sql_command= SQLCOM_SELECT;
-- if (prepare_schema_table(YYTHD, lex, 0, SCH_QUERY_RESPONSE_TIME))
-+ if (prepare_schema_table(thd, lex, 0, SCH_QUERY_RESPONSE_TIME))
- MYSQL_YYABORT;
- #endif // HAVE_RESPONSE_TIME_DISTRIBUTION
- }
-@@ -11244,35 +11190,35 @@ show_param:
+@@ -12660,35 +12565,35 @@ show_param:
{
LEX *lex= Lex;
Lex->sql_command= SQLCOM_SELECT;
@@ -2711,7 +2944,7 @@ index 34ae03b..2a6d9aa 100644
MYSQL_YYABORT;
}
| CREATE PROCEDURE_SYM sp_name
-@@ -11299,14 +11245,14 @@ show_param:
+@@ -12715,14 +12620,14 @@ show_param:
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_STATUS_PROC;
@@ -2728,7 +2961,7 @@ index 34ae03b..2a6d9aa 100644
MYSQL_YYABORT;
}
| PROCEDURE_SYM CODE_SYM sp_name
-@@ -11374,7 +11320,7 @@ wild_and_where:
+@@ -12790,7 +12695,7 @@ wild_and_where:
/* empty */
| LIKE TEXT_STRING_sys
{
@@ -2737,7 +2970,7 @@ index 34ae03b..2a6d9aa 100644
system_charset_info);
if (Lex->wild == NULL)
MYSQL_YYABORT;
-@@ -11397,7 +11343,7 @@ describe:
+@@ -12813,7 +12718,7 @@ describe:
lex->sql_command= SQLCOM_SHOW_FIELDS;
lex->select_lex.db= 0;
lex->verbose= 0;
@@ -2746,7 +2979,7 @@ index 34ae03b..2a6d9aa 100644
MYSQL_YYABORT;
}
opt_describe_column
-@@ -11429,7 +11375,7 @@ opt_describe_column:
+@@ -12883,7 +12788,7 @@ opt_describe_column:
| text_string { Lex->wild= $1; }
| ident
{
@@ -2755,7 +2988,7 @@ index 34ae03b..2a6d9aa 100644
$1.length,
system_charset_info);
if (Lex->wild == NULL)
-@@ -11647,7 +11593,6 @@ use:
+@@ -13123,7 +13028,6 @@ use:
load:
LOAD data_or_xml
{
@@ -2763,16 +2996,16 @@ index 34ae03b..2a6d9aa 100644
LEX *lex= thd->lex;
if (lex->sphead)
-@@ -11670,7 +11615,7 @@ load:
- opt_duplicate INTO TABLE_SYM table_ident
+@@ -13146,7 +13050,7 @@ load:
+ opt_duplicate INTO TABLE_SYM table_ident opt_use_partition
{
LEX *lex=Lex;
- if (!Select->add_table_to_list(YYTHD, $12, NULL, TL_OPTION_UPDATING,
+ if (!Select->add_table_to_list(thd, $12, NULL, TL_OPTION_UPDATING,
- $4, MDL_SHARED_WRITE))
+ $4, MDL_SHARED_WRITE, NULL, $13))
MYSQL_YYABORT;
lex->field_list.empty();
-@@ -11813,7 +11758,7 @@ field_or_var:
+@@ -13289,7 +13193,7 @@ field_or_var:
simple_ident_nospvar {$$= $1;}
| '@' ident_or_text
{
@@ -2781,7 +3014,7 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
}
-@@ -11834,16 +11779,16 @@ load_data_set_elem:
+@@ -13310,16 +13214,16 @@ load_data_set_elem:
{
LEX *lex= Lex;
uint length= (uint) ($5 - $3);
@@ -2796,20 +3029,20 @@ index 34ae03b..2a6d9aa 100644
lex->value_list.push_back($4) ||
lex->load_set_str_list.push_back(val))
MYSQL_YYABORT;
-- $4->set_name_no_truncate($3, length, YYTHD->charset());
-+ $4->set_name_no_truncate($3, length, thd->charset());
+- $4->item_name.copy_no_truncate($3, length, YYTHD->charset());
++ $4->item_name.copy_no_truncate($3, length, thd->charset());
}
;
-@@ -11853,7 +11798,6 @@ text_literal:
+@@ -13329,7 +13233,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;
+ const CHARSET_INFO *cs_con= thd->variables.collation_connection;
+ const CHARSET_INFO *cs_cli= thd->variables.character_set_client;
uint repertoire= thd->lex->text_string_is_7bit &&
-@@ -11879,7 +11823,7 @@ text_literal:
+@@ -13355,7 +13258,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));
@@ -2818,7 +3051,7 @@ index 34ae03b..2a6d9aa 100644
national_charset_info,
DERIVATION_COERCIBLE,
repertoire);
-@@ -11888,7 +11832,7 @@ text_literal:
+@@ -13364,7 +13267,7 @@ text_literal:
}
| UNDERSCORE_CHARSET TEXT_STRING
{
@@ -2827,16 +3060,16 @@ index 34ae03b..2a6d9aa 100644
$2.length, $1);
if (str == NULL)
MYSQL_YYABORT;
-@@ -11907,7 +11851,7 @@ text_literal:
+@@ -13383,7 +13286,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;
+- const CHARSET_INFO *cs= YYTHD->variables.collation_connection;
++ const CHARSET_INFO *cs= thd->variables.collation_connection;
item->collation.repertoire|= my_string_repertoire(cs,
$2.str,
$2.length);
-@@ -11918,15 +11862,15 @@ text_literal:
+@@ -13394,15 +13297,15 @@ text_literal:
text_string:
TEXT_STRING_literal
{
@@ -2855,7 +3088,7 @@ index 34ae03b..2a6d9aa 100644
if (tmp == NULL)
MYSQL_YYABORT;
/*
-@@ -11938,7 +11882,7 @@ text_string:
+@@ -13414,7 +13317,7 @@ text_string:
}
| BIN_NUM
{
@@ -2864,7 +3097,7 @@ index 34ae03b..2a6d9aa 100644
if (tmp == NULL)
MYSQL_YYABORT;
/*
-@@ -11953,7 +11897,6 @@ text_string:
+@@ -13429,7 +13332,6 @@ text_string:
param_marker:
PARAM_MARKER
{
@@ -2872,8 +3105,8 @@ index 34ae03b..2a6d9aa 100644
LEX *lex= thd->lex;
Lex_input_stream *lip= YYLIP;
Item_param *item;
-@@ -11986,38 +11929,38 @@ literal:
- | NUM_literal { $$ = $1; }
+@@ -13464,38 +13366,38 @@ literal:
+ | temporal_literal { $$= $1; }
| NULL_SYM
{
- $$ = new (YYTHD->mem_root) Item_null();
@@ -2884,15 +3117,15 @@ index 34ae03b..2a6d9aa 100644
}
| FALSE_SYM
{
-- $$= new (YYTHD->mem_root) Item_int((char*) "FALSE",0,1);
-+ $$= new (thd->mem_root) Item_int((char*) "FALSE",0,1);
+- $$= new (YYTHD->mem_root) Item_int(NAME_STRING("FALSE"), 0, 1);
++ $$= new (thd->mem_root) Item_int(NAME_STRING("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);
+- $$= new (YYTHD->mem_root) Item_int(NAME_STRING("TRUE"), 1, 1);
++ $$= new (thd->mem_root) Item_int(NAME_STRING("TRUE"), 1, 1);
if ($$ == NULL)
MYSQL_YYABORT;
}
@@ -2917,16 +3150,16 @@ index 34ae03b..2a6d9aa 100644
if (tmp == NULL)
MYSQL_YYABORT;
/*
-@@ -12028,7 +11971,7 @@ literal:
+@@ -13506,7 +13408,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 */
+ Item_string(null_name_string, /* name will be set in select_item */
str ? str->ptr() : "",
str ? str->length() : 0,
-@@ -12046,7 +11989,7 @@ literal:
+@@ -13524,7 +13426,7 @@ literal:
}
| UNDERSCORE_CHARSET BIN_NUM
{
@@ -2935,34 +3168,34 @@ index 34ae03b..2a6d9aa 100644
if (tmp == NULL)
MYSQL_YYABORT;
/*
-@@ -12057,7 +12000,7 @@ literal:
+@@ -13535,7 +13437,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 */
+ Item_string(null_name_string, /* name will be set in select_item */
str ? str->ptr() : "",
str ? str->length() : 0,
-@@ -12081,7 +12024,7 @@ NUM_literal:
+@@ -13556,7 +13458,7 @@ NUM_literal:
NUM
{
int error;
- $$= new (YYTHD->mem_root)
+ $$= new (thd->mem_root)
- Item_int($1.str,
+ Item_int($1,
(longlong) my_strtoll10($1.str, NULL, &error),
$1.length);
-@@ -12091,7 +12034,7 @@ NUM_literal:
+@@ -13566,7 +13468,7 @@ NUM_literal:
| LONG_NUM
{
int error;
- $$= new (YYTHD->mem_root)
+ $$= new (thd->mem_root)
- Item_int($1.str,
+ Item_int($1,
(longlong) my_strtoll10($1.str, NULL, &error),
$1.length);
-@@ -12100,23 +12043,23 @@ NUM_literal:
+@@ -13575,23 +13477,23 @@ NUM_literal:
}
| ULONGLONG_NUM
{
@@ -2992,7 +3225,30 @@ index 34ae03b..2a6d9aa 100644
{
MYSQL_YYABORT;
}
-@@ -12136,7 +12079,7 @@ table_wild:
+@@ -13602,19 +13504,19 @@ NUM_literal:
+ temporal_literal:
+ DATE_SYM TEXT_STRING
+ {
+- if (!($$= create_temporal_literal(YYTHD, $2.str, $2.length, YYCSCL,
++ if (!($$= create_temporal_literal(thd, $2.str, $2.length, YYCSCL,
+ MYSQL_TYPE_DATE, true)))
+ MYSQL_YYABORT;
+ }
+ | TIME_SYM TEXT_STRING
+ {
+- if (!($$= create_temporal_literal(YYTHD, $2.str, $2.length, YYCSCL,
++ if (!($$= create_temporal_literal(thd, $2.str, $2.length, YYCSCL,
+ MYSQL_TYPE_TIME, true)))
+ MYSQL_YYABORT;
+ }
+ | TIMESTAMP TEXT_STRING
+ {
+- if (!($$= create_temporal_literal(YYTHD, $2.str, $2.length, YYCSCL,
++ if (!($$= create_temporal_literal(thd, $2.str, $2.length, YYCSCL,
+ MYSQL_TYPE_DATETIME, true)))
+ MYSQL_YYABORT;
+ }
+@@ -13636,7 +13538,7 @@ table_wild:
ident '.' '*'
{
SELECT_LEX *sel= Select;
@@ -3001,7 +3257,7 @@ index 34ae03b..2a6d9aa 100644
NullS, $1.str, "*");
if ($$ == NULL)
MYSQL_YYABORT;
-@@ -12144,7 +12087,6 @@ table_wild:
+@@ -13644,7 +13546,6 @@ table_wild:
}
| ident '.' ident '.' '*'
{
@@ -3009,15 +3265,15 @@ index 34ae03b..2a6d9aa 100644
SELECT_LEX *sel= Select;
const char* schema= thd->client_capabilities & CLIENT_NO_SCHEMA ?
NullS : $1.str;
-@@ -12164,7 +12106,6 @@ order_ident:
+@@ -13664,7 +13565,6 @@ order_ident:
simple_ident:
ident
{
- THD *thd= YYTHD;
LEX *lex= thd->lex;
- Lex_input_stream *lip= YYLIP;
- sp_variable_t *spv;
-@@ -12215,7 +12156,6 @@ simple_ident:
+ sp_pcontext *pctx = lex->get_sp_current_parsing_ctx();
+ sp_variable *spv;
+@@ -13719,7 +13619,6 @@ simple_ident:
simple_ident_nospvar:
ident
{
@@ -3025,15 +3281,15 @@ index 34ae03b..2a6d9aa 100644
SELECT_LEX *sel=Select;
if ((sel->parsing_place != IN_HAVING) ||
(sel->get_in_sum_expr() > 0))
-@@ -12237,7 +12177,6 @@ simple_ident_nospvar:
+@@ -13741,7 +13640,6 @@ simple_ident_nospvar:
simple_ident_q:
ident '.' ident
{
- THD *thd= YYTHD;
LEX *lex= thd->lex;
+ sp_head *sp= lex->sphead;
- /*
-@@ -12316,7 +12255,6 @@ simple_ident_q:
+@@ -13821,7 +13719,6 @@ simple_ident_q:
}
| '.' ident '.' ident
{
@@ -3041,7 +3297,7 @@ index 34ae03b..2a6d9aa 100644
LEX *lex= thd->lex;
SELECT_LEX *sel= lex->current_select;
if (sel->no_table_names_allowed)
-@@ -12341,7 +12279,6 @@ simple_ident_q:
+@@ -13846,7 +13743,6 @@ simple_ident_q:
}
| ident '.' ident '.' ident
{
@@ -3049,7 +3305,7 @@ index 34ae03b..2a6d9aa 100644
LEX *lex= thd->lex;
SELECT_LEX *sel= lex->current_select;
const char* schema= (thd->client_capabilities & CLIENT_NO_SCHEMA ?
-@@ -12409,7 +12346,7 @@ table_ident:
+@@ -13914,7 +13810,7 @@ table_ident:
}
| ident '.' ident
{
@@ -3058,7 +3314,7 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
}
-@@ -12431,7 +12368,7 @@ table_ident_opt_wild:
+@@ -13936,7 +13832,7 @@ table_ident_opt_wild:
}
| ident '.' ident opt_wild
{
@@ -3067,7 +3323,7 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
}
-@@ -12441,7 +12378,7 @@ table_ident_nodb:
+@@ -13946,7 +13842,7 @@ table_ident_nodb:
ident
{
LEX_STRING db={(char*) any_db,3};
@@ -3076,39 +3332,43 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
}
-@@ -12451,7 +12388,6 @@ IDENT_sys:
+@@ -13956,8 +13852,6 @@ IDENT_sys:
IDENT { $$= $1; }
| IDENT_QUOTED
{
- THD *thd= YYTHD;
-
+-
if (thd->charset_is_system_charset)
{
-@@ -12481,7 +12417,6 @@ IDENT_sys:
+ const CHARSET_INFO *cs= system_charset_info;
+@@ -13999,8 +13893,6 @@ TEXT_STRING_sys_nonewline:
TEXT_STRING_sys:
TEXT_STRING
{
- THD *thd= YYTHD;
-
+-
if (thd->charset_is_system_charset)
$$= $1;
-@@ -12497,7 +12432,6 @@ TEXT_STRING_sys:
+ else
+@@ -14015,8 +13907,6 @@ TEXT_STRING_sys:
TEXT_STRING_literal:
TEXT_STRING
{
- THD *thd= YYTHD;
-
+-
if (thd->charset_is_collation_connection)
$$= $1;
-@@ -12513,7 +12447,6 @@ TEXT_STRING_literal:
+ else
+@@ -14031,8 +13921,6 @@ TEXT_STRING_literal:
TEXT_STRING_filesystem:
TEXT_STRING
{
- THD *thd= YYTHD;
-
+-
if (thd->charset_is_character_set_filesystem)
$$= $1;
-@@ -12531,7 +12464,6 @@ ident:
+ else
+@@ -14049,7 +13937,6 @@ ident:
IDENT_sys { $$=$1; }
| keyword
{
@@ -3116,7 +3376,7 @@ index 34ae03b..2a6d9aa 100644
$$.str= thd->strmake($1.str, $1.length);
if ($$.str == NULL)
MYSQL_YYABORT;
-@@ -12543,7 +12475,6 @@ label_ident:
+@@ -14061,7 +13948,6 @@ label_ident:
IDENT_sys { $$=$1; }
| keyword_sp
{
@@ -3124,23 +3384,23 @@ index 34ae03b..2a6d9aa 100644
$$.str= thd->strmake($1.str, $1.length);
if ($$.str == NULL)
MYSQL_YYABORT;
-@@ -12560,7 +12491,6 @@ ident_or_text:
+@@ -14078,7 +13964,6 @@ ident_or_text:
user:
ident_or_text
{
- THD *thd= YYTHD;
if (!($$=(LEX_USER*) thd->alloc(sizeof(st_lex_user))))
MYSQL_YYABORT;
- $$->user = $1;
-@@ -12577,7 +12507,6 @@ user:
+ $$->user= $1;
+@@ -14105,7 +13990,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;
-@@ -12599,7 +12528,7 @@ user:
+ $$->user= $1;
+@@ -14138,7 +14022,7 @@ user:
}
| CURRENT_USER optional_braces
{
@@ -3149,49 +3409,92 @@ index 34ae03b..2a6d9aa 100644
MYSQL_YYABORT;
/*
empty LEX_USER means current_user and
-@@ -12987,7 +12916,6 @@ option_value_list:
+@@ -14542,7 +14426,7 @@ set:
+ lex->one_shot_set= 0;
+ lex->autocommit= 0;
- option_type_value:
+- sp_create_assignment_lex(YYTHD, YY_TOKEN_END);
++ sp_create_assignment_lex(thd, YY_TOKEN_END);
+ }
+ start_option_value_list
+ {}
+@@ -14553,7 +14437,7 @@ set:
+ start_option_value_list:
+ option_value_no_option_type
{
-- THD *thd= YYTHD;
- LEX *lex= thd->lex;
- Lex_input_stream *lip= YYLIP;
-
-@@ -13018,7 +12946,6 @@ option_type_value:
+- if (sp_create_assignment_instr(YYTHD, YY_TOKEN_END))
++ if (sp_create_assignment_instr(thd, YY_TOKEN_END))
+ MYSQL_YYABORT;
+ }
+ option_value_list_continued
+@@ -14563,7 +14447,7 @@ start_option_value_list:
}
- ext_option_value
+ transaction_characteristics
{
-- THD *thd= YYTHD;
- LEX *lex= thd->lex;
- Lex_input_stream *lip= YYLIP;
-
-@@ -13101,7 +13028,6 @@ ext_option_value:
- sys_option_value:
- option_type internal_variable_name equal set_expr_or_default
+- if (sp_create_assignment_instr(YYTHD, YY_TOKEN_END))
++ if (sp_create_assignment_instr(thd, YY_TOKEN_END))
+ MYSQL_YYABORT;
+ }
+ | option_type
+@@ -14578,13 +14462,13 @@ start_option_value_list:
+ start_option_value_list_following_option_type:
+ option_value_following_option_type
+ {
+- if (sp_create_assignment_instr(YYTHD, YY_TOKEN_END))
++ if (sp_create_assignment_instr(thd, YY_TOKEN_END))
+ MYSQL_YYABORT;
+ }
+ option_value_list_continued
+ | TRANSACTION_SYM transaction_characteristics
+ {
+- if (sp_create_assignment_instr(YYTHD, YY_TOKEN_END))
++ if (sp_create_assignment_instr(thd, YY_TOKEN_END))
+ MYSQL_YYABORT;
+ }
+ ;
+@@ -14598,20 +14482,20 @@ option_value_list_continued:
+ // Repeating list of option values after first option value.
+ option_value_list:
+ {
+- sp_create_assignment_lex(YYTHD, YY_TOKEN_START);
++ sp_create_assignment_lex(thd, YY_TOKEN_START);
+ }
+ option_value
+ {
+- if (sp_create_assignment_instr(YYTHD, YY_TOKEN_END))
++ if (sp_create_assignment_instr(thd, YY_TOKEN_END))
+ MYSQL_YYABORT;
+ }
+ | option_value_list ','
+ {
+- sp_create_assignment_lex(YYTHD, YY_TOKEN_START);
++ sp_create_assignment_lex(thd, YY_TOKEN_START);
+ }
+ option_value
+ {
+- if (sp_create_assignment_instr(YYTHD, YY_TOKEN_END))
++ if (sp_create_assignment_instr(thd, YY_TOKEN_END))
+ MYSQL_YYABORT;
+ }
+ ;
+@@ -14650,7 +14534,6 @@ opt_var_ident_type:
+ option_value_following_option_type:
+ internal_variable_name equal set_expr_or_default
{
- THD *thd= YYTHD;
LEX *lex= Lex;
- LEX_STRING *name= &$2.base_name;
-@@ -13113,7 +13039,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)
-@@ -13143,7 +13069,6 @@ sys_option_value:
+ if ($1.var && $1.var != trg_new_row_fake_var)
+@@ -14682,7 +14565,6 @@ option_value_no_option_type:
}
- | option_type TRANSACTION_SYM ISOLATION LEVEL_SYM isolation_types
+ set_expr_or_default
{
- THD *thd= YYTHD;
- LEX *lex=Lex;
- lex->option_type= $1;
- Item *item= new (thd->mem_root) Item_int((int32) $5);
-@@ -13163,7 +13088,7 @@ option_value:
- '@' ident_or_text equal expr
+ LEX *lex= Lex;
+ sp_head *sp= lex->sphead;
+ const char *expr_start_ptr= NULL;
+@@ -14776,7 +14658,7 @@ option_value_no_option_type:
+ | '@' ident_or_text equal expr
{
Item_func_set_user_var *item;
- item= new (YYTHD->mem_root) Item_func_set_user_var($2, $4, false);
@@ -3199,7 +3502,7 @@ index 34ae03b..2a6d9aa 100644
if (item == NULL)
MYSQL_YYABORT;
set_var_user *var= new set_var_user(item);
-@@ -13173,7 +13098,6 @@ option_value:
+@@ -14786,7 +14668,6 @@ option_value_no_option_type:
}
| '@' '@' opt_var_ident_type internal_variable_name equal set_expr_or_default
{
@@ -3207,31 +3510,31 @@ index 34ae03b..2a6d9aa 100644
struct sys_var_with_base tmp= $4;
/* Lookup if necessary: must be a system variable. */
if (tmp.var == NULL)
-@@ -13186,7 +13110,6 @@ option_value:
+@@ -14799,7 +14680,6 @@ option_value_no_option_type:
}
| 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;
-@@ -13234,7 +13157,6 @@ option_value:
+ int flags= $2 ? 0 : set_var_collation_client::SET_CS_DEFAULT;
+ const CHARSET_INFO *cs2;
+@@ -14850,7 +14730,6 @@ option_value_no_option_type:
}
| PASSWORD equal text_or_password
{
- THD *thd= YYTHD;
LEX *lex= thd->lex;
- LEX_USER *user;
- sp_pcontext *spc= lex->spcont;
-@@ -13274,7 +13196,6 @@ option_value:
+ sp_head *sp= lex->sphead;
+ sp_pcontext *pctx= lex->get_sp_current_parsing_ctx();
+@@ -14927,7 +14806,6 @@ option_value_no_option_type:
internal_variable_name:
ident
{
- THD *thd= YYTHD;
- sp_pcontext *spc= thd->lex->spcont;
- sp_variable_t *spv;
-
-@@ -13333,7 +13254,7 @@ internal_variable_name:
+ LEX *lex= thd->lex;
+ sp_pcontext *pctx= lex->get_sp_current_parsing_ctx();
+ sp_variable *spv;
+@@ -14990,7 +14868,7 @@ internal_variable_name:
}
else
{
@@ -3240,7 +3543,7 @@ index 34ae03b..2a6d9aa 100644
if (!tmp)
MYSQL_YYABORT;
if (!tmp->is_struct())
-@@ -13344,7 +13265,7 @@ internal_variable_name:
+@@ -15001,7 +14879,7 @@ internal_variable_name:
}
| DEFAULT '.' ident
{
@@ -3249,28 +3552,49 @@ index 34ae03b..2a6d9aa 100644
if (!tmp)
MYSQL_YYABORT;
if (!tmp->is_struct())
-@@ -13366,16 +13287,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;
+@@ -15022,7 +14900,6 @@ transaction_characteristics:
+ transaction_access_mode:
+ transaction_access_mode_types
+ {
+- THD *thd= YYTHD;
+ LEX *lex=Lex;
+ Item *item= new (thd->mem_root) Item_int((int32) $1);
+ if (item == NULL)
+@@ -15040,7 +14917,6 @@ transaction_access_mode:
+ isolation_level:
+ ISOLATION LEVEL_SYM isolation_types
+ {
+- THD *thd= YYTHD;
+ LEX *lex=Lex;
+ Item *item= new (thd->mem_root) Item_int((int32) $3);
+ if (item == NULL)
+@@ -15074,13 +14950,13 @@ text_or_password:
+ if ($3.length == 0)
+ $$= $3.str;
+ else
+- switch (YYTHD->variables.old_passwords) {
++ switch (thd->variables.old_passwords) {
+ case 1: $$= Item_func_old_password::
+- alloc(YYTHD, $3.str, $3.length);
++ alloc(thd, $3.str, $3.length);
+ break;
+ case 0:
+ case 2: $$= Item_func_password::
+- create_password_hash_buffer(YYTHD, $3.str, $3.length);
++ create_password_hash_buffer(thd, $3.str, $3.length);
+ break;
+ }
if ($$ == NULL)
- MYSQL_YYABORT;
- }
+@@ -15090,7 +14966,7 @@ text_or_password:
| 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.length ? Item_func_old_password::
+- alloc(YYTHD, $3.str, $3.length) :
++ alloc(thd, $3.str, $3.length) :
$3.str;
if ($$ == NULL)
-@@ -13389,19 +13310,19 @@ set_expr_or_default:
+ MYSQL_YYABORT;
+@@ -15104,19 +14980,19 @@ set_expr_or_default:
| DEFAULT { $$=0; }
| ON
{
@@ -3293,7 +3617,7 @@ index 34ae03b..2a6d9aa 100644
if ($$ == NULL)
MYSQL_YYABORT;
}
-@@ -13440,7 +13361,7 @@ table_lock:
+@@ -15155,7 +15031,7 @@ table_lock:
{
thr_lock_type lock_type= (thr_lock_type) $3;
bool lock_for_write= (lock_type >= TL_WRITE_ALLOW_WRITE);
@@ -3302,38 +3626,80 @@ index 34ae03b..2a6d9aa 100644
(lock_for_write ?
MDL_SHARED_NO_READ_WRITE :
MDL_SHARED_READ)))
-@@ -13511,7 +13432,7 @@ handler:
+@@ -15169,7 +15045,7 @@ lock_option:
+ | LOW_PRIORITY WRITE_SYM
+ {
+ $$= TL_WRITE_LOW_PRIORITY;
+- WARN_DEPRECATED(YYTHD, "LOW_PRIORITY WRITE", "WRITE");
++ WARN_DEPRECATED(thd, "LOW_PRIORITY WRITE", "WRITE");
+ }
+ | READ_SYM LOCAL_SYM { $$= TL_READ; }
+ ;
+@@ -15197,7 +15073,6 @@ unlock:
+ handler:
+ HANDLER_SYM table_ident OPEN_SYM opt_table_alias
+ {
+- THD *thd= YYTHD;
+ LEX *lex= Lex;
+ if (lex->sphead)
+ {
+@@ -15213,7 +15088,6 @@ handler:
+ }
+ | HANDLER_SYM table_ident_nodb CLOSE_SYM
+ {
+- THD *thd= YYTHD;
+ LEX *lex= Lex;
+ if (lex->sphead)
+ {
+@@ -15237,7 +15111,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;
-@@ -13857,10 +13778,10 @@ grant_user:
+@@ -15247,7 +15121,6 @@ handler:
+ }
+ handler_read_or_scan where_clause opt_limit_clause
+ {
+- THD *thd= YYTHD;
+ LEX *lex= Lex;
+ Lex->expr_allows_subselect= TRUE;
+ /* Stored functions are not supported for HANDLER READ. */
+@@ -15282,7 +15155,7 @@ handler_rkey_function:
+ | LAST_SYM { $$= RLAST; }
+ | handler_rkey_mode
+ {
+- YYTHD->m_parser_state->m_yacc.m_ha_rkey_mode= $1;
++ thd->m_parser_state->m_yacc.m_ha_rkey_mode= $1;
+ Lex->insert_list= new List_item;
+ if (! Lex->insert_list)
+ MYSQL_YYABORT;
+@@ -15590,8 +15463,8 @@ grant_user:
+ my_parse_error(ER(ER_SYNTAX_ERROR));
MYSQL_YYABORT;
- if ($4.length)
+ }
+- String *password = new (YYTHD->mem_root) String((const char*)$4.str,
+- YYTHD->variables.character_set_client);
++ String *password = new (thd->mem_root) String((const char*)$4.str,
++ thd->variables.character_set_client);
+ check_password_policy(password);
+ /*
+ 1. Plugin must be resolved
+@@ -15611,8 +15484,8 @@ grant_user:
+ $1->password= $5;
+ if (!strcmp($5.str, ""))
{
-- 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);
-@@ -13870,7 +13791,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);
-@@ -13923,7 +13844,7 @@ column_list:
+- String *password= new (YYTHD->mem_root) String ((const char *)"",
+- YYTHD->variables.character_set_client);
++ String *password= new (thd->mem_root) String ((const char *)"",
++ thd->variables.character_set_client);
+ check_password_policy(password);
+ }
+ /*
+@@ -15670,7 +15543,7 @@ column_list:
column_list_id:
ident
{
@@ -3342,7 +3708,7 @@ index 34ae03b..2a6d9aa 100644
if (new_str == NULL)
MYSQL_YYABORT;
List_iterator <LEX_COLUMN> iter(Lex->columns);
-@@ -14133,7 +14054,6 @@ opt_union_order_or_limit:
+@@ -15880,7 +15753,6 @@ opt_union_order_or_limit:
union_order_or_limit:
{
@@ -3350,7 +3716,7 @@ index 34ae03b..2a6d9aa 100644
LEX *lex= thd->lex;
DBUG_ASSERT(lex->current_select->linkage != GLOBAL_OPTIONS_TYPE);
SELECT_LEX *sel= lex->current_select;
-@@ -14149,7 +14069,6 @@ union_order_or_limit:
+@@ -15896,7 +15768,6 @@ union_order_or_limit:
}
order_or_limit
{
@@ -3358,7 +3724,7 @@ index 34ae03b..2a6d9aa 100644
thd->lex->current_select->no_table_names_allowed= 0;
thd->where= "";
}
-@@ -14331,14 +14250,14 @@ no_definer:
+@@ -16078,14 +15949,14 @@ no_definer:
from older master servers (i.e. to create non-suid trigger in this
case).
*/
@@ -3375,7 +3741,7 @@ index 34ae03b..2a6d9aa 100644
}
;
-@@ -14383,7 +14302,6 @@ view_suid:
+@@ -16130,7 +16001,6 @@ view_suid:
view_tail:
view_suid VIEW_SYM table_ident
{
@@ -3383,7 +3749,7 @@ index 34ae03b..2a6d9aa 100644
LEX *lex= thd->lex;
lex->sql_command= SQLCOM_CREATE_VIEW;
/* first table in list is target VIEW name */
-@@ -14427,7 +14345,6 @@ view_select:
+@@ -16174,7 +16044,6 @@ view_select:
}
view_select_aux view_check_option
{
@@ -3391,35 +3757,23 @@ index 34ae03b..2a6d9aa 100644
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);
-@@ -14483,7 +14400,6 @@ trigger_tail:
- EACH_SYM
- ROW_SYM
- { /* $15 */
+@@ -16266,7 +16135,6 @@ trigger_tail:
+ EACH_SYM /* $13 */
+ ROW_SYM /* $14 */
+ { /* $15 */
- THD *thd= YYTHD;
LEX *lex= thd->lex;
Lex_input_stream *lip= YYLIP;
- sp_head *sp;
-@@ -14517,8 +14433,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);
+@@ -16296,7 +16164,6 @@ trigger_tail:
+ }
+ sp_proc_stmt /* $16 */
+ { /* $17 */
+- THD *thd= YYTHD;
+ LEX *lex= Lex;
+ sp_head *sp= lex->sphead;
- if (sp->is_not_allowed_in_function("trigger"))
- MYSQL_YYABORT;
-@@ -14528,7 +14444,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_READ_NO_INSERT,
-@@ -14547,7 +14463,6 @@ udf_tail:
+@@ -16331,7 +16198,6 @@ udf_tail:
AGGREGATE_SYM remember_name FUNCTION_SYM ident
RETURNS_SYM udf_type SONAME_SYM TEXT_STRING_sys
{
@@ -3427,7 +3781,7 @@ index 34ae03b..2a6d9aa 100644
LEX *lex= thd->lex;
if (is_native_function(thd, & $4))
{
-@@ -14565,7 +14480,6 @@ udf_tail:
+@@ -16349,7 +16215,6 @@ udf_tail:
| remember_name FUNCTION_SYM ident
RETURNS_SYM udf_type SONAME_SYM TEXT_STRING_sys
{
@@ -3435,32 +3789,32 @@ index 34ae03b..2a6d9aa 100644
LEX *lex= thd->lex;
if (is_native_function(thd, & $3))
{
-@@ -14588,7 +14502,6 @@ sf_tail:
+@@ -16372,7 +16237,6 @@ sf_tail:
sp_name /* $3 */
'(' /* $4 */
{ /* $5 */
- THD *thd= YYTHD;
LEX *lex= thd->lex;
- Lex_input_stream *lip= YYLIP;
- sp_head *sp;
-@@ -14646,7 +14559,7 @@ sf_tail:
+
+ lex->stmt_definition_begin= $1;
+@@ -16431,7 +16295,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))
+- if (fill_field_definition(YYTHD, sp,
++ if (fill_field_definition(thd, sp,
+ (enum enum_field_types) $11,
+ &sp->m_return_field_def))
MYSQL_YYABORT;
-@@ -14655,7 +14568,6 @@ sf_tail:
+@@ -16440,7 +16304,6 @@ sf_tail:
}
sp_c_chistics /* $13 */
{ /* $14 */
- THD *thd= YYTHD;
LEX *lex= thd->lex;
- Lex_input_stream *lip= YYLIP;
-@@ -14664,7 +14576,6 @@ sf_tail:
+ lex->sphead->m_chistics= &lex->sp_chistics;
+@@ -16448,7 +16311,6 @@ sf_tail:
}
sp_proc_stmt /* $15 */
{
@@ -3468,28 +3822,23 @@ index 34ae03b..2a6d9aa 100644
LEX *lex= thd->lex;
sp_head *sp= lex->sphead;
-@@ -14735,10 +14646,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);
+@@ -16506,7 +16368,6 @@ sf_tail:
+ sp_tail:
+ PROCEDURE_SYM remember_name sp_name
+ {
+- THD *thd= YYTHD;
+ LEX *lex= Lex;
- lex->sphead= sp;
- }
-@@ -14753,7 +14664,6 @@ sp_tail:
+ if (lex->sphead)
+@@ -16539,7 +16400,6 @@ sp_tail:
sp_pdparam_list
')'
{
- THD *thd= YYTHD;
LEX *lex= thd->lex;
- lex->sphead->m_param_end= YYLIP->get_cpp_tok_start();
-@@ -14761,7 +14671,6 @@ sp_tail:
+ Lex->sphead->m_parser_data.set_parameter_end_ptr(
+@@ -16549,7 +16409,6 @@ sp_tail:
}
sp_c_chistics
{
@@ -3497,19 +3846,15 @@ index 34ae03b..2a6d9aa 100644
LEX *lex= thd->lex;
lex->sphead->m_chistics= &lex->sp_chistics;
-@@ -14772,9 +14681,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);
+@@ -16557,7 +16416,6 @@ sp_tail:
}
- ;
+ sp_proc_stmt
+ {
+- THD *thd= YYTHD;
+ LEX *lex= Lex;
-@@ -14811,21 +14720,21 @@ xid:
+ sp_finish_parsing(thd);
+@@ -16599,21 +16457,21 @@ xid:
text_string
{
MYSQL_YYABORT_UNLESS($1->length() <= MAXGTRIDSIZE);
@@ -3534,6 +3879,15 @@ index 34ae03b..2a6d9aa 100644
MYSQL_YYABORT;
Lex->xid->set($5, $1->ptr(), $1->length(), $3->ptr(), $3->length());
}
---
-1.8.4
-
+diff --git a/storage/perfschema/gen_pfs_lex_token.cc b/storage/perfschema/gen_pfs_lex_token.cc
+index 7581255..2eee5d1 100644
+--- a/storage/perfschema/gen_pfs_lex_token.cc
++++ b/storage/perfschema/gen_pfs_lex_token.cc
+@@ -21,6 +21,7 @@
+
+ /* We only need the tokens here */
+ #define YYSTYPE_IS_DECLARED
++class THD;
+ #include <../sql/sql_yacc.h>
+ #include <lex.h>
+
diff --git a/community/percona-server/mysql56-bufsize.patch b/community/percona-server/mysql56-bufsize.patch
new file mode 100644
index 000000000..1d5b7dc63
--- /dev/null
+++ b/community/percona-server/mysql56-bufsize.patch
@@ -0,0 +1,20 @@
+--- storage/innobase/row/row0log.cc.orig 2013-10-14 09:44:46.060172260 +0200
++++ storage/innobase/row/row0log.cc 2013-10-14 10:05:51.822170509 +0200
+@@ -2364,7 +2364,7 @@
+ and be ignored when the operation is unsupported. */
+ fallocate(index->online_log->fd,
+ FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE,
+- ofs, srv_buf_size);
++ ofs, srv_sort_buf_size);
+ #endif /* FALLOC_FL_PUNCH_HOLE */
+
+ next_mrec = index->online_log->head.block;
+@@ -3153,7 +3153,7 @@
+ and be ignored when the operation is unsupported. */
+ fallocate(index->online_log->fd,
+ FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE,
+- ofs, srv_buf_size);
++ ofs, srv_sort_buf_size);
+ #endif /* FALLOC_FL_PUNCH_HOLE */
+
+ next_mrec = index->online_log->head.block;
diff --git a/community/percona-server/percona.install b/community/percona-server/percona.install
index c3b337ae1..2659c7558 100644
--- a/community/percona-server/percona.install
+++ b/community/percona-server/percona.install
@@ -6,7 +6,7 @@ fi
post_install(){
groupadd -g 89 mysql &>/dev/null
useradd -u 89 -g mysql -d $datadir -s /bin/false mysql &>/dev/null
-
+
if [[ ! -e $datadir ]]; then
install -dm700 $datadir
usr/bin/mysql_install_db --user=mysql --basedir=/usr --datadir=$datadir
@@ -20,7 +20,7 @@ post_upgrade(){
getent group mysql >/dev/null 2>&1 || groupadd -g 89 mysql &>/dev/null
getent passwd mysql >/dev/null 2>&1 || useradd -u 89 -g mysql -d $datadir -s /bin/false mysql &>/dev/null
- if [ "$(vercmp $2 5.5)" -lt 0 ]; then
+ if [ "$(vercmp $2 5.6)" -lt 0 ]; then
echo " >> "
echo " >> Major version update. Consider restart the service, and then running mysql_upgrade after it."
echo " >> "