mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 13:32:33 +01:00
Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into rakia.(none):/home/kgeorge/mysql/autopush/B21392-5.0-opt
This commit is contained in:
commit
d99ac63820
5 changed files with 23 additions and 3 deletions
|
@ -172,6 +172,10 @@ a
|
|||
0
|
||||
2
|
||||
DROP TABLE t1;
|
||||
create table t1 (a int);
|
||||
delete `4.t1` from t1 as `4.t1` where `4.t1`.a = 5;
|
||||
delete FROM `4.t1` USING t1 as `4.t1` where `4.t1`.a = 5;
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int not null,b int not null);
|
||||
CREATE TABLE t2 (a int not null, b int not null, primary key (a,b));
|
||||
CREATE TABLE t3 (a int not null, b int not null, primary key (a,b));
|
||||
|
|
|
@ -153,6 +153,16 @@ DELETE FROM t1 WHERE t1.a > 0 ORDER BY t1.a LIMIT 1;
|
|||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #21392: multi-table delete with alias table name fails with
|
||||
# 1003: Incorrect table name
|
||||
#
|
||||
|
||||
create table t1 (a int);
|
||||
delete `4.t1` from t1 as `4.t1` where `4.t1`.a = 5;
|
||||
delete FROM `4.t1` USING t1 as `4.t1` where `4.t1`.a = 5;
|
||||
drop table t1;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
#
|
||||
|
|
|
@ -425,6 +425,7 @@ void view_store_options(THD *thd, st_table_list *table, String *buff);
|
|||
#define TL_OPTION_UPDATING 1
|
||||
#define TL_OPTION_FORCE_INDEX 2
|
||||
#define TL_OPTION_IGNORE_LEAVES 4
|
||||
#define TL_OPTION_ALIAS 8
|
||||
|
||||
/* Some portable defines */
|
||||
|
||||
|
|
|
@ -6085,6 +6085,7 @@ bool add_to_list(THD *thd, SQL_LIST &list,Item *item,bool asc)
|
|||
table_options A set of the following bits:
|
||||
TL_OPTION_UPDATING Table will be updated
|
||||
TL_OPTION_FORCE_INDEX Force usage of index
|
||||
TL_OPTION_ALIAS an alias in multi table DELETE
|
||||
lock_type How table should be locked
|
||||
use_index List of indexed used in USE INDEX
|
||||
ignore_index List of indexed used in IGNORE INDEX
|
||||
|
@ -6113,7 +6114,8 @@ TABLE_LIST *st_select_lex::add_table_to_list(THD *thd,
|
|||
if (!table)
|
||||
DBUG_RETURN(0); // End of memory
|
||||
alias_str= alias ? alias->str : table->table.str;
|
||||
if (check_table_name(table->table.str, table->table.length))
|
||||
if (!test(table_options & TL_OPTION_ALIAS) &&
|
||||
check_table_name(table->table.str, table->table.length))
|
||||
{
|
||||
my_error(ER_WRONG_TABLE_NAME, MYF(0), table->table.str);
|
||||
DBUG_RETURN(0);
|
||||
|
|
|
@ -6326,14 +6326,17 @@ table_wild_one:
|
|||
ident opt_wild opt_table_alias
|
||||
{
|
||||
if (!Select->add_table_to_list(YYTHD, new Table_ident($1), $3,
|
||||
TL_OPTION_UPDATING, Lex->lock_option))
|
||||
TL_OPTION_UPDATING |
|
||||
TL_OPTION_ALIAS, Lex->lock_option))
|
||||
YYABORT;
|
||||
}
|
||||
| ident '.' ident opt_wild opt_table_alias
|
||||
{
|
||||
if (!Select->add_table_to_list(YYTHD,
|
||||
new Table_ident(YYTHD, $1, $3, 0),
|
||||
$5, TL_OPTION_UPDATING,
|
||||
$5,
|
||||
TL_OPTION_UPDATING |
|
||||
TL_OPTION_ALIAS,
|
||||
Lex->lock_option))
|
||||
YYABORT;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue