mirror of
https://github.com/MariaDB/server.git
synced 2025-09-02 09:41:40 +03:00
Fix for BUG#24923: Functions with ENUM issues.
The problem was that the RETURNS column in the mysql.proc was of CHAR(64). That was not enough for storing long-named datatypes. The fix is to change CHAR(64) to LONGBLOB, and to throw warnings at the time a stored routine is created if some data is truncated during writing into mysql.proc.
This commit is contained in:
@@ -6860,4 +6860,55 @@ DROP FUNCTION f2;
|
||||
DROP VIEW v1;
|
||||
DROP VIEW v2;
|
||||
|
||||
#
|
||||
# - Bug#24923: prepare.
|
||||
#
|
||||
|
||||
DROP FUNCTION IF EXISTS f1;
|
||||
|
||||
#
|
||||
# - Bug#24923: create required objects.
|
||||
#
|
||||
|
||||
CREATE FUNCTION f1(p INT)
|
||||
RETURNS ENUM ('Very_long_enum_element_identifier',
|
||||
'Another_very_long_enum_element_identifier')
|
||||
BEGIN
|
||||
CASE p
|
||||
WHEN 1 THEN
|
||||
RETURN 'Very_long_enum_element_identifier';
|
||||
ELSE
|
||||
RETURN 'Another_very_long_enum_element_identifier';
|
||||
END CASE;
|
||||
END|
|
||||
|
||||
#
|
||||
# - Bug#24923: check.
|
||||
#
|
||||
|
||||
SELECT f1(1);
|
||||
f1(1)
|
||||
Very_long_enum_element_identifier
|
||||
|
||||
SELECT f1(2);
|
||||
f1(2)
|
||||
Another_very_long_enum_element_identifier
|
||||
|
||||
SHOW CREATE FUNCTION f1;
|
||||
Function sql_mode Create Function character_set_client collation_connection Database Collation
|
||||
f1 CREATE DEFINER=`root`@`localhost` FUNCTION `f1`(p INT) RETURNS enum('Very_long_enum_element_identifier','Another_very_long_enum_element_identifier') CHARSET latin1
|
||||
BEGIN
|
||||
CASE p
|
||||
WHEN 1 THEN
|
||||
RETURN 'Very_long_enum_element_identifier';
|
||||
ELSE
|
||||
RETURN 'Another_very_long_enum_element_identifier';
|
||||
END CASE;
|
||||
END latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
#
|
||||
# - Bug#24923: cleanup.
|
||||
#
|
||||
|
||||
DROP FUNCTION f1;
|
||||
|
||||
End of 5.1 tests
|
||||
|
@@ -7986,4 +7986,74 @@ DROP VIEW v2;
|
||||
|
||||
###########################################################################
|
||||
|
||||
#
|
||||
# Bug#24923: Functions with ENUM issues.
|
||||
#
|
||||
|
||||
###########################################################################
|
||||
|
||||
--echo #
|
||||
--echo # - Bug#24923: prepare.
|
||||
--echo #
|
||||
|
||||
--echo
|
||||
|
||||
--disable_warnings
|
||||
DROP FUNCTION IF EXISTS f1;
|
||||
--enable_warnings
|
||||
|
||||
--echo
|
||||
|
||||
--echo #
|
||||
--echo # - Bug#24923: create required objects.
|
||||
--echo #
|
||||
|
||||
--echo
|
||||
|
||||
delimiter |;
|
||||
|
||||
CREATE FUNCTION f1(p INT)
|
||||
RETURNS ENUM ('Very_long_enum_element_identifier',
|
||||
'Another_very_long_enum_element_identifier')
|
||||
BEGIN
|
||||
CASE p
|
||||
WHEN 1 THEN
|
||||
RETURN 'Very_long_enum_element_identifier';
|
||||
ELSE
|
||||
RETURN 'Another_very_long_enum_element_identifier';
|
||||
END CASE;
|
||||
END|
|
||||
|
||||
delimiter ;|
|
||||
|
||||
--echo
|
||||
|
||||
--echo #
|
||||
--echo # - Bug#24923: check.
|
||||
--echo #
|
||||
|
||||
--echo
|
||||
|
||||
SELECT f1(1);
|
||||
|
||||
--echo
|
||||
|
||||
SELECT f1(2);
|
||||
|
||||
--echo
|
||||
|
||||
SHOW CREATE FUNCTION f1;
|
||||
|
||||
--echo #
|
||||
--echo # - Bug#24923: cleanup.
|
||||
--echo #
|
||||
|
||||
--echo
|
||||
|
||||
DROP FUNCTION f1;
|
||||
|
||||
--echo
|
||||
|
||||
###########################################################################
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
Reference in New Issue
Block a user