summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <bell@sanja.is.com.ua>2003-04-05 15:17:16 +0300
committerunknown <bell@sanja.is.com.ua>2003-04-05 15:17:16 +0300
commitc801eb9703599bb35120dc1bdbbac3f4248f3674 (patch)
tree1b433e981ef0f3a402d7cbba3b4c8c9788a435d8
parent740adf718d944d581fd0869eb7aa732e74fa16bd (diff)
parenta00dbd11926b5d88e1e2b833a60274054cccd9c4 (diff)
downloadmariadb-git-c801eb9703599bb35120dc1bdbbac3f4248f3674.tar.gz
Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-4.1
into sanja.is.com.ua:/home/bell/mysql/bk/work-in-4.1 sql/sql_yacc.yy: Auto merged
-rw-r--r--sql/set_var.cc28
-rw-r--r--sql/set_var.h15
-rw-r--r--sql/sql_yacc.yy17
3 files changed, 46 insertions, 14 deletions
diff --git a/sql/set_var.cc b/sql/set_var.cc
index d0b9a2170e4..a47fdbfb63f 100644
--- a/sql/set_var.cc
+++ b/sql/set_var.cc
@@ -1655,6 +1655,34 @@ int set_var_password::update(THD *thd)
1 : 0);
}
+
+/*****************************************************************************
+ Functions to handle SET NAMES and SET CHARACTER SET
+*****************************************************************************/
+
+int set_var_client_collation::check(THD *thd)
+{
+ return 0;
+}
+
+int set_var_client_collation::update(THD *thd)
+{
+#if 0
+ if (var->type == OPT_GLOBAL)
+ global_system_variables.thd_charset= var->save_result.charset;
+ else
+#endif
+ {
+ thd->variables.thd_charset= client_collation;
+ thd->variables.convert_result_charset= convert_result_charset;
+ thd->protocol_simple.init(thd);
+ thd->protocol_prep.init(thd);
+ }
+ return 0;
+}
+
+
+
/****************************************************************************
Used templates
****************************************************************************/
diff --git a/sql/set_var.h b/sql/set_var.h
index d91b6796d20..54f773d40ff 100644
--- a/sql/set_var.h
+++ b/sql/set_var.h
@@ -526,6 +526,21 @@ public:
};
+/* For SET NAMES and SET CHARACTER SET */
+
+class set_var_client_collation: public set_var_base
+{
+ CHARSET_INFO *client_collation;
+ my_bool convert_result_charset;
+public:
+ set_var_client_collation(CHARSET_INFO *coll_arg ,my_bool conv_arg)
+ :client_collation(coll_arg), convert_result_charset(conv_arg)
+ {}
+ int check(THD *thd);
+ int update(THD *thd);
+};
+
+
/*
Prototypes for helper functions
*/
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index cad7b521c17..05ebaf89e09 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -4409,19 +4409,13 @@ option_value:
cl->name,cs->csname);
YYABORT;
}
- Item_string *csname= new Item_string(cl->name,
- strlen(cl->name),
- &my_charset_latin1);
- lex->var_list.push_back(new set_var(lex->option_type,
- find_sys_var("client_collation"),
- csname));
+ lex->var_list.push_back(new set_var_client_collation(cl,1));
}
| COLLATION_SYM collation_name_or_default
{
THD* thd= YYTHD;
LEX *lex= &thd->lex;
- system_variables *vars= &thd->variables;
- CHARSET_INFO *cs= vars->thd_charset;
+ CHARSET_INFO *cs= thd->variables.thd_charset;
CHARSET_INFO *cl= $2;
if (!cl)
@@ -4438,12 +4432,7 @@ option_value:
cl->name,cs->csname);
YYABORT;
}
- Item_string *csname= new Item_string(cl->name,
- strlen(cl->name),
- &my_charset_latin1);
- lex->var_list.push_back(new set_var(lex->option_type,
- find_sys_var("client_collation"),
- csname));
+ lex->var_list.push_back(new set_var_client_collation(cl,1));
}
| PASSWORD equal text_or_password
{