diff --git a/mysql-test/r/func_misc.result b/mysql-test/r/func_misc.result index 1d9b813e68aae4dc476df0b4ba5bfe0faebbd408..5e74e6fa68ad62903567044c3141cbcc2bb62d51 100644 --- a/mysql-test/r/func_misc.result +++ b/mysql-test/r/func_misc.result @@ -51,3 +51,11 @@ select a from t1 where mid(a+0,6,3) = ( mid(20040106123400,6,3) ); a 2004-01-06 12:34:00 drop table t1; +create table t1 as select uuid(), length(uuid()); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `uuid()` varchar(36) character set utf8 NOT NULL default '', + `length(uuid())` int(10) NOT NULL default '0' +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +drop table t1; diff --git a/mysql-test/t/func_misc.test b/mysql-test/t/func_misc.test index 89aba7ee583f4b485a508d8bf9173add3ba74d12..78ff0907b391c0ba2ff3e4bd9d21d2928bac14bc 100644 --- a/mysql-test/t/func_misc.test +++ b/mysql-test/t/func_misc.test @@ -38,3 +38,11 @@ select a from t1 where mid(a+0,6,3) = ( mid(20040106123400,6,3) ); drop table t1; +# Test for BUG#9535 +create table t1 as select uuid(), length(uuid()); +show create table t1; +drop table t1; + + + + diff --git a/sql/item_strfunc.h b/sql/item_strfunc.h index d7c77829cfc2b4ea488fd3f78390c0ab4b024779..3ddf225d5934c2a3cba3c0065666b01bd1fe1bc0 100644 --- a/sql/item_strfunc.h +++ b/sql/item_strfunc.h @@ -727,7 +727,12 @@ class Item_func_uuid: public Item_str_func Item_func_uuid(): Item_str_func() {} void fix_length_and_dec() { collation.set(system_charset_info); - max_length= UUID_LENGTH; + /* + NOTE! uuid() should be changed to use 'ascii' + charset when hex(), format(), md5(), etc, and implicit + number-to-string conversion will use 'ascii' + */ + max_length= UUID_LENGTH * system_charset_info->mbmaxlen; } const char *func_name() const{ return "uuid"; } String *val_str(String *);