summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <bar@bar.mysql.r18.ru>2003-05-30 13:24:24 +0500
committerunknown <bar@bar.mysql.r18.ru>2003-05-30 13:24:24 +0500
commit677ece6612b833227977ea3cfbbff29328224b69 (patch)
tree72d4f446e6573c4219c7e10afd5b33947c944f8e /sql
parentf46e958e1e0a6ca13bb94dea7064b338c5474a8d (diff)
downloadmariadb-git-677ece6612b833227977ea3cfbbff29328224b69.tar.gz
set_var.cc, set_var.h:
character_set_connection new variable sql/set_var.h: character_set_connection new variable sql/set_var.cc: character_set_connection new variable
Diffstat (limited to 'sql')
-rw-r--r--sql/set_var.cc19
-rw-r--r--sql/set_var.h9
2 files changed, 28 insertions, 0 deletions
diff --git a/sql/set_var.cc b/sql/set_var.cc
index e6cdaf1d3fb..f1a36ae0292 100644
--- a/sql/set_var.cc
+++ b/sql/set_var.cc
@@ -110,6 +110,7 @@ sys_var_str sys_charset_system("character_set_system",
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_connection sys_character_set_connection("character_set_connection");
sys_var_character_set_results sys_character_set_results("character_set_results");
sys_var_collation_connection sys_collation_connection("collation_connection");
sys_var_bool_ptr sys_concurrent_insert("concurrent_insert",
@@ -363,6 +364,7 @@ sys_var *sys_variables[]=
&sys_character_set_server,
&sys_character_set_database,
&sys_character_set_client,
+ &sys_character_set_connection,
&sys_character_set_results,
&sys_collation_connection,
&sys_concurrent_insert,
@@ -485,6 +487,7 @@ struct show_var_st init_vars[]= {
{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_connection.name,(char*) &sys_character_set_connection,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_concurrent_insert.name,(char*) &sys_concurrent_insert, SHOW_SYS},
@@ -1302,6 +1305,22 @@ byte *sys_var_character_set::value_ptr(THD *thd, enum_var_type type)
}
+CHARSET_INFO ** sys_var_character_set_connection::ci_ptr(THD *thd, enum_var_type type)
+{
+ if (type == OPT_GLOBAL)
+ return &global_system_variables.collation_connection;
+ else
+ return &thd->variables.collation_connection;
+}
+
+void sys_var_character_set_connection::set_default(THD *thd, enum_var_type type)
+{
+ if (type == OPT_GLOBAL)
+ global_system_variables.collation_connection= default_charset_info;
+ else
+ thd->variables.collation_connection= global_system_variables.collation_connection;
+}
+
CHARSET_INFO ** sys_var_character_set_client::ci_ptr(THD *thd, enum_var_type type)
{
diff --git a/sql/set_var.h b/sql/set_var.h
index 7c1a9bc3233..785f7f7e4f8 100644
--- a/sql/set_var.h
+++ b/sql/set_var.h
@@ -483,6 +483,15 @@ public:
CHARSET_INFO **ci_ptr(THD *thd, enum_var_type type);
};
+class sys_var_character_set_connection :public sys_var_character_set
+{
+public:
+ sys_var_character_set_connection(const char *name_arg) :
+ sys_var_character_set(name_arg) {}
+ void set_default(THD *thd, enum_var_type type);
+ CHARSET_INFO **ci_ptr(THD *thd, enum_var_type type);
+};
+
class sys_var_collation_connection :public sys_var_collation
{
public: