mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
More different syntaxes for (1) modifying the default charaset/collation
and for (2) converting the columns: 1. ALTER TABLE t1 [DEFAULT] CHARACTER SET xxx [COLLATE yyy] 2. ALTER TABLE t1 CONVERT TO CHARACTER SET xxx [COLLATE yyy]
This commit is contained in:
@ -360,7 +360,7 @@ Table Create Table
|
|||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` char(10) character set koi8r default NULL
|
`a` char(10) character set koi8r default NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
alter table t1 CHARACTER SET latin1;
|
alter table t1 CONVERT TO CHARACTER SET latin1, DEFAULT CHARACTER SET latin1;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
@ -379,15 +379,15 @@ show create table t1;
|
|||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`myblob` longblob,
|
`myblob` longblob,
|
||||||
`mytext` longtext character set latin1 collate latin1_general_cs
|
`mytext` longtext collate latin1_general_cs
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_cs
|
||||||
alter table t1 character set latin2;
|
alter table t1 character set latin2;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`myblob` longblob,
|
`myblob` longblob,
|
||||||
`mytext` longtext character set latin2
|
`mytext` longtext character set latin1 collate latin1_general_cs
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin2
|
||||||
drop table t1;
|
drop table t1;
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
Host varchar(16) binary NOT NULL default '',
|
Host varchar(16) binary NOT NULL default '',
|
||||||
|
@ -503,8 +503,8 @@ ALTER TABLE t1 CHARACTER SET latin1 COLLATE latin1_bin;
|
|||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`latin1_f` char(32) character set latin1 collate latin1_bin default NULL
|
`latin1_f` char(32) collate latin1_bin default NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_bin
|
||||||
SHOW FIELDS FROM t1;
|
SHOW FIELDS FROM t1;
|
||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
latin1_f char(32) YES NULL
|
latin1_f char(32) YES NULL
|
||||||
|
@ -214,7 +214,7 @@ select a,hex(a) from t1;
|
|||||||
show create table t1;
|
show create table t1;
|
||||||
alter table t1 DEFAULT CHARACTER SET latin1;
|
alter table t1 DEFAULT CHARACTER SET latin1;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
alter table t1 CHARACTER SET latin1;
|
alter table t1 CONVERT TO CHARACTER SET latin1, DEFAULT CHARACTER SET latin1;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
alter table t1 DEFAULT CHARACTER SET cp1251;
|
alter table t1 DEFAULT CHARACTER SET cp1251;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
|
@ -115,6 +115,7 @@ static SYMBOL symbols[] = {
|
|||||||
{ "COMPRESSED", SYM(COMPRESSED_SYM)},
|
{ "COMPRESSED", SYM(COMPRESSED_SYM)},
|
||||||
{ "CONCURRENT", SYM(CONCURRENT)},
|
{ "CONCURRENT", SYM(CONCURRENT)},
|
||||||
{ "CONSTRAINT", SYM(CONSTRAINT)},
|
{ "CONSTRAINT", SYM(CONSTRAINT)},
|
||||||
|
{ "CONVERT", SYM(CONVERT_SYM)},
|
||||||
{ "CREATE", SYM(CREATE)},
|
{ "CREATE", SYM(CREATE)},
|
||||||
{ "CROSS", SYM(CROSS)},
|
{ "CROSS", SYM(CROSS)},
|
||||||
{ "CUBE", SYM(CUBE_SYM)},
|
{ "CUBE", SYM(CUBE_SYM)},
|
||||||
@ -493,7 +494,6 @@ static SYMBOL sql_functions[] = {
|
|||||||
{ "CONNECTION_ID", F_SYM(FUNC_ARG0),0,CREATE_FUNC(create_func_connection_id)},
|
{ "CONNECTION_ID", F_SYM(FUNC_ARG0),0,CREATE_FUNC(create_func_connection_id)},
|
||||||
{ "CONTAINS", F_SYM(FUNC_ARG2),0,CREATE_FUNC_GEOM(create_func_contains)},
|
{ "CONTAINS", F_SYM(FUNC_ARG2),0,CREATE_FUNC_GEOM(create_func_contains)},
|
||||||
{ "CONV", F_SYM(FUNC_ARG3),0,CREATE_FUNC(create_func_conv)},
|
{ "CONV", F_SYM(FUNC_ARG3),0,CREATE_FUNC(create_func_conv)},
|
||||||
{ "CONVERT", SYM(CONVERT_SYM)},
|
|
||||||
{ "COUNT", SYM(COUNT_SYM)},
|
{ "COUNT", SYM(COUNT_SYM)},
|
||||||
{ "COS", F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_cos)},
|
{ "COS", F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_cos)},
|
||||||
{ "COT", F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_cot)},
|
{ "COT", F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_cot)},
|
||||||
|
@ -1108,26 +1108,16 @@ create_table_option:
|
|||||||
table_list->next=0;
|
table_list->next=0;
|
||||||
lex->create_info.used_fields|= HA_CREATE_USED_UNION;
|
lex->create_info.used_fields|= HA_CREATE_USED_UNION;
|
||||||
}
|
}
|
||||||
| DEFAULT charset opt_equal charset_name_or_default
|
| opt_default charset opt_equal charset_name_or_default
|
||||||
{
|
{
|
||||||
Lex->create_info.default_table_charset= $4;
|
Lex->create_info.default_table_charset= $4;
|
||||||
Lex->create_info.used_fields|= HA_CREATE_USED_DEFAULT_CHARSET;
|
Lex->create_info.used_fields|= HA_CREATE_USED_DEFAULT_CHARSET;
|
||||||
}
|
}
|
||||||
| charset opt_equal charset_name_or_default
|
| opt_default COLLATE_SYM opt_equal collation_name_or_default
|
||||||
{
|
{
|
||||||
Lex->create_info.table_charset= $3;
|
Lex->create_info.default_table_charset= $4;
|
||||||
Lex->create_info.used_fields|= HA_CREATE_USED_CHARSET;
|
|
||||||
}
|
|
||||||
| DEFAULT COLLATE_SYM opt_equal collation_name_or_default
|
|
||||||
{
|
|
||||||
Lex->create_info.table_charset= $4;
|
|
||||||
Lex->create_info.used_fields|= HA_CREATE_USED_DEFAULT_CHARSET;
|
Lex->create_info.used_fields|= HA_CREATE_USED_DEFAULT_CHARSET;
|
||||||
}
|
}
|
||||||
| COLLATE_SYM opt_equal collation_name_or_default
|
|
||||||
{
|
|
||||||
Lex->create_info.table_charset= $3;
|
|
||||||
Lex->create_info.used_fields|= HA_CREATE_USED_CHARSET;
|
|
||||||
}
|
|
||||||
| INSERT_METHOD opt_equal merge_insert_types { Lex->create_info.merge_insert_method= $3; Lex->create_info.used_fields|= HA_CREATE_USED_INSERT_METHOD;}
|
| INSERT_METHOD opt_equal merge_insert_types { Lex->create_info.merge_insert_method= $3; Lex->create_info.used_fields|= HA_CREATE_USED_INSERT_METHOD;}
|
||||||
| DATA_SYM DIRECTORY_SYM opt_equal TEXT_STRING_sys
|
| DATA_SYM DIRECTORY_SYM opt_equal TEXT_STRING_sys
|
||||||
{ Lex->create_info.data_file_name= $4.str; }
|
{ Lex->create_info.data_file_name= $4.str; }
|
||||||
@ -1793,6 +1783,23 @@ alter_list_item:
|
|||||||
lex->select_lex.db=$3->db.str;
|
lex->select_lex.db=$3->db.str;
|
||||||
lex->name= $3->table.str;
|
lex->name= $3->table.str;
|
||||||
}
|
}
|
||||||
|
| CONVERT_SYM TO_SYM charset charset_name_or_default opt_collate
|
||||||
|
{
|
||||||
|
if (!$4)
|
||||||
|
{
|
||||||
|
THD *thd= YYTHD;
|
||||||
|
$4= thd->variables.collation_database;
|
||||||
|
}
|
||||||
|
$5= $5 ? $5 : $4;
|
||||||
|
if (!my_charset_same($4,$5))
|
||||||
|
{
|
||||||
|
net_printf(YYTHD,ER_COLLATION_CHARSET_MISMATCH,
|
||||||
|
$5->name,$4->csname);
|
||||||
|
YYABORT;
|
||||||
|
}
|
||||||
|
Lex->create_info.table_charset= $5;
|
||||||
|
Lex->create_info.used_fields|= HA_CREATE_USED_CHARSET;
|
||||||
|
}
|
||||||
| create_table_options_space_separated { Lex->simple_alter=0; }
|
| create_table_options_space_separated { Lex->simple_alter=0; }
|
||||||
| order_clause { Lex->simple_alter=0; };
|
| order_clause { Lex->simple_alter=0; };
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user