Bug #24923 | Functions with ENUM issues. | ||
---|---|---|---|
Submitted: | 8 Dec 2006 18:57 | Modified: | 23 Oct 2007 19:43 |
Reporter: | Thomas Johnson | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Stored Routines | Severity: | S3 (Non-critical) |
Version: | 5.0/5.1BK | OS: | Any |
Assigned to: | Alexander Nozdrin | CPU Architecture: | Any |
Tags: | administrator, Browser, enum, functions, procedures, showing, stop |
[8 Dec 2006 18:57]
Thomas Johnson
[8 Dec 2006 19:04]
Valeriy Kravchuk
Thank you for a problem report. Please, try to repeat with a newer version, 1.2.6 (from GUI Tools 5.0r6), and inform about the results.
[8 Dec 2006 19:30]
Thomas Johnson
I discovered it has something to do with character length of the return for ENUM. When I shrunk the Enum list down to: RETURNS ENUM('UPLOAD','SCAN','MNF','VOID','XUPLOAD','XS') Everything works. But when I chnage it to RETURNS ENUM('UPLOAD','SCAN','MNF','VOID','XUPLOAD','XSC') It stops working again. As a work Around I decided to return a varchar(10) instead of using an ENUM.
[8 Dec 2006 19:47]
Thomas Johnson
I found the "Edit All Stored Procedures" didn't work either during this time. I donwloaded and tried the r6 (v.1.2.6) of the GUI tools. They had the same results too.
[9 Dec 2006 0:47]
MySQL Verification Team
Thank you for the bug report. This is a server bug instead of GUI-Tools when the SHOW CREATE FUNCTION function_name is affected by this particular function: miguel@hegel:~/dbs/5.0> bin/mysql -uroot test Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.0.32-debug Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> select (name) from mysql.proc; Empty set (0.00 sec) mysql> DELIMITER $$ mysql> CREATE FUNCTION `ConvertStatus`(inStatus int) -> RETURNS -> ENUM('UPLOAD','SCAN','MNF','VOID','XUPLOAD','XSCAN','NOTIFY','XVOID','RECALL') -> BEGIN -> case inStatus -> when 0 then -> return 'UPLOAD'; -> when 1 then -> return 'SCAN'; -> when 2 then -> return 'MNF'; -> when 3 then -> return 'VOID'; -> when 4 then -> return 'XUPLOAD'; -> when 5 then -> return 'XSCAN'; -> when 6 then -> return 'NOTIFY'; -> when 7 then -> return 'XVOID'; -> when 8 then -> return 'RECALL'; -> end case; -> -> return null; -> END $$ Query OK, 0 rows affected (0.01 sec) mysql> mysql> DELIMITER ; mysql> select (name) from mysql.proc; +---------------+ | name | +---------------+ | ConvertStatus | +---------------+ 1 row in set (0.00 sec) mysql> select ConvertStatus(2); ERROR 1457 (HY000): Failed to load routine test.ConvertStatus. The table mysql.proc is missing, corrupt, or contains bad data (internal code -6) mysql> select (name) from mysql.proc; +---------------+ | name | +---------------+ | ConvertStatus | +---------------+ 1 row in set (0.00 sec) mysql> drop function ConvertStatus; Query OK, 0 rows affected (0.00 sec) mysql> select (name) from mysql.proc; Empty set (0.00 sec) mysql>
[8 Aug 2007 9:51]
Konstantin Osipov
mysql.proc.returns can only store 64 characters, and the data gets silently truncated when trying to create a function with RETURNS value that is longer. The fix is to: * check for truncation when storing data in mysql.proc * extend mysql.proc.returns to allow at least 65555 characters A workaround: alter table mysql.proc modify column returns varchar(65555);
[17 Oct 2007 8:13]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/35736 ChangeSet@1.2584, 2007-10-17 12:13:56+04:00, anozdrin@station. +8 -0 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.
[17 Oct 2007 8:16]
Alexander Nozdrin
Pushed into 5.1-runtime.
[17 Oct 2007 11:43]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/35747 ChangeSet@1.2585, 2007-10-17 15:44:22+04:00, anozdrin@station. +2 -0 Fix result files (BUG#24923).
[19 Oct 2007 18:53]
Bugs System
Pushed into 5.1.23-beta
[23 Oct 2007 19:43]
Paul DuBois
Noted in 5.1.23 changelog.