mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +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:
@ -26,3 +26,32 @@ drop table t3|
|
||||
|
||||
|
||||
delimiter ;|
|
||||
|
||||
#
|
||||
# Bug#48766 SHOW CREATE FUNCTION returns extra data in return clause
|
||||
#
|
||||
SET NAMES utf8;
|
||||
--disable_warnings
|
||||
DROP FUNCTION IF EXISTS bug48766;
|
||||
--enable_warnings
|
||||
#
|
||||
# Test that Latin letters are not prepended with extra '\0'.
|
||||
#
|
||||
CREATE FUNCTION bug48766 ()
|
||||
RETURNS ENUM( 'w' ) CHARACTER SET ucs2
|
||||
RETURN 0;
|
||||
SHOW CREATE FUNCTION bug48766;
|
||||
SELECT DTD_IDENTIFIER FROM INFORMATION_SCHEMA.ROUTINES
|
||||
WHERE ROUTINE_NAME='bug48766';
|
||||
DROP FUNCTION bug48766;
|
||||
#
|
||||
# Test non-Latin characters
|
||||
#
|
||||
CREATE FUNCTION bug48766 ()
|
||||
RETURNS ENUM('а','б','в','г') CHARACTER SET ucs2
|
||||
RETURN 0;
|
||||
SHOW CREATE FUNCTION bug48766;
|
||||
SELECT DTD_IDENTIFIER FROM INFORMATION_SCHEMA.ROUTINES
|
||||
WHERE ROUTINE_NAME='bug48766';
|
||||
|
||||
DROP FUNCTION bug48766;
|
||||
|
Reference in New Issue
Block a user