diff options
author | unknown <bar@mysql.com> | 2005-06-02 16:17:44 +0500 |
---|---|---|
committer | unknown <bar@mysql.com> | 2005-06-02 16:17:44 +0500 |
commit | 17678a7b885beb59fa808b7ace5cee4a0e21667d (patch) | |
tree | ba349e96ee75c58e59e1948f4216483c5713080c | |
parent | d7d3be6b16ebb63d84b39cf109153becf8f08786 (diff) | |
download | mariadb-git-17678a7b885beb59fa808b7ace5cee4a0e21667d.tar.gz |
item_func.cc:
set_var.cc:
variables.result
variables.test
Bug #10904 Illegal mix of collations between a system variable and a constant
Changing coercibility of system variables to SYSCONST,
to be the same with USER(), DATABASE(), etc.
sql/item_func.cc:
Bug #10904 Illegal mix of collations between a system variable and a constant
Changing coercibility of system variables to SYSCONST
To be the same with USER(), DATABASE(), etc.
-rw-r--r-- | mysql-test/r/variables.result | 6 | ||||
-rw-r--r-- | mysql-test/t/variables.test | 7 | ||||
-rw-r--r-- | sql/item_func.cc | 2 | ||||
-rw-r--r-- | sql/set_var.cc | 3 |
4 files changed, 16 insertions, 2 deletions
diff --git a/mysql-test/r/variables.result b/mysql-test/r/variables.result index 6d4f9055e4e..602750d5033 100644 --- a/mysql-test/r/variables.result +++ b/mysql-test/r/variables.result @@ -210,6 +210,12 @@ query_prealloc_size 8192 range_alloc_block_size 2048 transaction_alloc_block_size 8192 transaction_prealloc_size 4096 +SELECT @@version LIKE 'non-existent'; +@@version LIKE 'non-existent' +0 +SELECT @@version_compile_os LIKE 'non-existent'; +@@version_compile_os LIKE 'non-existent' +0 set big_tables=OFFF; ERROR 42000: Variable 'big_tables' can't be set to the value of 'OFFF' set big_tables="OFFF"; diff --git a/mysql-test/t/variables.test b/mysql-test/t/variables.test index 50bcc1c038c..e45218a9ed7 100644 --- a/mysql-test/t/variables.test +++ b/mysql-test/t/variables.test @@ -115,6 +115,13 @@ set @@query_alloc_block_size=default, @@query_prealloc_size=default; set transaction_alloc_block_size=default, @@transaction_prealloc_size=default; show variables like '%alloc%'; +# +# Bug #10904 Illegal mix of collations between +# a system variable and a constant +# +SELECT @@version LIKE 'non-existent'; +SELECT @@version_compile_os LIKE 'non-existent'; + # The following should give errors --error 1231 diff --git a/sql/item_func.cc b/sql/item_func.cc index 598439c60c1..ad8479c7b0b 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -3369,7 +3369,7 @@ Item *get_system_var(THD *thd, enum_var_type var_type, LEX_STRING name, !my_strcasecmp(system_charset_info, name.str, "VERSION")) return new Item_string("@@VERSION", server_version, (uint) strlen(server_version), - system_charset_info); + system_charset_info, DERIVATION_SYSCONST); Item *item; sys_var *var; diff --git a/sql/set_var.cc b/sql/set_var.cc index b006dde2b4b..5564ba096ac 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -1606,7 +1606,8 @@ Item *sys_var::item(THD *thd, enum_var_type var_type, LEX_STRING *base) Item_string *tmp; pthread_mutex_lock(&LOCK_global_system_variables); char *str= (char*) value_ptr(thd, var_type, base); - tmp= new Item_string(str, strlen(str), system_charset_info); + tmp= new Item_string(str, strlen(str), + system_charset_info, DERIVATION_SYSCONST); pthread_mutex_unlock(&LOCK_global_system_variables); return tmp; } |