mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Bug#48766 SHOW CREATE FUNCTION returns extra data in return clause
Problem: SHOW CREATE FUNCTION and SELECT DTD_IDENTIFIER FROM I_S.ROUTINES returned wrong values in case of ENUM return data type and UCS2 character set. Fix: the string to collect returned data type was incorrectly set to "binary" character set, therefore UCS2 values where returned with extra '\0' characters. Setting string character set to creation_ctx->get_client_cs() in sp_find_routine(), and to system_charset_info in sp_create_routine fixes the problem. Adding tests: - the original test with Latin letters - an extra test with non-Latin letters
This commit is contained in:
@ -12,3 +12,29 @@ a
|
||||
foo string
|
||||
drop function bug17615|
|
||||
drop table t3|
|
||||
SET NAMES utf8;
|
||||
DROP FUNCTION IF EXISTS bug48766;
|
||||
CREATE FUNCTION bug48766 ()
|
||||
RETURNS ENUM( 'w' ) CHARACTER SET ucs2
|
||||
RETURN 0;
|
||||
SHOW CREATE FUNCTION bug48766;
|
||||
Function sql_mode Create Function character_set_client collation_connection Database Collation
|
||||
bug48766 CREATE DEFINER=`root`@`localhost` FUNCTION `bug48766`() RETURNS enum('w') CHARSET ucs2
|
||||
RETURN 0 utf8 utf8_general_ci latin1_swedish_ci
|
||||
SELECT DTD_IDENTIFIER FROM INFORMATION_SCHEMA.ROUTINES
|
||||
WHERE ROUTINE_NAME='bug48766';
|
||||
DTD_IDENTIFIER
|
||||
enum('w') CHARSET ucs2
|
||||
DROP FUNCTION bug48766;
|
||||
CREATE FUNCTION bug48766 ()
|
||||
RETURNS ENUM('а','б','в','г') CHARACTER SET ucs2
|
||||
RETURN 0;
|
||||
SHOW CREATE FUNCTION bug48766;
|
||||
Function sql_mode Create Function character_set_client collation_connection Database Collation
|
||||
bug48766 CREATE DEFINER=`root`@`localhost` FUNCTION `bug48766`() RETURNS enum('а','б','в','г') CHARSET ucs2
|
||||
RETURN 0 utf8 utf8_general_ci latin1_swedish_ci
|
||||
SELECT DTD_IDENTIFIER FROM INFORMATION_SCHEMA.ROUTINES
|
||||
WHERE ROUTINE_NAME='bug48766';
|
||||
DTD_IDENTIFIER
|
||||
enum('а','б','в','г') CHARSET ucs2
|
||||
DROP FUNCTION bug48766;
|
||||
|
Reference in New Issue
Block a user