diff options
author | unknown <bar@bar.mysql.r18.ru> | 2003-05-30 13:03:56 +0500 |
---|---|---|
committer | unknown <bar@bar.mysql.r18.ru> | 2003-05-30 13:03:56 +0500 |
commit | f46e958e1e0a6ca13bb94dea7064b338c5474a8d (patch) | |
tree | 7682d84ae2c4a6586327f259fdad9663290deb15 /sql/set_var.cc | |
parent | 69e084af1eedff2dda70fcf073dd4fa349718b69 (diff) | |
download | mariadb-git-f46e958e1e0a6ca13bb94dea7064b338c5474a8d.tar.gz |
character_set_server is now updatable
character_set_database was added
Code optimization: reuse more code for all character sets variables
sql/mysqld.cc:
character_set_server is now updatable
character_set_database was added
sql/set_var.cc:
character_set_server is now updatable
character_set_database was added
sql/set_var.h:
character_set_server is now updatable
character_set_database was added
sql/sql_base.cc:
character_set_server is now updatable
character_set_database was added
sql/sql_class.cc:
character_set_server is now updatable
character_set_database was added
sql/sql_class.h:
character_set_server is now updatable
character_set_database was added
sql/sql_db.cc:
character_set_server is now updatable
character_set_database was added
sql/sql_load.cc:
character_set_server is now updatable
character_set_database was added
sql/sql_table.cc:
character_set_server is now updatable
character_set_database was added
sql/sql_yacc.yy:
character_set_server is now updatable
character_set_database was added
BitKeeper/etc/ignore:
Added scripts/mysql_create_system_tables to the ignore list
Diffstat (limited to 'sql/set_var.cc')
-rw-r--r-- | sql/set_var.cc | 107 |
1 files changed, 68 insertions, 39 deletions
diff --git a/sql/set_var.cc b/sql/set_var.cc index 3145504951d..e6cdaf1d3fb 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -103,14 +103,12 @@ sys_var_long_ptr sys_binlog_cache_size("binlog_cache_size", &binlog_cache_size); sys_var_thd_ulong sys_bulk_insert_buff_size("bulk_insert_buffer_size", &SV::bulk_insert_buff_size); -sys_var_str sys_charset("character_set_server", - sys_check_charset, - sys_update_charset, - sys_set_default_charset); -sys_var_str sys_charset_system("character_set_system", +sys_var_character_set_server sys_character_set_server("character_set_server"); +sys_var_str sys_charset_system("character_set_system", sys_check_charset, sys_update_charset, sys_set_default_charset); +sys_var_character_set_database sys_character_set_database("character_set_database"); sys_var_character_set_client sys_character_set_client("character_set_client"); sys_var_character_set_results sys_character_set_results("character_set_results"); sys_var_collation_connection sys_collation_connection("collation_connection"); @@ -362,6 +360,8 @@ sys_var *sys_variables[]= &sys_binlog_cache_size, &sys_buffer_results, &sys_bulk_insert_buff_size, + &sys_character_set_server, + &sys_character_set_database, &sys_character_set_client, &sys_character_set_results, &sys_collation_connection, @@ -481,8 +481,9 @@ struct show_var_st init_vars[]= { #endif {sys_binlog_cache_size.name,(char*) &sys_binlog_cache_size, SHOW_SYS}, {sys_bulk_insert_buff_size.name,(char*) &sys_bulk_insert_buff_size,SHOW_SYS}, - {sys_charset.name, (char*) &sys_charset, SHOW_SYS}, + {sys_character_set_server.name, (char*) &sys_character_set_server,SHOW_SYS}, {sys_charset_system.name, (char*) &sys_charset_system, SHOW_SYS}, + {sys_character_set_database.name, (char*) &sys_character_set_database,SHOW_SYS}, {sys_character_set_client.name,(char*) &sys_character_set_client,SHOW_SYS}, {sys_character_set_results.name,(char*) &sys_character_set_results, SHOW_SYS}, {sys_collation_connection.name,(char*) &sys_collation_connection, SHOW_SYS}, @@ -1288,23 +1289,28 @@ bool sys_var_character_set::check(THD *thd, set_var *var) return 0; } -bool sys_var_character_set_client::update(THD *thd, set_var *var) +bool sys_var_character_set::update(THD *thd, set_var *var) { - if (var->type == OPT_GLOBAL) - global_system_variables.character_set_client= var->save_result.charset; - else - thd->variables.character_set_client= var->save_result.charset; + ci_ptr(thd,var->type)[0]= var->save_result.charset; return 0; } -byte *sys_var_character_set_client::value_ptr(THD *thd, enum_var_type type) +byte *sys_var_character_set::value_ptr(THD *thd, enum_var_type type) { - CHARSET_INFO *cs= ((type == OPT_GLOBAL) ? - global_system_variables.character_set_client : - thd->variables.character_set_client); + CHARSET_INFO *cs= ci_ptr(thd,type)[0]; return cs ? (byte*) cs->csname : (byte*) "NULL"; } + + +CHARSET_INFO ** sys_var_character_set_client::ci_ptr(THD *thd, enum_var_type type) +{ + if (type == OPT_GLOBAL) + return &global_system_variables.character_set_client; + else + return &thd->variables.character_set_client; +} + void sys_var_character_set_client::set_default(THD *thd, enum_var_type type) { if (type == OPT_GLOBAL) @@ -1313,58 +1319,81 @@ void sys_var_character_set_client::set_default(THD *thd, enum_var_type type) thd->variables.character_set_client= global_system_variables.character_set_client; } - -bool sys_var_collation_connection::update(THD *thd, set_var *var) +CHARSET_INFO ** sys_var_character_set_results::ci_ptr(THD *thd, enum_var_type type) { - if (var->type == OPT_GLOBAL) - global_system_variables.collation_connection= var->save_result.charset; + if (type == OPT_GLOBAL) + return &global_system_variables.character_set_results; else - thd->variables.collation_connection= var->save_result.charset; - return 0; + return &thd->variables.character_set_results; } -byte *sys_var_collation_connection::value_ptr(THD *thd, enum_var_type type) +void sys_var_character_set_results::set_default(THD *thd, enum_var_type type) { - CHARSET_INFO *cs= ((type == OPT_GLOBAL) ? - global_system_variables.collation_connection : - thd->variables.collation_connection); - return cs ? (byte*) cs->name : (byte*) "NULL"; + if (type == OPT_GLOBAL) + global_system_variables.character_set_results= NULL; + else + thd->variables.character_set_results= global_system_variables.character_set_results; } -void sys_var_collation_connection::set_default(THD *thd, enum_var_type type) +CHARSET_INFO ** sys_var_character_set_server::ci_ptr(THD *thd, enum_var_type type) +{ + if (type == OPT_GLOBAL) + return &global_system_variables.character_set_server; + else + return &thd->variables.character_set_server; +} + +void sys_var_character_set_server::set_default(THD *thd, enum_var_type type) { if (type == OPT_GLOBAL) - global_system_variables.collation_connection= default_charset_info; + global_system_variables.character_set_server= default_charset_info; else - thd->variables.collation_connection= global_system_variables.collation_connection; + thd->variables.character_set_server= global_system_variables.character_set_server; +} + +CHARSET_INFO ** sys_var_character_set_database::ci_ptr(THD *thd, enum_var_type type) +{ + if (type == OPT_GLOBAL) + return &global_system_variables.character_set_database; + else + return &thd->variables.character_set_database; } -bool sys_var_character_set_results::update(THD *thd, set_var *var) +void sys_var_character_set_database::set_default(THD *thd, enum_var_type type) +{ + if (type == OPT_GLOBAL) + global_system_variables.character_set_database= default_charset_info; + else + thd->variables.character_set_database= thd->db_charset; +} + +bool sys_var_collation_connection::update(THD *thd, set_var *var) { if (var->type == OPT_GLOBAL) - global_system_variables.character_set_results= var->save_result.charset; + global_system_variables.collation_connection= var->save_result.charset; else - thd->variables.character_set_results= var->save_result.charset; + thd->variables.collation_connection= var->save_result.charset; return 0; } -byte *sys_var_character_set_results::value_ptr(THD *thd, enum_var_type type) +byte *sys_var_collation_connection::value_ptr(THD *thd, enum_var_type type) { CHARSET_INFO *cs= ((type == OPT_GLOBAL) ? - global_system_variables.character_set_results : - thd->variables.character_set_results); - return cs ? (byte*) cs->csname : (byte*) "NULL"; + global_system_variables.collation_connection : + thd->variables.collation_connection); + return cs ? (byte*) cs->name : (byte*) "NULL"; } -void sys_var_character_set_results::set_default(THD *thd, enum_var_type type) +void sys_var_collation_connection::set_default(THD *thd, enum_var_type type) { if (type == OPT_GLOBAL) - global_system_variables.character_set_results= NULL; + global_system_variables.collation_connection= default_charset_info; else - thd->variables.character_set_results= global_system_variables.character_set_results; + thd->variables.collation_connection= global_system_variables.collation_connection; } + /***************************************************************************** Functions to handle SET NAMES and SET CHARACTER SET *****************************************************************************/ |