Details
-
Bug
-
Status: Confirmed (View Workflow)
-
Major
-
Resolution: Unresolved
-
10.5, 10.6, 10.11, 11.4, 11.8
-
None
-
MariaDB dump 10.19 Distrib 10.6.21-MariaDB, for debian-linux-gnu (x86_64)
Description
When you create a stored procedure, where the last line ends with a comment, mariadb-dump will just add ";;" after this comment.
When you execute the following statement in a JDBC-query
CREATE PROCEDURE usp_ebean_drop_column(IN p_table_name VARCHAR(255), IN p_column_name VARCHAR(255)) |
-- play-ebean-start
|
BEGIN
|
CALL usp_ebean_drop_foreign_keys(p_table_name, p_column_name);
|
SET @sql = CONCAT('ALTER TABLE `', p_table_name, '` DROP COLUMN `', p_column_name, '`'); |
PREPARE stmt FROM @sql; |
EXECUTE stmt; |
END
|
-- play-ebean-end |
a backup will get corrupt, because mariadb-dump will create the following output in the dump file:
DELIMITER ;;
|
CREATE DEFINER=`root`@`%` PROCEDURE `usp_ebean_drop_column`(IN p_table_name VARCHAR(255), IN p_column_name VARCHAR(255)) |
BEGIN
|
CALL usp_ebean_drop_foreign_keys(p_table_name, p_column_name);
|
SET @sql = CONCAT('ALTER TABLE `', p_table_name, '` DROP COLUMN `', p_column_name, '`'); |
PREPARE stmt FROM @sql; |
EXECUTE stmt; |
END
|
-- play-ebean-end ;;
|
DELIMITER ;
|
Note the --play-ebean-end ;; line. mariadb-dump just adds the ;;
The following command/options were used: mysqldump --hex-blob --routines --single-transaction --skip-extended-insert --complete-insert --no-autocommit -p testdb
We could repoduce this in our java application or just by pasting this query in Dbeeaver. Adding a newline after the comment seems not to help (seems that jdbc-driver trims the query)
We could not reproduce it with the mariadb CLI client
You may also take a look at this issue https://github.com/ebean-orm/ebean/issues/3577 where we discovered the bug and the workaround.
Workaround: don't let your procedures end with a comment.