summaryrefslogtreecommitdiff
path: root/sql/sql_table.cc
diff options
context:
space:
mode:
authorunknown <bar@gw.udmsearch.izhnet.ru>2002-06-19 21:21:30 +0500
committerunknown <bar@gw.udmsearch.izhnet.ru>2002-06-19 21:21:30 +0500
commite38f8e8ce21bc60f508ba15b3c01f3f1be4f7eef (patch)
tree619a1993ab7447b02bc4d786f456740d2805cf67 /sql/sql_table.cc
parent2ec3617476e7731c5f6b704b0321d6be60822b2d (diff)
downloadmariadb-git-e38f8e8ce21bc60f508ba15b3c01f3f1be4f7eef.tar.gz
Default table character set has been added:
CREATE TABLE a (field,...) TYPE=type CHARSET=cset; sql/handler.h: New flag to remember whether new table default charset has been passed in ALTER TABLE sql/lex.h: New language symbol sql/sql_show.cc: Display default table charset if exists sql/sql_table.cc: Check table charset before default server charset sql/sql_yacc.yy: New create table option: default table character set sql/table.cc: Table charset sql/unireg.cc: field->charset must be initialized before. So assumes it is not NULL
Diffstat (limited to 'sql/sql_table.cc')
-rw-r--r--sql/sql_table.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index f4f4dd212bd..3a6ff3d6b16 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -375,6 +375,9 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name,
sql_field->offset= pos;
if (MTYP_TYPENR(sql_field->unireg_check) == Field::NEXT_NUMBER)
auto_increment++;
+ if(!sql_field->charset)
+ sql_field->charset = create_info->table_charset ?
+ create_info->table_charset : default_charset_info;
pos+=sql_field->pack_length;
}
if (auto_increment > 1)
@@ -1645,6 +1648,8 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name,
create_info->max_rows=table->max_rows;
if (!(used_fields & HA_CREATE_USED_AVG_ROW_LENGTH))
create_info->avg_row_length=table->avg_row_length;
+ if (!(used_fields & HA_CREATE_USED_CHARSET))
+ create_info->table_charset=table->table_charset;
table->file->update_create_info(create_info);
if ((create_info->table_options &