diff options
Diffstat (limited to 'community/percona-server')
-rw-r--r-- | community/percona-server/PKGBUILD | 28 | ||||
-rw-r--r-- | community/percona-server/my.cnf | 145 | ||||
-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.patch | 20 | ||||
-rw-r--r-- | community/percona-server/percona.install | 4 |
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 " >> " |