Skip to content

Commit 9fe3bc2

Browse files
hholzgragrooverdan
authored andcommitted
MDEV-27816 Set sql_mode before DROP IF EXISTS already
Previously the correct SQL mode for a stored routine or package was only set before doing the CREATE part, this worked out for PROCEDUREs and FUNCTIONs, but with ORACLE mode specific PACKAGEs the DROP also only works in ORACLE mode. Moving the setting of the sql_mode a few lines up to happen right before the DROP statement is writen fixes this.
1 parent 06562b8 commit 9fe3bc2

File tree

8 files changed

+102
-49
lines changed

8 files changed

+102
-49
lines changed

client/mysqldump.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2757,6 +2757,9 @@ static uint dump_routines_for_db(char *db)
27572757
create_caption_xml[i]);
27582758
continue;
27592759
}
2760+
2761+
switch_sql_mode(sql_file, ";", row[1]);
2762+
27602763
if (opt_drop)
27612764
fprintf(sql_file, "/*!50003 DROP %s IF EXISTS %s */;\n",
27622765
routine_type[i], routine_name);
@@ -2796,9 +2799,6 @@ static uint dump_routines_for_db(char *db)
27962799
"--\n");
27972800
}
27982801

2799-
2800-
switch_sql_mode(sql_file, ";", row[1]);
2801-
28022802
fprintf(sql_file,
28032803
"DELIMITER ;;\n"
28042804
"%s ;;\n"

mysql-test/main/ddl_i18n_koi8r.result

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -723,15 +723,15 @@ utf8_general_ci utf8_general_ci
723723
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysqltest1` /*!40100 DEFAULT CHARACTER SET cp866 */;
724724

725725
USE `mysqltest1`;
726+
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
727+
/*!50003 SET sql_mode = '' */ ;
726728
ALTER DATABASE `mysqltest1` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
727729
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
728730
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
729731
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
730732
/*!50003 SET character_set_client = koi8r */ ;
731733
/*!50003 SET character_set_results = koi8r */ ;
732734
/*!50003 SET collation_connection = koi8r_general_ci */ ;
733-
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
734-
/*!50003 SET sql_mode = '' */ ;
735735
DELIMITER ;;
736736
CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`(
737737
INOUT �����1 CHAR(10),
@@ -757,15 +757,15 @@ DELIMITER ;
757757
/*!50003 SET character_set_results = @saved_cs_results */ ;
758758
/*!50003 SET collation_connection = @saved_col_connection */ ;
759759
ALTER DATABASE `mysqltest1` CHARACTER SET cp866 COLLATE cp866_general_ci ;
760+
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
761+
/*!50003 SET sql_mode = '' */ ;
760762
ALTER DATABASE `mysqltest1` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
761763
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
762764
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
763765
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
764766
/*!50003 SET character_set_client = koi8r */ ;
765767
/*!50003 SET character_set_results = koi8r */ ;
766768
/*!50003 SET collation_connection = koi8r_general_ci */ ;
767-
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
768-
/*!50003 SET sql_mode = '' */ ;
769769
DELIMITER ;;
770770
CREATE DEFINER=`root`@`localhost` PROCEDURE `p2`(
771771
INOUT �����1 CHAR(10) CHARACTER SET utf8,
@@ -799,15 +799,15 @@ ALTER DATABASE `mysqltest1` CHARACTER SET cp866 COLLATE cp866_general_ci ;
799799
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysqltest2` /*!40100 DEFAULT CHARACTER SET cp866 */;
800800

801801
USE `mysqltest2`;
802+
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
803+
/*!50003 SET sql_mode = '' */ ;
802804
ALTER DATABASE `mysqltest2` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
803805
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
804806
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
805807
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
806808
/*!50003 SET character_set_client = koi8r */ ;
807809
/*!50003 SET character_set_results = koi8r */ ;
808810
/*!50003 SET collation_connection = koi8r_general_ci */ ;
809-
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
810-
/*!50003 SET sql_mode = '' */ ;
811811
DELIMITER ;;
812812
CREATE DEFINER=`root`@`localhost` PROCEDURE `p3`(
813813
INOUT �����1 CHAR(10),
@@ -833,15 +833,15 @@ DELIMITER ;
833833
/*!50003 SET character_set_results = @saved_cs_results */ ;
834834
/*!50003 SET collation_connection = @saved_col_connection */ ;
835835
ALTER DATABASE `mysqltest2` CHARACTER SET cp866 COLLATE cp866_general_ci ;
836+
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
837+
/*!50003 SET sql_mode = '' */ ;
836838
ALTER DATABASE `mysqltest2` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
837839
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
838840
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
839841
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
840842
/*!50003 SET character_set_client = koi8r */ ;
841843
/*!50003 SET character_set_results = koi8r */ ;
842844
/*!50003 SET collation_connection = koi8r_general_ci */ ;
843-
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
844-
/*!50003 SET sql_mode = '' */ ;
845845
DELIMITER ;;
846846
CREATE DEFINER=`root`@`localhost` PROCEDURE `p4`(
847847
INOUT �����1 CHAR(10) CHARACTER SET utf8,

mysql-test/main/ddl_i18n_utf8.result

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -723,15 +723,15 @@ utf8_general_ci utf8_general_ci
723723
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysqltest1` /*!40100 DEFAULT CHARACTER SET cp866 */;
724724

725725
USE `mysqltest1`;
726+
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
727+
/*!50003 SET sql_mode = '' */ ;
726728
ALTER DATABASE `mysqltest1` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
727729
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
728730
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
729731
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
730732
/*!50003 SET character_set_client = utf8 */ ;
731733
/*!50003 SET character_set_results = utf8 */ ;
732734
/*!50003 SET collation_connection = utf8_general_ci */ ;
733-
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
734-
/*!50003 SET sql_mode = '' */ ;
735735
DELIMITER ;;
736736
CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`(
737737
INOUT парам1 CHAR(10),
@@ -757,15 +757,15 @@ DELIMITER ;
757757
/*!50003 SET character_set_results = @saved_cs_results */ ;
758758
/*!50003 SET collation_connection = @saved_col_connection */ ;
759759
ALTER DATABASE `mysqltest1` CHARACTER SET cp866 COLLATE cp866_general_ci ;
760+
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
761+
/*!50003 SET sql_mode = '' */ ;
760762
ALTER DATABASE `mysqltest1` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
761763
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
762764
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
763765
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
764766
/*!50003 SET character_set_client = utf8 */ ;
765767
/*!50003 SET character_set_results = utf8 */ ;
766768
/*!50003 SET collation_connection = utf8_general_ci */ ;
767-
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
768-
/*!50003 SET sql_mode = '' */ ;
769769
DELIMITER ;;
770770
CREATE DEFINER=`root`@`localhost` PROCEDURE `p2`(
771771
INOUT парам1 CHAR(10) CHARACTER SET utf8,
@@ -799,15 +799,15 @@ ALTER DATABASE `mysqltest1` CHARACTER SET cp866 COLLATE cp866_general_ci ;
799799
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysqltest2` /*!40100 DEFAULT CHARACTER SET cp866 */;
800800

801801
USE `mysqltest2`;
802+
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
803+
/*!50003 SET sql_mode = '' */ ;
802804
ALTER DATABASE `mysqltest2` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
803805
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
804806
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
805807
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
806808
/*!50003 SET character_set_client = utf8 */ ;
807809
/*!50003 SET character_set_results = utf8 */ ;
808810
/*!50003 SET collation_connection = utf8_general_ci */ ;
809-
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
810-
/*!50003 SET sql_mode = '' */ ;
811811
DELIMITER ;;
812812
CREATE DEFINER=`root`@`localhost` PROCEDURE `p3`(
813813
INOUT парам1 CHAR(10),
@@ -833,15 +833,15 @@ DELIMITER ;
833833
/*!50003 SET character_set_results = @saved_cs_results */ ;
834834
/*!50003 SET collation_connection = @saved_col_connection */ ;
835835
ALTER DATABASE `mysqltest2` CHARACTER SET cp866 COLLATE cp866_general_ci ;
836+
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
837+
/*!50003 SET sql_mode = '' */ ;
836838
ALTER DATABASE `mysqltest2` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
837839
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
838840
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
839841
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
840842
/*!50003 SET character_set_client = utf8 */ ;
841843
/*!50003 SET character_set_results = utf8 */ ;
842844
/*!50003 SET collation_connection = utf8_general_ci */ ;
843-
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
844-
/*!50003 SET sql_mode = '' */ ;
845845
DELIMITER ;;
846846
CREATE DEFINER=`root`@`localhost` PROCEDURE `p4`(
847847
INOUT парам1 CHAR(10) CHARACTER SET utf8,

mysql-test/main/mysqldump-compat-102.result

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,15 +77,15 @@ $$
7777
--
7878
-- Dumping routines for database 'db1_mdev17429'
7979
--
80+
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
81+
/*!50003 SET sql_mode = 'PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,SIMULTANEOUS_ASSIGNMENT' */ ;
8082
/*!50003 DROP PROCEDURE IF EXISTS `p1` */;
8183
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
8284
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
8385
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
8486
/*!50003 SET character_set_client = latin1 */ ;
8587
/*!50003 SET character_set_results = latin1 */ ;
8688
/*!50003 SET collation_connection = latin1_swedish_ci */ ;
87-
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
88-
/*!50003 SET sql_mode = 'PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,SIMULTANEOUS_ASSIGNMENT' */ ;
8989
DELIMITER ;;
9090
CREATE DEFINER="root"@"localhost" PROCEDURE "p1"(a INT)
9191
AS BEGIN

mysql-test/main/mysqldump-nl.result

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,14 @@ SET character_set_client = @saved_cs_client;
6464
-- Dumping routines for database 'mysqltest1
6565
-- 1tsetlqsym'
6666
--
67+
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
68+
/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
6769
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
6870
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
6971
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
7072
/*!50003 SET character_set_client = latin1 */ ;
7173
/*!50003 SET character_set_results = latin1 */ ;
7274
/*!50003 SET collation_connection = latin1_swedish_ci */ ;
73-
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
74-
/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
7575
DELIMITER ;;
7676
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp`()
7777
select * from `v1

mysql-test/main/mysqldump.result

Lines changed: 36 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2777,15 +2777,15 @@ LOCK TABLES `t1` WRITE;
27772777
INSERT INTO `t1` VALUES (1),(2),(3),(4),(5);
27782778
/*!40000 ALTER TABLE `t1` ENABLE KEYS */;
27792779
UNLOCK TABLES;
2780+
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
2781+
/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
27802782
/*!50003 DROP FUNCTION IF EXISTS `bug9056_func1` */;
27812783
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
27822784
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
27832785
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
27842786
/*!50003 SET character_set_client = latin1 */ ;
27852787
/*!50003 SET character_set_results = latin1 */ ;
27862788
/*!50003 SET collation_connection = latin1_swedish_ci */ ;
2787-
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
2788-
/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
27892789
DELIMITER ;;
27902790
CREATE DEFINER=`root`@`localhost` FUNCTION `bug9056_func1`(a INT, b INT) RETURNS int(11)
27912791
RETURN a+b ;;
@@ -2794,15 +2794,15 @@ DELIMITER ;
27942794
/*!50003 SET character_set_client = @saved_cs_client */ ;
27952795
/*!50003 SET character_set_results = @saved_cs_results */ ;
27962796
/*!50003 SET collation_connection = @saved_col_connection */ ;
2797+
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
2798+
/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
27972799
/*!50003 DROP FUNCTION IF EXISTS `bug9056_func2` */;
27982800
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
27992801
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
28002802
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
28012803
/*!50003 SET character_set_client = latin1 */ ;
28022804
/*!50003 SET character_set_results = latin1 */ ;
28032805
/*!50003 SET collation_connection = latin1_swedish_ci */ ;
2804-
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
2805-
/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
28062806
DELIMITER ;;
28072807
CREATE DEFINER=`root`@`localhost` FUNCTION `bug9056_func2`(f1 char binary) RETURNS char(1) CHARSET latin1
28082808
begin
@@ -2814,15 +2814,15 @@ DELIMITER ;
28142814
/*!50003 SET character_set_client = @saved_cs_client */ ;
28152815
/*!50003 SET character_set_results = @saved_cs_results */ ;
28162816
/*!50003 SET collation_connection = @saved_col_connection */ ;
2817+
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
2818+
/*!50003 SET sql_mode = 'REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI' */ ;
28172819
/*!50003 DROP PROCEDURE IF EXISTS `a'b` */;
28182820
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
28192821
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
28202822
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
28212823
/*!50003 SET character_set_client = latin1 */ ;
28222824
/*!50003 SET character_set_results = latin1 */ ;
28232825
/*!50003 SET collation_connection = latin1_swedish_ci */ ;
2824-
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
2825-
/*!50003 SET sql_mode = 'REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI' */ ;
28262826
DELIMITER ;;
28272827
CREATE DEFINER="root"@"localhost" PROCEDURE "a'b"()
28282828
select 1 ;;
@@ -2831,15 +2831,15 @@ DELIMITER ;
28312831
/*!50003 SET character_set_client = @saved_cs_client */ ;
28322832
/*!50003 SET character_set_results = @saved_cs_results */ ;
28332833
/*!50003 SET collation_connection = @saved_col_connection */ ;
2834+
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
2835+
/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
28342836
/*!50003 DROP PROCEDURE IF EXISTS `bug9056_proc1` */;
28352837
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
28362838
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
28372839
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
28382840
/*!50003 SET character_set_client = latin1 */ ;
28392841
/*!50003 SET character_set_results = latin1 */ ;
28402842
/*!50003 SET collation_connection = latin1_swedish_ci */ ;
2841-
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
2842-
/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
28432843
DELIMITER ;;
28442844
CREATE DEFINER=`root`@`localhost` PROCEDURE `bug9056_proc1`(IN a INT, IN b INT, OUT c INT)
28452845
BEGIN SELECT a+b INTO c; end ;;
@@ -2848,15 +2848,15 @@ DELIMITER ;
28482848
/*!50003 SET character_set_client = @saved_cs_client */ ;
28492849
/*!50003 SET character_set_results = @saved_cs_results */ ;
28502850
/*!50003 SET collation_connection = @saved_col_connection */ ;
2851+
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
2852+
/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
28512853
/*!50003 DROP PROCEDURE IF EXISTS `bug9056_proc2` */;
28522854
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
28532855
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
28542856
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
28552857
/*!50003 SET character_set_client = latin1 */ ;
28562858
/*!50003 SET character_set_results = latin1 */ ;
28572859
/*!50003 SET collation_connection = latin1_swedish_ci */ ;
2858-
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
2859-
/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
28602860
DELIMITER ;;
28612861
CREATE DEFINER=`root`@`localhost` PROCEDURE `bug9056_proc2`(OUT a INT)
28622862
BEGIN
@@ -3852,14 +3852,14 @@ create procedure mysqldump_test_db.sp1() select 'hello';
38523852
-- insufficient privileges to SHOW CREATE PROCEDURE `sp1`
38533853
-- does user2 have permissions on mysql.proc?
38543854

3855+
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
3856+
/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
38553857
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
38563858
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
38573859
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
38583860
/*!50003 SET character_set_client = latin1 */ ;
38593861
/*!50003 SET character_set_results = latin1 */ ;
38603862
/*!50003 SET collation_connection = latin1_swedish_ci */ ;
3861-
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
3862-
/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
38633863
DELIMITER ;;
38643864
CREATE DEFINER=`user1`@`%` PROCEDURE `sp1`()
38653865
select 'hello' ;;
@@ -5427,15 +5427,15 @@ CREATE DATABASE `a\"'``b`;
54275427
USE `a\"'``b`;
54285428
CREATE PROCEDURE p1() BEGIN END;
54295429
ALTER DATABASE `a\"'``b` COLLATE utf8_general_ci;
5430+
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
5431+
/*!50003 SET sql_mode = '' */ ;
54305432
ALTER DATABASE `a\"'``b` CHARACTER SET latin1 COLLATE latin1_swedish_ci ;
54315433
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
54325434
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
54335435
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
54345436
/*!50003 SET character_set_client = utf8 */ ;
54355437
/*!50003 SET character_set_results = utf8 */ ;
54365438
/*!50003 SET collation_connection = utf8_general_ci */ ;
5437-
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
5438-
/*!50003 SET sql_mode = '' */ ;
54395439
DELIMITER ;;
54405440
CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`()
54415441
BEGIN END ;;
@@ -6328,4 +6328,26 @@ SETVAL(`seq_t_i`, 1, 0)
63286328
1
63296329
DROP DATABASE IF EXISTS test1;
63306330
DROP DATABASE IF EXISTS test2;
6331+
#
6332+
# MDEV-27186 Server fails to load a dump, taken on the same version
6333+
# Oracle mode with packages
6334+
#
6335+
CREATE DATABASE test1;
6336+
CREATE DATABASE test2;
6337+
USE test1;
6338+
SET @save_sql_mode=@@sql_mode;
6339+
SET sql_mode=ORACLE;
6340+
CREATE OR REPLACE PACKAGE pkg AS
6341+
END;
6342+
$$
6343+
# Dump database 1
6344+
# Restore from database 1 to database 2
6345+
use test2;
6346+
SHOW CREATE PACKAGE pkg;
6347+
Package sql_mode Create Package character_set_client collation_connection Database Collation
6348+
pkg PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,SIMULTANEOUS_ASSIGNMENT CREATE DEFINER="root"@"localhost" PACKAGE "pkg" AS
6349+
END utf8 utf8_general_ci latin1_swedish_ci
6350+
DROP DATABASE test1;
6351+
DROP DATABASE test2;
6352+
SET sql_mode=@save_sql_mode;
63316353
# End of 10.3 tests

mysql-test/main/mysqldump.test

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2885,4 +2885,35 @@ INSERT INTO t VALUES (1,1),(2,2),(3,3),(4,4);
28852885
DROP DATABASE IF EXISTS test1;
28862886
DROP DATABASE IF EXISTS test2;
28872887

2888+
--echo #
2889+
--echo # MDEV-27186 Server fails to load a dump, taken on the same version
2890+
--echo # Oracle mode with packages
2891+
--echo #
2892+
2893+
CREATE DATABASE test1;
2894+
CREATE DATABASE test2;
2895+
USE test1;
2896+
SET @save_sql_mode=@@sql_mode;
2897+
SET sql_mode=ORACLE;
2898+
2899+
DELIMITER $$;
2900+
CREATE OR REPLACE PACKAGE pkg AS
2901+
END;
2902+
$$
2903+
2904+
DELIMITER ;$$
2905+
2906+
--echo # Dump database 1
2907+
--exec $MYSQL_DUMP --routines test1 > $MYSQLTEST_VARDIR/tmp/dumptest1.sql
2908+
--echo # Restore from database 1 to database 2
2909+
2910+
--exec $MYSQL test2 < $MYSQLTEST_VARDIR/tmp/dumptest1.sql
2911+
use test2;
2912+
SHOW CREATE PACKAGE pkg;
2913+
2914+
DROP DATABASE test1;
2915+
DROP DATABASE test2;
2916+
SET sql_mode=@save_sql_mode;
2917+
--remove_file $MYSQLTEST_VARDIR/tmp/dumptest1.sql
2918+
28882919
--echo # End of 10.3 tests

0 commit comments

Comments
 (0)