BUG#9535 Warning for "create table t as select uuid();"

 - Set max_length of Item_func_uuid to max_length*system_charset_info->mbmaxlen
  Note! Item_func_uuid should be set to use 'ascii' charset when hex(), format(), md5() etc will use 'ascii'
parent 8d12a8b1
...@@ -51,3 +51,11 @@ select a from t1 where mid(a+0,6,3) = ( mid(20040106123400,6,3) ); ...@@ -51,3 +51,11 @@ select a from t1 where mid(a+0,6,3) = ( mid(20040106123400,6,3) );
a a
2004-01-06 12:34:00 2004-01-06 12:34:00
drop table t1; 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;
...@@ -38,3 +38,11 @@ select a from t1 where mid(a+0,6,3) = ( mid(20040106123400,6,3) ); ...@@ -38,3 +38,11 @@ select a from t1 where mid(a+0,6,3) = ( mid(20040106123400,6,3) );
drop table t1; drop table t1;
# Test for BUG#9535
create table t1 as select uuid(), length(uuid());
show create table t1;
drop table t1;
...@@ -727,7 +727,12 @@ public: ...@@ -727,7 +727,12 @@ public:
Item_func_uuid(): Item_str_func() {} Item_func_uuid(): Item_str_func() {}
void fix_length_and_dec() { void fix_length_and_dec() {
collation.set(system_charset_info); 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"; } const char *func_name() const{ return "uuid"; }
String *val_str(String *); String *val_str(String *);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment