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 *);