summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <msvensson@neptunus.(none)>2005-12-07 15:45:31 +0100
committerunknown <msvensson@neptunus.(none)>2005-12-07 15:45:31 +0100
commit6b6eb1aba4189df75367a4beb56368c4961880e3 (patch)
tree776b6cfc2952db07d3fcd85e5fd5058eecef6ec2
parent966ab524a336bb22088d4adbb7db7a090762551e (diff)
downloadmariadb-git-6b6eb1aba4189df75367a4beb56368c4961880e3.tar.gz
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
-rw-r--r--mysql-test/r/func_misc.result8
-rw-r--r--mysql-test/t/func_misc.test5
-rw-r--r--sql/item_strfunc.h7
3 files changed, 19 insertions, 1 deletions
diff --git a/mysql-test/r/func_misc.result b/mysql-test/r/func_misc.result
index 2d464c891bf..181ecf7b65b 100644
--- a/mysql-test/r/func_misc.result
+++ b/mysql-test/r/func_misc.result
@@ -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;
diff --git a/mysql-test/t/func_misc.test b/mysql-test/t/func_misc.test
index 72af9024070..87d9d601c87 100644
--- a/mysql-test/t/func_misc.test
+++ b/mysql-test/t/func_misc.test
@@ -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
diff --git a/sql/item_strfunc.h b/sql/item_strfunc.h
index c4505fce248..89bab4a909c 100644
--- a/sql/item_strfunc.h
+++ b/sql/item_strfunc.h
@@ -748,7 +748,12 @@ public:
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 *);