@@ -1973,6 +1973,9 @@ public function create_function($row)
19731973 "Please check 'https://bugs.mysql.com/bug.php?id=14564' " );
19741974 }
19751975 $ functionStmt = $ row ['Create Function ' ];
1976+ $ characterSetClient = $ row ['character_set_client ' ];
1977+ $ collationConnection = $ row ['collation_connection ' ];
1978+ $ sqlMode = $ row ['sql_mode ' ];
19761979 if ( $ this ->dumpSettings ['skip-definer ' ] ) {
19771980 if ($ functionStmtReplaced = preg_replace (
19781981 '/^(CREATE)\s+( ' .self ::DEFINER_RE .')?\s+(FUNCTION\s.*)$/s ' ,
@@ -1987,11 +1990,24 @@ public function create_function($row)
19871990 $ ret .= "/*!50003 DROP FUNCTION IF EXISTS ` " .
19881991 $ row ['Function ' ]."` */; " .PHP_EOL .
19891992 "/*!40101 SET @saved_cs_client = @@character_set_client */; " .PHP_EOL .
1990- "/*!40101 SET character_set_client = " .$ this ->dumpSettings ['default-character-set ' ]." */; " .PHP_EOL .
1993+ "/*!50003 SET @saved_cs_results = @@character_set_results */ ; " .PHP_EOL .
1994+ "/*!50003 SET @saved_col_connection = @@collation_connection */ ; " .PHP_EOL .
1995+ "/*!40101 SET character_set_client = " .$ characterSetClient ." */; " .PHP_EOL .
1996+ "/*!40101 SET character_set_results = " .$ characterSetClient ." */; " .PHP_EOL .
1997+ "/*!50003 SET collation_connection = " .$ collationConnection ." */ ; " .PHP_EOL .
1998+ "/*!50003 SET @saved_sql_mode = @@sql_mode */ ;; " .PHP_EOL .
1999+ "/*!50003 SET sql_mode = ' " .$ sqlMode ."' */ ;; " .PHP_EOL .
2000+ "/*!50003 SET @saved_time_zone = @@time_zone */ ;; " .PHP_EOL .
2001+ "/*!50003 SET time_zone = 'SYSTEM' */ ;; " .PHP_EOL .
19912002 "DELIMITER ;; " .PHP_EOL .
19922003 $ functionStmt ." ;; " .PHP_EOL .
19932004 "DELIMITER ; " .PHP_EOL .
1994- "/*!40101 SET character_set_client = @saved_cs_client */; " .PHP_EOL .PHP_EOL ;
2005+ "/*!50003 SET sql_mode = @saved_sql_mode */ ; " .PHP_EOL .
2006+ "/*!50003 SET character_set_client = @saved_cs_client */ ; " .PHP_EOL .
2007+ "/*!50003 SET character_set_results = @saved_cs_results */ ; " .PHP_EOL .
2008+ "/*!50003 SET collation_connection = @saved_col_connection */ ; " .PHP_EOL .
2009+ "/*!50106 SET TIME_ZONE= @saved_time_zone */ ; " .PHP_EOL .PHP_EOL ;
2010+
19952011
19962012 return $ ret ;
19972013 }
0 commit comments