mirror of
https://github.com/MariaDB/server.git
synced 2026-05-15 03:17:20 +02:00
Bug#10413 - Invalid column name is not rejected
Stop ignoring name parts and check for validity
mysql-test/r/create.result:
Test for bug#10413
mysql-test/t/create.test:
Test for bug#10413
sql/sql_yacc.yy:
Bug#10413
Stop ignoring parts of fully qualified names.
This commit is contained in:
parent
25841aa9ad
commit
2b548fe935
3 changed files with 47 additions and 1 deletions
|
|
@ -563,3 +563,12 @@ select * from t2;
|
|||
b
|
||||
1
|
||||
drop table t1,t2;
|
||||
create table t1(column.name int);
|
||||
ERROR 42000: Incorrect table name 'column'
|
||||
create table t1(test.column.name int);
|
||||
ERROR 42000: Incorrect table name 'column'
|
||||
create table t1(xyz.t1.name int);
|
||||
ERROR 42000: Incorrect database name 'xyz'
|
||||
create table t1(t1.name int);
|
||||
create table t2(test.t2.name int);
|
||||
drop table t1,t2;
|
||||
|
|
|
|||
|
|
@ -460,3 +460,16 @@ insert into t2 values ();
|
|||
select * from t1;
|
||||
select * from t2;
|
||||
drop table t1,t2;
|
||||
|
||||
#
|
||||
# Bug#10413: Invalid column name is not rejected
|
||||
#
|
||||
--error 1103
|
||||
create table t1(column.name int);
|
||||
--error 1103
|
||||
create table t1(test.column.name int);
|
||||
--error 1102
|
||||
create table t1(xyz.t1.name int);
|
||||
create table t1(t1.name int);
|
||||
create table t2(test.t2.name int);
|
||||
drop table t1,t2;
|
||||
|
|
|
|||
|
|
@ -5016,7 +5016,31 @@ simple_ident:
|
|||
|
||||
field_ident:
|
||||
ident { $$=$1;}
|
||||
| ident '.' ident { $$=$3;} /* Skip schema name in create*/
|
||||
| ident '.' ident '.' ident
|
||||
{
|
||||
TABLE_LIST *table= (TABLE_LIST*) Select->table_list.first;
|
||||
if (my_strcasecmp(table_alias_charset, $1.str, table->db))
|
||||
{
|
||||
net_printf(YYTHD, ER_WRONG_DB_NAME, $1.str);
|
||||
YYABORT;
|
||||
}
|
||||
if (my_strcasecmp(table_alias_charset, $3.str, table->real_name))
|
||||
{
|
||||
net_printf(YYTHD, ER_WRONG_TABLE_NAME, $3.str);
|
||||
YYABORT;
|
||||
}
|
||||
$$=$5;
|
||||
}
|
||||
| ident '.' ident
|
||||
{
|
||||
TABLE_LIST *table= (TABLE_LIST*) Select->table_list.first;
|
||||
if (my_strcasecmp(table_alias_charset, $1.str, table->alias))
|
||||
{
|
||||
net_printf(YYTHD, ER_WRONG_TABLE_NAME, $1.str);
|
||||
YYABORT;
|
||||
}
|
||||
$$=$3;
|
||||
}
|
||||
| '.' ident { $$=$2;} /* For Delphi */;
|
||||
|
||||
table_ident:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue