summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/main/set_statement.result10
-rw-r--r--mysql-test/main/set_statement.test9
-rw-r--r--sql/sql_yacc.yy3
-rw-r--r--sql/sql_yacc_ora.yy3
4 files changed, 21 insertions, 4 deletions
diff --git a/mysql-test/main/set_statement.result b/mysql-test/main/set_statement.result
index a12954927b6..f3dc0b35ea6 100644
--- a/mysql-test/main/set_statement.result
+++ b/mysql-test/main/set_statement.result
@@ -1231,4 +1231,14 @@ SET STATEMENT myisam_sort_buffer_size=800000 FOR OPTIMIZE TABLE t;
Table Op Msg_type Msg_text
test.t optimize status Table is already up to date
SET sql_mode=default;
+SET STATEMENT myisam_sort_buffer_size=800000 FOR OPTIMIZE TABLE t;
+Table Op Msg_type Msg_text
+test.t optimize status Table is already up to date
drop table t;
+#
+# MDEV-18358: Server crash when using SET STATEMENT max_statement_time
+#
+SET sql_mode=ORACLE;
+SET STATEMENT max_statement_time=30 FOR DELETE FROM mysql.user where user = 'unknown';
+SET sql_mode=default;
+SET STATEMENT max_statement_time=30 FOR DELETE FROM mysql.user where user = 'unknown';
diff --git a/mysql-test/main/set_statement.test b/mysql-test/main/set_statement.test
index e2a3288106b..0687644abc6 100644
--- a/mysql-test/main/set_statement.test
+++ b/mysql-test/main/set_statement.test
@@ -1135,5 +1135,14 @@ create table t (a int);
SET sql_mode=ORACLE;
SET STATEMENT myisam_sort_buffer_size=800000 FOR OPTIMIZE TABLE t;
SET sql_mode=default;
+SET STATEMENT myisam_sort_buffer_size=800000 FOR OPTIMIZE TABLE t;
drop table t;
+
+--echo #
+--echo # MDEV-18358: Server crash when using SET STATEMENT max_statement_time
+--echo #
+SET sql_mode=ORACLE;
+SET STATEMENT max_statement_time=30 FOR DELETE FROM mysql.user where user = 'unknown';
+SET sql_mode=default;
+SET STATEMENT max_statement_time=30 FOR DELETE FROM mysql.user where user = 'unknown';
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index e235a465b1a..686a9801aca 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -13727,12 +13727,11 @@ delete:
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_DELETE;
- mysql_init_select(lex);
YYPS->m_lock_type= TL_WRITE_DEFAULT;
YYPS->m_mdl_type= MDL_SHARED_WRITE;
if (Lex->main_select_push())
MYSQL_YYABORT;
-
+ mysql_init_select(lex);
lex->ignore= 0;
lex->first_select_lex()->order_list.empty();
}
diff --git a/sql/sql_yacc_ora.yy b/sql/sql_yacc_ora.yy
index 8b072632bf5..8c4c71a1f71 100644
--- a/sql/sql_yacc_ora.yy
+++ b/sql/sql_yacc_ora.yy
@@ -13775,12 +13775,11 @@ delete:
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_DELETE;
- mysql_init_select(lex);
YYPS->m_lock_type= TL_WRITE_DEFAULT;
YYPS->m_mdl_type= MDL_SHARED_WRITE;
if (Lex->main_select_push())
MYSQL_YYABORT;
-
+ mysql_init_select(lex);
lex->ignore= 0;
lex->first_select_lex()->order_list.empty();
}