diff options
author | unknown <bar@bar.mysql.r18.ru> | 2003-05-21 17:44:12 +0500 |
---|---|---|
committer | unknown <bar@bar.mysql.r18.ru> | 2003-05-21 17:44:12 +0500 |
commit | 4637832fa19b2866929c1e5cb7c9dd0a40db15c9 (patch) | |
tree | c1d41d9ae86450c3c93a4424253c8553ffcec322 /sql/set_var.cc | |
parent | 01add721927cf92ec3368cb56d685777aacbfe42 (diff) | |
download | mariadb-git-4637832fa19b2866929c1e5cb7c9dd0a40db15c9.tar.gz |
Some SHOW VARIABLES have been renamed:
collation_client -> character_set_client
collation_results -> character_set_results
character_set -> character_set_server
SET NAMES now doesn't start client->server conversion
SET CHARACTER SET now starts both client->server and server->client conversion
Diffstat (limited to 'sql/set_var.cc')
-rw-r--r-- | sql/set_var.cc | 82 |
1 files changed, 50 insertions, 32 deletions
diff --git a/sql/set_var.cc b/sql/set_var.cc index c9b8584e672..a102991a0f2 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -101,7 +101,7 @@ 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", +sys_var_str sys_charset("character_set_server", sys_check_charset, sys_update_charset, sys_set_default_charset); @@ -109,9 +109,9 @@ sys_var_str sys_charset_system("character_set_system", sys_check_charset, sys_update_charset, sys_set_default_charset); -sys_var_collation_client sys_collation_client("collation_client"); +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"); -sys_var_collation_results sys_collation_results("collation_results"); sys_var_bool_ptr sys_concurrent_insert("concurrent_insert", &myisam_concurrent_insert); sys_var_long_ptr sys_connect_timeout("connect_timeout", @@ -353,9 +353,9 @@ sys_var *sys_variables[]= &sys_binlog_cache_size, &sys_buffer_results, &sys_bulk_insert_buff_size, - &sys_collation_client, + &sys_character_set_client, + &sys_character_set_results, &sys_collation_connection, - &sys_collation_results, &sys_concurrent_insert, &sys_connect_timeout, &sys_default_week_format, @@ -469,9 +469,9 @@ struct show_var_st init_vars[]= { {sys_bulk_insert_buff_size.name,(char*) &sys_bulk_insert_buff_size,SHOW_SYS}, {sys_charset.name, (char*) &sys_charset, SHOW_SYS}, {sys_charset_system.name, (char*) &sys_charset_system, SHOW_SYS}, - {sys_collation_client.name, (char*) &sys_collation_client, 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}, - {sys_collation_results.name, (char*) &sys_collation_results, SHOW_SYS}, {sys_concurrent_insert.name,(char*) &sys_concurrent_insert, SHOW_SYS}, {sys_connect_timeout.name, (char*) &sys_connect_timeout, SHOW_SYS}, {"datadir", mysql_real_data_home, SHOW_CHAR}, @@ -1207,7 +1207,7 @@ CHARSET_INFO *get_old_charset_by_name(const char *name) for (c= old_conv; c->old_name; c++) { if (!my_strcasecmp(&my_charset_latin1,name,c->old_name)) - return get_charset_by_name(c->new_name,MYF(0)); + return get_charset_by_csname(c->new_name,MY_CS_PRIMARY,MYF(0)); } return NULL; } @@ -1221,7 +1221,25 @@ bool sys_var_collation::check(THD *thd, set_var *var) if (!(res=var->value->val_str(&str))) res= &empty_string; - if (!(tmp=get_charset_by_name(res->c_ptr(),MYF(0))) && + if (!(tmp=get_charset_by_name(res->c_ptr(),MYF(0)))) + { + my_error(ER_UNKNOWN_CHARACTER_SET, MYF(0), res->c_ptr()); + return 1; + } + var->save_result.charset= tmp; // Save for update + return 0; +} + +bool sys_var_character_set::check(THD *thd, set_var *var) +{ + CHARSET_INFO *tmp; + char buff[80]; + String str(buff,sizeof(buff), system_charset_info), *res; + + if (!(res=var->value->val_str(&str))) + res= &empty_string; + + if (!(tmp=get_charset_by_csname(res->c_ptr(),MY_CS_PRIMARY,MYF(0))) && !(tmp=get_old_charset_by_name(res->c_ptr()))) { my_error(ER_UNKNOWN_CHARACTER_SET, MYF(0), res->c_ptr()); @@ -1231,29 +1249,29 @@ bool sys_var_collation::check(THD *thd, set_var *var) return 0; } -bool sys_var_collation_client::update(THD *thd, set_var *var) +bool sys_var_character_set_client::update(THD *thd, set_var *var) { if (var->type == OPT_GLOBAL) - global_system_variables.collation_client= var->save_result.charset; + global_system_variables.character_set_client= var->save_result.charset; else - thd->variables.collation_client= var->save_result.charset; + thd->variables.character_set_client= var->save_result.charset; return 0; } -byte *sys_var_collation_client::value_ptr(THD *thd, enum_var_type type) +byte *sys_var_character_set_client::value_ptr(THD *thd, enum_var_type type) { CHARSET_INFO *cs= ((type == OPT_GLOBAL) ? - global_system_variables.collation_client : - thd->variables.collation_client); - return cs ? (byte*) cs->name : (byte*) ""; + global_system_variables.character_set_client : + thd->variables.character_set_client); + return cs ? (byte*) cs->csname : (byte*) "NULL"; } -void sys_var_collation_client::set_default(THD *thd, enum_var_type type) +void sys_var_character_set_client::set_default(THD *thd, enum_var_type type) { if (type == OPT_GLOBAL) - global_system_variables.collation_client= default_charset_info; + global_system_variables.character_set_client= default_charset_info; else - thd->variables.collation_client= global_system_variables.collation_client; + thd->variables.character_set_client= global_system_variables.character_set_client; } @@ -1271,7 +1289,7 @@ byte *sys_var_collation_connection::value_ptr(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*) ""; + return cs ? (byte*) cs->name : (byte*) "NULL"; } void sys_var_collation_connection::set_default(THD *thd, enum_var_type type) @@ -1282,29 +1300,29 @@ void sys_var_collation_connection::set_default(THD *thd, enum_var_type type) thd->variables.collation_connection= global_system_variables.collation_connection; } -bool sys_var_collation_results::update(THD *thd, set_var *var) +bool sys_var_character_set_results::update(THD *thd, set_var *var) { if (var->type == OPT_GLOBAL) - global_system_variables.collation_results= var->save_result.charset; + global_system_variables.character_set_results= var->save_result.charset; else - thd->variables.collation_results= var->save_result.charset; + thd->variables.character_set_results= var->save_result.charset; return 0; } -byte *sys_var_collation_results::value_ptr(THD *thd, enum_var_type type) +byte *sys_var_character_set_results::value_ptr(THD *thd, enum_var_type type) { CHARSET_INFO *cs= ((type == OPT_GLOBAL) ? - global_system_variables.collation_results : - thd->variables.collation_results); - return cs ? (byte*) cs->name : (byte*) ""; + global_system_variables.character_set_results : + thd->variables.character_set_results); + return cs ? (byte*) cs->csname : (byte*) "NULL"; } -void sys_var_collation_results::set_default(THD *thd, enum_var_type type) +void sys_var_character_set_results::set_default(THD *thd, enum_var_type type) { if (type == OPT_GLOBAL) - global_system_variables.collation_results= default_charset_info; + global_system_variables.character_set_results= NULL; else - thd->variables.collation_results= global_system_variables.collation_results; + thd->variables.character_set_results= global_system_variables.character_set_results; } @@ -1319,9 +1337,9 @@ int set_var_collation_client::check(THD *thd) int set_var_collation_client::update(THD *thd) { - thd->variables.collation_client= collation_client; + thd->variables.character_set_client= character_set_client; + thd->variables.character_set_results= character_set_results; thd->variables.collation_connection= collation_connection; - thd->variables.collation_results= collation_results; thd->protocol_simple.init(thd); thd->protocol_prep.init(thd); return 0; |