summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <bar@bar.mysql.r18.ru>2002-10-30 13:05:27 +0400
committerunknown <bar@bar.mysql.r18.ru>2002-10-30 13:05:27 +0400
commite086000f196ac3314e736d1bb8cacccdaff8412f (patch)
tree02d07fa2fbe94da3a8fc0a957d5fd4908eeec89f
parent75dc4d5ce55fde21938ec686a9869ff549004f5a (diff)
downloadmariadb-git-e086000f196ac3314e736d1bb8cacccdaff8412f.tar.gz
Preparation to thread specific default charset
-rw-r--r--sql/sql_class.cc1
-rw-r--r--sql/sql_class.h1
-rw-r--r--sql/sql_db.cc2
-rw-r--r--sql/sql_yacc.yy4
4 files changed, 5 insertions, 3 deletions
diff --git a/sql/sql_class.cc b/sql/sql_class.cc
index 8de536d066d..887ee262777 100644
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
@@ -108,6 +108,7 @@ THD::THD():user_time(0), fatal_error(0),
file_id = 0;
cond_count=0;
db_charset=default_charset_info;
+ thd_charset=default_charset_info;
mysys_var=0;
#ifndef DBUG_OFF
dbug_sentry=THD_SENTRY_MAGIC;
diff --git a/sql/sql_class.h b/sql/sql_class.h
index e38a33f9ea7..d46826c928d 100644
--- a/sql/sql_class.h
+++ b/sql/sql_class.h
@@ -481,6 +481,7 @@ public:
table_map used_tables;
USER_CONN *user_connect;
CHARSET_INFO *db_charset;
+ CHARSET_INFO *thd_charset;
List <MYSQL_ERROR> warn_list;
uint warn_count[(uint) MYSQL_ERROR::WARN_LEVEL_END];
uint total_warn_count, old_total_warn_count;
diff --git a/sql/sql_db.cc b/sql/sql_db.cc
index 58b12bca00d..25a69f7e51b 100644
--- a/sql/sql_db.cc
+++ b/sql/sql_db.cc
@@ -592,7 +592,7 @@ bool mysql_change_db(THD *thd, const char *name)
strmov(path+unpack_dirname(path,path), MY_DB_OPT_FILE);
load_db_opt(path, &create);
thd->db_charset=create.table_charset;
-
+ thd->thd_charset=thd->db_charset ? thd->db_charset : default_charset_info;
DBUG_RETURN(0);
}
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index a3fe6dd7b79..f22a919b4c6 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -3309,13 +3309,13 @@ opt_ignore_lines:
/* Common definitions */
text_literal:
- TEXT_STRING { $$ = new Item_string($1.str,$1.length,default_charset_info); }
+ TEXT_STRING { $$ = new Item_string($1.str,$1.length,current_thd->thd_charset); }
| UNDERSCORE_CHARSET TEXT_STRING { $$ = new Item_string($2.str,$2.length,Lex->charset); }
| text_literal TEXT_STRING
{ ((Item_string*) $1)->append($2.str,$2.length); };
text_string:
- TEXT_STRING { $$= new String($1.str,$1.length,default_charset_info); }
+ TEXT_STRING { $$= new String($1.str,$1.length,current_thd->thd_charset); }
| HEX_NUM
{
Item *tmp = new Item_varbinary($1.str,$1.length);