diff options
-rw-r--r-- | mysql-test/r/variables.result | 11 | ||||
-rw-r--r-- | mysql-test/t/variables.test | 21 | ||||
-rw-r--r-- | sql/item_func.cc | 6 | ||||
-rw-r--r-- | sql/set_var.cc | 33 |
4 files changed, 55 insertions, 16 deletions
diff --git a/mysql-test/r/variables.result b/mysql-test/r/variables.result index 1d1c76ab3fe..77b3b54c861 100644 --- a/mysql-test/r/variables.result +++ b/mysql-test/r/variables.result @@ -275,7 +275,7 @@ ERROR HY000: Variable 'autocommit' is a SESSION variable and can't be used with select @@global.timestamp; ERROR HY000: Variable 'timestamp' is a SESSION variable set @@version=''; -ERROR HY000: Unknown system variable 'version' +ERROR HY000: Variable 'version' is a read only variable set @@concurrent_insert=1; ERROR HY000: Variable 'concurrent_insert' is a GLOBAL variable and should be set with SET GLOBAL set @@global.sql_auto_is_null=1; @@ -384,6 +384,7 @@ select @@sql_max_join_size,@@max_join_size; set sql_quote_show_create=1; set sql_safe_updates=1; set sql_select_limit=1; +set sql_select_limit=default; set sql_warnings=1; set global table_cache=100; set storage_engine=myisam; @@ -584,3 +585,11 @@ set @@global.character_set_filesystem=default; select @@global.character_set_filesystem; @@global.character_set_filesystem binary +select @@system_time_zone; +@@system_time_zone +# +select @@version, @@version_comment, @@version_compile_machine, +@@version_compile_os; +@@version @@version_comment @@version_compile_machine @@version_compile_os +# # # # +End of 5.0 tests diff --git a/mysql-test/t/variables.test b/mysql-test/t/variables.test index 8d8dc7896df..fde352efa7b 100644 --- a/mysql-test/t/variables.test +++ b/mysql-test/t/variables.test @@ -169,7 +169,7 @@ set collation_connection=NULL; set global autocommit=1; --error 1238 select @@global.timestamp; ---error 1193 +--error 1238 set @@version=''; --error 1229 set @@concurrent_insert=1; @@ -258,6 +258,8 @@ select @@sql_max_join_size,@@max_join_size; set sql_quote_show_create=1; set sql_safe_updates=1; set sql_select_limit=1; +# reset it, so later tests don't get confused +set sql_select_limit=default; set sql_warnings=1; set global table_cache=100; set storage_engine=myisam; @@ -472,4 +474,19 @@ select @@character_set_filesystem; set @@global.character_set_filesystem=default; select @@global.character_set_filesystem; -# End of 5.0 tests +# +# Bug #12792: @@system_time_zone is not SELECTable. +# +# Don't actually output, since it depends on the system +--replace_column 1 # +select @@system_time_zone; + +# +# Bug #15684: system variables cannot be SELECTed (e.g. @@version_comment) +# +# Don't actually output, since it depends on the system +--replace_column 1 # 2 # 3 # 4 # +select @@version, @@version_comment, @@version_compile_machine, + @@version_compile_os; + +--echo End of 5.0 tests diff --git a/sql/item_func.cc b/sql/item_func.cc index 4bdb62c6e7a..1eda622ab0d 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -4558,12 +4558,6 @@ Item *get_system_var(THD *thd, enum_var_type var_type, LEX_STRING name, sys_var *var; LEX_STRING *base_name, *component_name; - if (component.str == 0 && - !my_strcasecmp(system_charset_info, name.str, "VERSION")) - return new Item_string(NULL, server_version, - (uint) strlen(server_version), - system_charset_info, DERIVATION_SYSCONST); - if (component.str) { base_name= &component; diff --git a/sql/set_var.cc b/sql/set_var.cc index a0b60251354..907f14c0c20 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -377,6 +377,8 @@ sys_var_thd_table_type sys_table_type("table_type", sys_var_thd_storage_engine sys_storage_engine("storage_engine", &SV::table_type); sys_var_bool_ptr sys_sync_frm("sync_frm", &opt_sync_frm); +sys_var_const_str sys_system_time_zone("system_time_zone", + system_time_zone); sys_var_long_ptr sys_table_cache_size("table_cache", &table_cache_size); sys_var_long_ptr sys_table_lock_wait_timeout("table_lock_wait_timeout", @@ -391,6 +393,16 @@ sys_var_thd_ulong sys_tmp_table_size("tmp_table_size", &SV::tmp_table_size); sys_var_bool_ptr sys_timed_mutexes("timed_mutexes", &timed_mutexes); +sys_var_const_str sys_version("version", server_version); +#ifdef HAVE_BERKELEY_DB +sys_var_const_str sys_version_bdb("version_bdb", DB_VERSION_STRING); +#endif +sys_var_const_str sys_version_comment("version_comment", + MYSQL_COMPILATION_COMMENT); +sys_var_const_str sys_version_compile_machine("version_compile_machine", + MACHINE_TYPE); +sys_var_const_str sys_version_compile_os("version_compile_os", + SYSTEM_TYPE); sys_var_thd_ulong sys_net_wait_timeout("wait_timeout", &SV::net_wait_timeout); @@ -546,7 +558,6 @@ sys_var_thd_time_zone sys_time_zone("time_zone"); /* Read only variables */ -sys_var_const_str sys_os("version_compile_os", SYSTEM_TYPE); sys_var_readonly sys_have_innodb("have_innodb", OPT_GLOBAL, SHOW_CHAR, get_have_innodb); /* Global read-only variable describing server license */ @@ -698,6 +709,7 @@ sys_var *sys_variables[]= &sys_sql_notes, &sys_storage_engine, &sys_sync_frm, + &sys_system_time_zone, &sys_table_cache_size, &sys_table_lock_wait_timeout, &sys_table_type, @@ -710,7 +722,13 @@ sys_var *sys_variables[]= &sys_trans_alloc_block_size, &sys_trans_prealloc_size, &sys_tx_isolation, - &sys_os, + &sys_version, +#ifdef HAVE_BERKELEY_DB + &sys_version_bdb, +#endif + &sys_version_comment, + &sys_version_compile_machine, + &sys_version_compile_os, #ifdef HAVE_INNOBASE_DB &sys_innodb_fast_shutdown, &sys_innodb_max_dirty_pages_pct, @@ -1015,13 +1033,14 @@ struct show_var_st init_vars[]= { {sys_tx_isolation.name, (char*) &sys_tx_isolation, SHOW_SYS}, {sys_updatable_views_with_limit.name, (char*) &sys_updatable_views_with_limit,SHOW_SYS}, - {"version", server_version, SHOW_CHAR}, + {sys_version.name, (char*) &sys_version, SHOW_SYS}, #ifdef HAVE_BERKELEY_DB - {"version_bdb", (char*) DB_VERSION_STRING, SHOW_CHAR}, + {sys_version_bdb.name, (char*) &sys_version_bdb, SHOW_SYS}, #endif - {"version_comment", (char*) MYSQL_COMPILATION_COMMENT, SHOW_CHAR}, - {"version_compile_machine", (char*) MACHINE_TYPE, SHOW_CHAR}, - {sys_os.name, (char*) &sys_os, SHOW_SYS}, + {sys_version_comment.name, (char*) &sys_version_comment, SHOW_SYS}, + {sys_version_compile_machine.name, (char*) &sys_version_compile_machine, + SHOW_SYS}, + {sys_version_compile_os.name, (char*) &sys_version_compile_os, SHOW_SYS}, {sys_net_wait_timeout.name, (char*) &sys_net_wait_timeout, SHOW_SYS}, {NullS, NullS, SHOW_LONG} }; |