diff options
-rw-r--r-- | mysql-test/r/func_system.result | 15 | ||||
-rw-r--r-- | mysql-test/t/func_system.test | 12 | ||||
-rw-r--r-- | sql/item_strfunc.cc | 1 |
3 files changed, 28 insertions, 0 deletions
diff --git a/mysql-test/r/func_system.result b/mysql-test/r/func_system.result index 137c25a2db5..d49da90fa28 100644 --- a/mysql-test/r/func_system.result +++ b/mysql-test/r/func_system.result @@ -68,6 +68,21 @@ drop table t1; select TRUE,FALSE,NULL; TRUE FALSE NULL 1 0 NULL +create table t1 (c1 char(5)) character set=latin1; +insert into t1 values('row 1'); +insert into t1 values('row 2'); +insert into t1 values('row 3'); +select concat(user(), '--', c1) from t1; +concat(user(), '--', c1) +root@localhost--row 1 +root@localhost--row 2 +root@localhost--row 3 +select concat(database(), '--', c1) from t1; +concat(database(), '--', c1) +test--row 1 +test--row 2 +test--row 3 +drop table t1; create table t1 (a char(10)) character set latin1; select * from t1 where a=version(); a diff --git a/mysql-test/t/func_system.test b/mysql-test/t/func_system.test index d7e215f5d48..4a526935491 100644 --- a/mysql-test/t/func_system.test +++ b/mysql-test/t/func_system.test @@ -32,6 +32,18 @@ drop table t1; select TRUE,FALSE,NULL; # +# Bug#12351: CONCAT with USER()/DATEBASE() and +# a constant and a column gets strange results +# +create table t1 (c1 char(5)) character set=latin1; +insert into t1 values('row 1'); +insert into t1 values('row 2'); +insert into t1 values('row 3'); +select concat(user(), '--', c1) from t1; +select concat(database(), '--', c1) from t1; +drop table t1; + +# # Bug#8291 Illegal collation mix with USER() function # create table t1 (a char(10)) character set latin1; diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index d316c7eaf72..7a66a57c84b 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -1550,6 +1550,7 @@ Item *Item_func_sysconst::safe_charset_converter(CHARSET_INFO *tocs) return NULL; } conv->str_value.copy(); + conv->str_value.shrink_to_length(); return conv; } |