mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Now table and database inhirited a character set from a level above at CREATE time
Some optimization to reduce rules number in sql_yacc.yy mysql-test/r/create.result: Now table and database inhirited a character set from a level above at CREATE time mysql-test/r/fulltext.result: Now table and database inhirited a character set from a level above at CREATE time mysql-test/r/innodb.result: Now table and database inhirited a character set from a level above at CREATE time mysql-test/r/merge.result: Now table and database inhirited a character set from a level above at CREATE time mysql-test/r/show_check.result: Now table and database inhirited a character set from a level above at CREATE time mysql-test/r/symlink.result: Now table and database inhirited a character set from a level above at CREATE time mysql-test/r/type_enum.result: Now table and database inhirited a character set from a level above at CREATE time mysql-test/r/type_set.result: Now table and database inhirited a character set from a level above at CREATE time sql/sql_yacc.yy: Now table and database inhirited a character set from a level above at CREATE time Some optimization to reduce rules number
This commit is contained in:
@ -150,5 +150,5 @@ t1 CREATE TABLE `t1` (
|
|||||||
KEY `b_29` (`b`),
|
KEY `b_29` (`b`),
|
||||||
KEY `b_30` (`b`),
|
KEY `b_30` (`b`),
|
||||||
KEY `b_31` (`b`)
|
KEY `b_31` (`b`)
|
||||||
) TYPE=MyISAM
|
) TYPE=MyISAM CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
@ -139,7 +139,7 @@ t2 CREATE TABLE `t2` (
|
|||||||
`inhalt` text character set latin1,
|
`inhalt` text character set latin1,
|
||||||
KEY `tig` (`ticket`),
|
KEY `tig` (`ticket`),
|
||||||
FULLTEXT KEY `tix` (`inhalt`)
|
FULLTEXT KEY `tix` (`inhalt`)
|
||||||
) TYPE=MyISAM
|
) TYPE=MyISAM CHARSET=latin1
|
||||||
select * from t2 where MATCH inhalt AGAINST (NULL);
|
select * from t2 where MATCH inhalt AGAINST (NULL);
|
||||||
ticket inhalt
|
ticket inhalt
|
||||||
select * from t2 where MATCH inhalt AGAINST ('foobar');
|
select * from t2 where MATCH inhalt AGAINST ('foobar');
|
||||||
|
@ -807,7 +807,7 @@ Table Create Table
|
|||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` char(20) character set latin1 default NULL,
|
`a` char(20) character set latin1 default NULL,
|
||||||
KEY `a` (`a`)
|
KEY `a` (`a`)
|
||||||
) TYPE=InnoDB
|
) TYPE=InnoDB CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create temporary table t1 (a int not null auto_increment, primary key(a)) type=innodb;
|
create temporary table t1 (a int not null auto_increment, primary key(a)) type=innodb;
|
||||||
insert into t1 values (NULL),(NULL),(NULL);
|
insert into t1 values (NULL),(NULL),(NULL);
|
||||||
|
@ -174,7 +174,7 @@ t3 CREATE TABLE `t3` (
|
|||||||
`a` int(11) NOT NULL default '0',
|
`a` int(11) NOT NULL default '0',
|
||||||
`b` char(20) character set latin1 default NULL,
|
`b` char(20) character set latin1 default NULL,
|
||||||
KEY `a` (`a`)
|
KEY `a` (`a`)
|
||||||
) TYPE=MRG_MyISAM UNION=(t1,t2)
|
) TYPE=MRG_MyISAM CHARSET=latin1 UNION=(t1,t2)
|
||||||
create table t4 (a int not null, b char(10), key(a)) type=MERGE UNION=(t1,t2);
|
create table t4 (a int not null, b char(10), key(a)) type=MERGE UNION=(t1,t2);
|
||||||
select * from t4;
|
select * from t4;
|
||||||
Can't open file: 't4.MRG'. (errno: 143)
|
Can't open file: 't4.MRG'. (errno: 143)
|
||||||
@ -249,14 +249,14 @@ t3 CREATE TABLE `t3` (
|
|||||||
`incr` int(11) NOT NULL default '0',
|
`incr` int(11) NOT NULL default '0',
|
||||||
`othr` int(11) NOT NULL default '0',
|
`othr` int(11) NOT NULL default '0',
|
||||||
PRIMARY KEY (`incr`)
|
PRIMARY KEY (`incr`)
|
||||||
) TYPE=MRG_MyISAM UNION=(t1,t2)
|
) TYPE=MRG_MyISAM CHARSET=latin1 UNION=(t1,t2)
|
||||||
alter table t3 drop primary key;
|
alter table t3 drop primary key;
|
||||||
show create table t3;
|
show create table t3;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t3 CREATE TABLE `t3` (
|
t3 CREATE TABLE `t3` (
|
||||||
`incr` int(11) NOT NULL default '0',
|
`incr` int(11) NOT NULL default '0',
|
||||||
`othr` int(11) NOT NULL default '0'
|
`othr` int(11) NOT NULL default '0'
|
||||||
) TYPE=MRG_MyISAM UNION=(t1,t2)
|
) TYPE=MRG_MyISAM CHARSET=latin1 UNION=(t1,t2)
|
||||||
drop table t3,t2,t1;
|
drop table t3,t2,t1;
|
||||||
create table t1 (a int not null) type=merge;
|
create table t1 (a int not null) type=merge;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
@ -287,28 +287,28 @@ t3 CREATE TABLE `t3` (
|
|||||||
`a` int(11) NOT NULL default '0',
|
`a` int(11) NOT NULL default '0',
|
||||||
`b` int(11) NOT NULL default '0',
|
`b` int(11) NOT NULL default '0',
|
||||||
KEY `a` (`a`,`b`)
|
KEY `a` (`a`,`b`)
|
||||||
) TYPE=MyISAM
|
) TYPE=MyISAM CHARSET=latin1
|
||||||
show create table t4;
|
show create table t4;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t4 CREATE TABLE `t4` (
|
t4 CREATE TABLE `t4` (
|
||||||
`a` int(11) NOT NULL default '0',
|
`a` int(11) NOT NULL default '0',
|
||||||
`b` int(11) NOT NULL default '0',
|
`b` int(11) NOT NULL default '0',
|
||||||
KEY `a` (`a`,`b`)
|
KEY `a` (`a`,`b`)
|
||||||
) TYPE=MRG_MyISAM UNION=(t1,t2)
|
) TYPE=MRG_MyISAM CHARSET=latin1 UNION=(t1,t2)
|
||||||
show create table t5;
|
show create table t5;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t5 CREATE TABLE `t5` (
|
t5 CREATE TABLE `t5` (
|
||||||
`a` int(11) NOT NULL default '0',
|
`a` int(11) NOT NULL default '0',
|
||||||
`b` int(11) NOT NULL default '0',
|
`b` int(11) NOT NULL default '0',
|
||||||
KEY `a` (`a`,`b`)
|
KEY `a` (`a`,`b`)
|
||||||
) TYPE=MRG_MyISAM INSERT_METHOD=FIRST UNION=(t1,t2)
|
) TYPE=MRG_MyISAM CHARSET=latin1 INSERT_METHOD=FIRST UNION=(t1,t2)
|
||||||
show create table t6;
|
show create table t6;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t6 CREATE TABLE `t6` (
|
t6 CREATE TABLE `t6` (
|
||||||
`a` int(11) NOT NULL default '0',
|
`a` int(11) NOT NULL default '0',
|
||||||
`b` int(11) NOT NULL default '0',
|
`b` int(11) NOT NULL default '0',
|
||||||
KEY `a` (`a`,`b`)
|
KEY `a` (`a`,`b`)
|
||||||
) TYPE=MRG_MyISAM INSERT_METHOD=LAST UNION=(t1,t2)
|
) TYPE=MRG_MyISAM CHARSET=latin1 INSERT_METHOD=LAST UNION=(t1,t2)
|
||||||
insert into t1 values (1,1),(1,2),(1,3),(1,4);
|
insert into t1 values (1,1),(1,2),(1,3),(1,4);
|
||||||
insert into t2 values (2,1),(2,2),(2,3),(2,4);
|
insert into t2 values (2,1),(2,2),(2,3),(2,4);
|
||||||
select * from t3 order by b,a limit 3;
|
select * from t3 order by b,a limit 3;
|
||||||
@ -373,7 +373,7 @@ t4 CREATE TABLE `t4` (
|
|||||||
`a` int(11) NOT NULL default '0',
|
`a` int(11) NOT NULL default '0',
|
||||||
`b` int(11) NOT NULL default '0',
|
`b` int(11) NOT NULL default '0',
|
||||||
KEY `a` (`a`,`b`)
|
KEY `a` (`a`,`b`)
|
||||||
) TYPE=MRG_MyISAM UNION=(t1,t2,t3)
|
) TYPE=MRG_MyISAM CHARSET=latin1 UNION=(t1,t2,t3)
|
||||||
select * from t4 order by a,b;
|
select * from t4 order by a,b;
|
||||||
a b
|
a b
|
||||||
1 1
|
1 1
|
||||||
@ -399,7 +399,7 @@ t4 CREATE TABLE `t4` (
|
|||||||
`a` int(11) NOT NULL default '0',
|
`a` int(11) NOT NULL default '0',
|
||||||
`b` int(11) NOT NULL default '0',
|
`b` int(11) NOT NULL default '0',
|
||||||
KEY `a` (`a`,`b`)
|
KEY `a` (`a`,`b`)
|
||||||
) TYPE=MRG_MyISAM INSERT_METHOD=FIRST UNION=(t1,t2,t3)
|
) TYPE=MRG_MyISAM CHARSET=latin1 INSERT_METHOD=FIRST UNION=(t1,t2,t3)
|
||||||
insert into t4 values (4,1),(4,2);
|
insert into t4 values (4,1),(4,2);
|
||||||
select * from t1 order by a,b;
|
select * from t1 order by a,b;
|
||||||
a b
|
a b
|
||||||
|
@ -77,13 +77,13 @@ show create table t1;
|
|||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TEMPORARY TABLE `t1` (
|
t1 CREATE TEMPORARY TABLE `t1` (
|
||||||
`a` int(11) NOT NULL default '0'
|
`a` int(11) NOT NULL default '0'
|
||||||
) TYPE=MyISAM
|
) TYPE=MyISAM CHARSET=latin1
|
||||||
alter table t1 rename t2;
|
alter table t1 rename t2;
|
||||||
show create table t2;
|
show create table t2;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t2 CREATE TEMPORARY TABLE `t2` (
|
t2 CREATE TEMPORARY TABLE `t2` (
|
||||||
`a` int(11) NOT NULL default '0'
|
`a` int(11) NOT NULL default '0'
|
||||||
) TYPE=MyISAM
|
) TYPE=MyISAM CHARSET=latin1
|
||||||
drop table t2;
|
drop table t2;
|
||||||
create table t1 (
|
create table t1 (
|
||||||
test_set set( 'val1', 'val2', 'val3' ) not null default '',
|
test_set set( 'val1', 'val2', 'val3' ) not null default '',
|
||||||
@ -96,7 +96,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
`test_set` set('val1','val2','val3') NOT NULL default '',
|
`test_set` set('val1','val2','val3') NOT NULL default '',
|
||||||
`name` char(20) character set latin1 default 'O''Brien' COMMENT 'O''Brien as default',
|
`name` char(20) character set latin1 default 'O''Brien' COMMENT 'O''Brien as default',
|
||||||
`c` int(11) NOT NULL default '0' COMMENT 'int column'
|
`c` int(11) NOT NULL default '0' COMMENT 'int column'
|
||||||
) TYPE=MyISAM COMMENT='it''s a table'
|
) TYPE=MyISAM CHARSET=latin1 COMMENT='it''s a table'
|
||||||
show full columns from t1;
|
show full columns from t1;
|
||||||
Field Type Null Key Default Extra Privileges Comment
|
Field Type Null Key Default Extra Privileges Comment
|
||||||
test_set set('val1','val2','val3') select,insert,update,references
|
test_set set('val1','val2','val3') select,insert,update,references
|
||||||
@ -109,7 +109,7 @@ Table Create Table
|
|||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` int(11) NOT NULL default '0',
|
`a` int(11) NOT NULL default '0',
|
||||||
UNIQUE KEY `aa` (`a`)
|
UNIQUE KEY `aa` (`a`)
|
||||||
) TYPE=MyISAM
|
) TYPE=MyISAM CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a int not null, primary key (a));
|
create table t1 (a int not null, primary key (a));
|
||||||
show create table t1;
|
show create table t1;
|
||||||
@ -117,7 +117,7 @@ Table Create Table
|
|||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` int(11) NOT NULL default '0',
|
`a` int(11) NOT NULL default '0',
|
||||||
PRIMARY KEY (`a`)
|
PRIMARY KEY (`a`)
|
||||||
) TYPE=MyISAM
|
) TYPE=MyISAM CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
flush tables;
|
flush tables;
|
||||||
show open tables;
|
show open tables;
|
||||||
@ -135,7 +135,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
`a` int(11) NOT NULL default '0',
|
`a` int(11) NOT NULL default '0',
|
||||||
`b` char(10) character set latin1 default NULL,
|
`b` char(10) character set latin1 default NULL,
|
||||||
KEY `b` (`b`)
|
KEY `b` (`b`)
|
||||||
) TYPE=MyISAM MIN_ROWS=10 MAX_ROWS=100 AVG_ROW_LENGTH=10 PACK_KEYS=1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=FIXED COMMENT='test'
|
) TYPE=MyISAM CHARSET=latin1 MIN_ROWS=10 MAX_ROWS=100 AVG_ROW_LENGTH=10 PACK_KEYS=1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=FIXED COMMENT='test'
|
||||||
alter table t1 MAX_ROWS=200 ROW_FORMAT=dynamic PACK_KEYS=0;
|
alter table t1 MAX_ROWS=200 ROW_FORMAT=dynamic PACK_KEYS=0;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
@ -143,7 +143,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
`a` int(11) NOT NULL default '0',
|
`a` int(11) NOT NULL default '0',
|
||||||
`b` varchar(10) character set latin1 default NULL,
|
`b` varchar(10) character set latin1 default NULL,
|
||||||
KEY `b` (`b`)
|
KEY `b` (`b`)
|
||||||
) TYPE=MyISAM MIN_ROWS=10 MAX_ROWS=200 AVG_ROW_LENGTH=10 PACK_KEYS=0 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='test'
|
) TYPE=MyISAM CHARSET=latin1 MIN_ROWS=10 MAX_ROWS=200 AVG_ROW_LENGTH=10 PACK_KEYS=0 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='test'
|
||||||
ALTER TABLE t1 AVG_ROW_LENGTH=0 CHECKSUM=0 COMMENT="" MIN_ROWS=0 MAX_ROWS=0 PACK_KEYS=DEFAULT DELAY_KEY_WRITE=0 ROW_FORMAT=default;
|
ALTER TABLE t1 AVG_ROW_LENGTH=0 CHECKSUM=0 COMMENT="" MIN_ROWS=0 MAX_ROWS=0 PACK_KEYS=DEFAULT DELAY_KEY_WRITE=0 ROW_FORMAT=default;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
@ -151,7 +151,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
`a` int(11) NOT NULL default '0',
|
`a` int(11) NOT NULL default '0',
|
||||||
`b` varchar(10) character set latin1 default NULL,
|
`b` varchar(10) character set latin1 default NULL,
|
||||||
KEY `b` (`b`)
|
KEY `b` (`b`)
|
||||||
) TYPE=MyISAM
|
) TYPE=MyISAM CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a decimal(9,2), b decimal (9,0), e double(9,2), f double(5,0), h float(3,2), i float(3,0));
|
create table t1 (a decimal(9,2), b decimal (9,0), e double(9,2), f double(5,0), h float(3,2), i float(3,0));
|
||||||
show columns from t1;
|
show columns from t1;
|
||||||
|
@ -39,7 +39,7 @@ t9 CREATE TABLE `t9` (
|
|||||||
`b` char(16) character set latin1 NOT NULL default '',
|
`b` char(16) character set latin1 NOT NULL default '',
|
||||||
`c` int(11) NOT NULL default '0',
|
`c` int(11) NOT NULL default '0',
|
||||||
PRIMARY KEY (`a`)
|
PRIMARY KEY (`a`)
|
||||||
) TYPE=MyISAM
|
) TYPE=MyISAM CHARSET=latin1
|
||||||
alter table t9 rename t8, add column d int not null;
|
alter table t9 rename t8, add column d int not null;
|
||||||
alter table t8 rename t7;
|
alter table t8 rename t7;
|
||||||
rename table t7 to t9;
|
rename table t7 to t9;
|
||||||
@ -61,5 +61,5 @@ t9 CREATE TABLE `t9` (
|
|||||||
`c` int(11) NOT NULL default '0',
|
`c` int(11) NOT NULL default '0',
|
||||||
`d` int(11) NOT NULL default '0',
|
`d` int(11) NOT NULL default '0',
|
||||||
PRIMARY KEY (`a`)
|
PRIMARY KEY (`a`)
|
||||||
) TYPE=MyISAM
|
) TYPE=MyISAM CHARSET=latin1
|
||||||
drop database test_mysqltest;
|
drop database test_mysqltest;
|
||||||
|
@ -1627,12 +1627,12 @@ show create table t1;
|
|||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` enum('','a','b') NOT NULL default ''
|
`a` enum('','a','b') NOT NULL default ''
|
||||||
) TYPE=MyISAM
|
) TYPE=MyISAM CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a enum (' ','a','b ') not null default 'b ');
|
create table t1 (a enum (' ','a','b ') not null default 'b ');
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` enum('','a','b') NOT NULL default 'b'
|
`a` enum('','a','b') NOT NULL default 'b'
|
||||||
) TYPE=MyISAM
|
) TYPE=MyISAM CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
@ -3,12 +3,12 @@ show create table t1;
|
|||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` set('','a','b') NOT NULL default ''
|
`a` set('','a','b') NOT NULL default ''
|
||||||
) TYPE=MyISAM
|
) TYPE=MyISAM CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a set (' ','a','b ') not null default 'b ');
|
create table t1 (a set (' ','a','b ') not null default 'b ');
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` set('','a','b') NOT NULL default 'b'
|
`a` set('','a','b') NOT NULL default 'b'
|
||||||
) TYPE=MyISAM
|
) TYPE=MyISAM CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
@ -67,6 +67,7 @@ inline Item *or_or_concat(Item* A, Item* B)
|
|||||||
interval_type interval;
|
interval_type interval;
|
||||||
LEX_USER *lex_user;
|
LEX_USER *lex_user;
|
||||||
enum Item_udftype udf_type;
|
enum Item_udftype udf_type;
|
||||||
|
CHARSET_INFO *charset;
|
||||||
}
|
}
|
||||||
|
|
||||||
%{
|
%{
|
||||||
@ -600,6 +601,11 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize);
|
|||||||
|
|
||||||
%type <lex_user> user grant_user
|
%type <lex_user> user grant_user
|
||||||
|
|
||||||
|
%type <charset>
|
||||||
|
charset_name
|
||||||
|
charset_name_or_default
|
||||||
|
opt_db_default_character_set
|
||||||
|
|
||||||
%type <NONE>
|
%type <NONE>
|
||||||
query verb_clause create change select do drop insert replace insert2
|
query verb_clause create change select do drop insert replace insert2
|
||||||
insert_values update delete truncate rename
|
insert_values update delete truncate rename
|
||||||
@ -758,6 +764,7 @@ master_def:
|
|||||||
create:
|
create:
|
||||||
CREATE opt_table_options TABLE_SYM opt_if_not_exists table_ident
|
CREATE opt_table_options TABLE_SYM opt_if_not_exists table_ident
|
||||||
{
|
{
|
||||||
|
THD *thd=current_thd;
|
||||||
LEX *lex=Lex;
|
LEX *lex=Lex;
|
||||||
lex->sql_command= SQLCOM_CREATE_TABLE;
|
lex->sql_command= SQLCOM_CREATE_TABLE;
|
||||||
if (!add_table_to_list($5,
|
if (!add_table_to_list($5,
|
||||||
@ -771,7 +778,7 @@ create:
|
|||||||
bzero((char*) &lex->create_info,sizeof(lex->create_info));
|
bzero((char*) &lex->create_info,sizeof(lex->create_info));
|
||||||
lex->create_info.options=$2 | $4;
|
lex->create_info.options=$2 | $4;
|
||||||
lex->create_info.db_type= default_table_type;
|
lex->create_info.db_type= default_table_type;
|
||||||
lex->create_info.table_charset=NULL;
|
lex->create_info.table_charset=thd->db_charset?thd->db_charset:default_charset_info;
|
||||||
}
|
}
|
||||||
create2
|
create2
|
||||||
|
|
||||||
@ -793,13 +800,13 @@ create:
|
|||||||
lex->key_list.push_back(new Key($2,$4.str, $5, lex->col_list));
|
lex->key_list.push_back(new Key($2,$4.str, $5, lex->col_list));
|
||||||
lex->col_list.empty();
|
lex->col_list.empty();
|
||||||
}
|
}
|
||||||
| CREATE DATABASE opt_if_not_exists ident default_charset
|
| CREATE DATABASE opt_if_not_exists ident opt_db_default_character_set
|
||||||
{
|
{
|
||||||
LEX *lex=Lex;
|
LEX *lex=Lex;
|
||||||
lex->sql_command=SQLCOM_CREATE_DB;
|
lex->sql_command=SQLCOM_CREATE_DB;
|
||||||
lex->name=$4.str;
|
lex->name=$4.str;
|
||||||
lex->create_info.options=$3;
|
lex->create_info.options=$3;
|
||||||
lex->create_info.table_charset=lex->charset;
|
lex->create_info.table_charset=$5;
|
||||||
}
|
}
|
||||||
| CREATE udf_func_type UDF_SYM ident
|
| CREATE udf_func_type UDF_SYM ident
|
||||||
{
|
{
|
||||||
@ -886,9 +893,9 @@ 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;
|
||||||
}
|
}
|
||||||
| CHARSET EQ charset_or_nocharset
|
| CHARSET EQ charset_name_or_default
|
||||||
{
|
{
|
||||||
Lex->create_info.table_charset=Lex->charset;
|
Lex->create_info.table_charset= $3;
|
||||||
Lex->create_info.used_fields|= HA_CREATE_USED_CHARSET;
|
Lex->create_info.used_fields|= HA_CREATE_USED_CHARSET;
|
||||||
}
|
}
|
||||||
| INSERT_METHOD EQ merge_insert_types { Lex->create_info.merge_insert_method= $3; Lex->create_info.used_fields|= HA_CREATE_USED_INSERT_METHOD;}
|
| INSERT_METHOD EQ merge_insert_types { Lex->create_info.merge_insert_method= $3; Lex->create_info.used_fields|= HA_CREATE_USED_INSERT_METHOD;}
|
||||||
@ -996,7 +1003,7 @@ type:
|
|||||||
$$=FIELD_TYPE_TINY; }
|
$$=FIELD_TYPE_TINY; }
|
||||||
| BOOL_SYM { Lex->length=(char*) "1";
|
| BOOL_SYM { Lex->length=(char*) "1";
|
||||||
$$=FIELD_TYPE_TINY; }
|
$$=FIELD_TYPE_TINY; }
|
||||||
| char '(' NUM ')' opt_binary { Lex->length=$3.str;
|
| char '(' NUM ')' opt_binary { Lex->length=$3.str;
|
||||||
$$=FIELD_TYPE_STRING; }
|
$$=FIELD_TYPE_STRING; }
|
||||||
| char opt_binary { Lex->length=(char*) "1";
|
| char opt_binary { Lex->length=(char*) "1";
|
||||||
$$=FIELD_TYPE_STRING; }
|
$$=FIELD_TYPE_STRING; }
|
||||||
@ -1125,28 +1132,28 @@ attribute:
|
|||||||
| UNIQUE_SYM KEY_SYM { Lex->type|= UNIQUE_KEY_FLAG; }
|
| UNIQUE_SYM KEY_SYM { Lex->type|= UNIQUE_KEY_FLAG; }
|
||||||
| COMMENT_SYM text_literal { Lex->comment= $2; };
|
| COMMENT_SYM text_literal { Lex->comment= $2; };
|
||||||
|
|
||||||
charset:
|
charset_name:
|
||||||
ident
|
ident
|
||||||
{
|
{
|
||||||
if (!(Lex->charset=get_charset_by_name($1.str,MYF(0))))
|
if (!($$=get_charset_by_name($1.str,MYF(0))))
|
||||||
{
|
{
|
||||||
net_printf(¤t_thd->net,ER_UNKNOWN_CHARACTER_SET,$1.str);
|
net_printf(¤t_thd->net,ER_UNKNOWN_CHARACTER_SET,$1.str);
|
||||||
YYABORT;
|
YYABORT;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
charset_or_nocharset:
|
charset_name_or_default:
|
||||||
charset
|
charset_name { $$=$1; }
|
||||||
| DEFAULT {Lex->charset=NULL; }
|
| DEFAULT { $$=NULL; } ;
|
||||||
|
|
||||||
|
opt_db_default_character_set:
|
||||||
|
/* empty */ { $$=default_charset_info; }
|
||||||
|
| DEFAULT CHAR_SYM SET charset_name_or_default { $$=$4; };
|
||||||
|
|
||||||
opt_binary:
|
opt_binary:
|
||||||
/* empty */ { Lex->charset=NULL; }
|
|
||||||
| BINARY { Lex->type|=BINARY_FLAG; Lex->charset=NULL; }
|
|
||||||
| CHAR_SYM SET charset {/* charset is already in Lex->charset */} ;
|
|
||||||
|
|
||||||
default_charset:
|
|
||||||
/* empty */ { Lex->charset=NULL; }
|
/* empty */ { Lex->charset=NULL; }
|
||||||
| DEFAULT CHAR_SYM SET charset_or_nocharset ;
|
| BINARY { Lex->type|=BINARY_FLAG; Lex->charset=NULL; }
|
||||||
|
| CHAR_SYM SET charset_name { Lex->charset=$3; } ;
|
||||||
|
|
||||||
references:
|
references:
|
||||||
REFERENCES table_ident
|
REFERENCES table_ident
|
||||||
@ -1247,6 +1254,7 @@ string_list:
|
|||||||
alter:
|
alter:
|
||||||
ALTER opt_ignore TABLE_SYM table_ident
|
ALTER opt_ignore TABLE_SYM table_ident
|
||||||
{
|
{
|
||||||
|
THD *thd=current_thd;
|
||||||
LEX *lex=Lex;
|
LEX *lex=Lex;
|
||||||
lex->sql_command = SQLCOM_ALTER_TABLE;
|
lex->sql_command = SQLCOM_ALTER_TABLE;
|
||||||
lex->name=0;
|
lex->name=0;
|
||||||
@ -1264,20 +1272,20 @@ alter:
|
|||||||
lex->select->db=lex->name=0;
|
lex->select->db=lex->name=0;
|
||||||
bzero((char*) &lex->create_info,sizeof(lex->create_info));
|
bzero((char*) &lex->create_info,sizeof(lex->create_info));
|
||||||
lex->create_info.db_type= DB_TYPE_DEFAULT;
|
lex->create_info.db_type= DB_TYPE_DEFAULT;
|
||||||
|
lex->create_info.table_charset=thd->db_charset?thd->db_charset:default_charset_info;
|
||||||
lex->create_info.row_type= ROW_TYPE_NOT_USED;
|
lex->create_info.row_type= ROW_TYPE_NOT_USED;
|
||||||
lex->create_info.table_charset=NULL;
|
|
||||||
lex->alter_keys_onoff=LEAVE_AS_IS;
|
lex->alter_keys_onoff=LEAVE_AS_IS;
|
||||||
lex->simple_alter=1;
|
lex->simple_alter=1;
|
||||||
}
|
}
|
||||||
alter_list;
|
alter_list;
|
||||||
|
|
||||||
| ALTER DATABASE ident default_charset
|
| ALTER DATABASE ident opt_db_default_character_set
|
||||||
{
|
{
|
||||||
LEX *lex=Lex;
|
LEX *lex=Lex;
|
||||||
lex->sql_command=SQLCOM_ALTER_DB;
|
lex->sql_command=SQLCOM_ALTER_DB;
|
||||||
lex->name=$3.str;
|
lex->name=$3.str;
|
||||||
lex->create_info.table_charset=lex->charset;
|
lex->create_info.table_charset=$4;
|
||||||
}
|
};
|
||||||
|
|
||||||
|
|
||||||
alter_list:
|
alter_list:
|
||||||
@ -1660,15 +1668,8 @@ expr_expr:
|
|||||||
{ $$= new Item_date_add_interval($1,$4,$5,0); }
|
{ $$= new Item_date_add_interval($1,$4,$5,0); }
|
||||||
| expr '-' INTERVAL_SYM expr interval
|
| expr '-' INTERVAL_SYM expr interval
|
||||||
{ $$= new Item_date_add_interval($1,$4,$5,1); }
|
{ $$= new Item_date_add_interval($1,$4,$5,1); }
|
||||||
| expr COLLATE_SYM ident
|
| expr COLLATE_SYM charset_name
|
||||||
{
|
{ $$= new Item_func_set_collation($1,$3); };
|
||||||
if (!(Lex->charset=get_charset_by_name($3.str,MYF(0))))
|
|
||||||
{
|
|
||||||
net_printf(¤t_thd->net,ER_UNKNOWN_CHARACTER_SET,$3.str);
|
|
||||||
YYABORT;
|
|
||||||
}
|
|
||||||
$$= new Item_func_set_collation($1,Lex->charset);
|
|
||||||
};
|
|
||||||
|
|
||||||
/* expressions that begin with 'expr' that do NOT follow IN_SYM */
|
/* expressions that begin with 'expr' that do NOT follow IN_SYM */
|
||||||
no_in_expr:
|
no_in_expr:
|
||||||
@ -1783,12 +1784,10 @@ simple_expr:
|
|||||||
| CASE_SYM opt_expr WHEN_SYM when_list opt_else END
|
| CASE_SYM opt_expr WHEN_SYM when_list opt_else END
|
||||||
{ $$= new Item_func_case(* $4, $2, $5 ); }
|
{ $$= new Item_func_case(* $4, $2, $5 ); }
|
||||||
| CONVERT_SYM '(' expr ',' cast_type ')' { $$= create_func_cast($3, $5); }
|
| CONVERT_SYM '(' expr ',' cast_type ')' { $$= create_func_cast($3, $5); }
|
||||||
| CONVERT_SYM '(' expr USING charset ')'
|
| CONVERT_SYM '(' expr USING charset_name ')'
|
||||||
{ $$= new Item_func_conv_charset($3,Lex->charset); }
|
{ $$= new Item_func_conv_charset($3,$5); }
|
||||||
| CONVERT_SYM '(' expr ',' expr ',' expr ')'
|
| CONVERT_SYM '(' expr ',' expr ',' expr ')'
|
||||||
{
|
{ $$= new Item_func_conv_charset3($3,$7,$5); }
|
||||||
$$= new Item_func_conv_charset3($3,$7,$5);
|
|
||||||
}
|
|
||||||
| FUNC_ARG0 '(' ')'
|
| FUNC_ARG0 '(' ')'
|
||||||
{ $$= ((Item*(*)(void))($1.symbol->create_func))();}
|
{ $$= ((Item*(*)(void))($1.symbol->create_func))();}
|
||||||
| FUNC_ARG1 '(' expr ')'
|
| FUNC_ARG1 '(' expr ')'
|
||||||
|
Reference in New Issue
Block a user