diff options
author | unknown <bar@gw.udmsearch.izhnet.ru> | 2002-06-19 21:21:30 +0500 |
---|---|---|
committer | unknown <bar@gw.udmsearch.izhnet.ru> | 2002-06-19 21:21:30 +0500 |
commit | e38f8e8ce21bc60f508ba15b3c01f3f1be4f7eef (patch) | |
tree | 619a1993ab7447b02bc4d786f456740d2805cf67 /sql/sql_table.cc | |
parent | 2ec3617476e7731c5f6b704b0321d6be60822b2d (diff) | |
download | mariadb-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.cc | 5 |
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 & |