summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mariadb.com>2022-05-17 15:34:58 +0400
committerAlexander Barkov <bar@mariadb.com>2022-05-17 17:05:30 +0400
commitc9b5a05341d7342db5f369493ea200b5fb9db243 (patch)
tree9c9109ef4eef7ea3a01d81f738e24f03740bdd74
parent3e564d468d69b52e8e4a48af6980d40005205864 (diff)
downloadmariadb-git-c9b5a05341d7342db5f369493ea200b5fb9db243.tar.gz
MDEV-28588 SIGSEGV in __memmove_avx_unaligned_erms, strmake_root
-rw-r--r--mysql-test/suite/compat/oracle/r/sp.result18
-rw-r--r--mysql-test/suite/compat/oracle/t/sp.test23
-rw-r--r--sql/sql_lex.cc2
3 files changed, 42 insertions, 1 deletions
diff --git a/mysql-test/suite/compat/oracle/r/sp.result b/mysql-test/suite/compat/oracle/r/sp.result
index 2d4244110f9..5756db4fc5b 100644
--- a/mysql-test/suite/compat/oracle/r/sp.result
+++ b/mysql-test/suite/compat/oracle/r/sp.result
@@ -2560,3 +2560,21 @@ idx
idx
1
DROP PROCEDURE p1;
+#
+# MDEV-28588 SIGSEGV in __memmove_avx_unaligned_erms, strmake_root
+#
+SET sql_mode=ORACLE;
+BEGIN END;
+SET sql_mode=ORACLE;
+CREATE EVENT ev ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO BEGIN END;
+Warnings:
+Warning 1105 Event scheduler is switched off, use SET GLOBAL event_scheduler=ON to enable it.
+SELECT EVENT_DEFINITION FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA='test' AND EVENT_NAME='ev';
+EVENT_DEFINITION BEGIN END
+DROP EVENT ev;
+CREATE TABLE t1 (a INT);
+CREATE TRIGGER tr AFTER INSERT ON t1 FOR EACH ROW BEGIN END;
+SELECT ACTION_STATEMENT FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_SCHEMA='test' AND TRIGGER_NAME='tr';
+ACTION_STATEMENT BEGIN END
+DROP TRIGGER tr;
+DROP TABLE t1;
diff --git a/mysql-test/suite/compat/oracle/t/sp.test b/mysql-test/suite/compat/oracle/t/sp.test
index 31657aa4aef..ca99739533f 100644
--- a/mysql-test/suite/compat/oracle/t/sp.test
+++ b/mysql-test/suite/compat/oracle/t/sp.test
@@ -2397,3 +2397,26 @@ $$
DELIMITER ;$$
CALL p1();
DROP PROCEDURE p1;
+
+
+--echo #
+--echo # MDEV-28588 SIGSEGV in __memmove_avx_unaligned_erms, strmake_root
+--echo #
+
+SET sql_mode=ORACLE;
+BEGIN END;
+
+SET sql_mode=ORACLE;
+CREATE EVENT ev ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO BEGIN END;
+--vertical_results
+SELECT EVENT_DEFINITION FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA='test' AND EVENT_NAME='ev';
+--horizontal_results
+DROP EVENT ev;
+
+CREATE TABLE t1 (a INT);
+CREATE TRIGGER tr AFTER INSERT ON t1 FOR EACH ROW BEGIN END;
+--vertical_results
+SELECT ACTION_STATEMENT FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_SCHEMA='test' AND TRIGGER_NAME='tr';
+--horizontal_results
+DROP TRIGGER tr;
+DROP TABLE t1;
diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc
index f3951628513..5a00518b806 100644
--- a/sql/sql_lex.cc
+++ b/sql/sql_lex.cc
@@ -6674,7 +6674,7 @@ bool LEX::maybe_start_compound_statement(THD *thd)
if (!make_sp_head(thd, NULL, &sp_handler_procedure))
return true;
sphead->set_suid(SP_IS_NOT_SUID);
- sphead->set_body_start(thd, thd->m_parser_state->m_lip.get_cpp_ptr());
+ sphead->set_body_start(thd, thd->m_parser_state->m_lip.get_cpp_tok_start());
}
return false;
}