Commit 6b6eb1ab authored by unknown's avatar unknown
Browse files

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'
    - Comitting again, the old patch seems to have been lost.


mysql-test/r/func_misc.result:
  Test results updated
mysql-test/t/func_misc.test:
  Test case
sql/item_strfunc.h:
  Multiply max_length of Item_func_uuid with system_charset_info->mbmaxlen
parent 966ab524
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -49,3 +49,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()` char(36) character set utf8 NOT NULL default '',
  `length(uuid())` int(10) NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
+5 −0
Original line number Diff line number Diff line
@@ -38,4 +38,9 @@ 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;

# End of 4.1 tests
+6 −1
Original line number Diff line number Diff line
@@ -748,7 +748,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 *);