1
0
mirror of https://github.com/MariaDB/server.git synced 2025-12-24 11:21:21 +03:00

Bug#25122: Views based on a self-joined table aren't insertable.

When INSERT is done over a view the table being inserted into is 
checked to be unique among all views tables. But if the view contains
self-joined table an error will be thrown even if all tables are used under
different aliases.

The unique_table() function now also checks tables' aliases when needed.


sql/mysql_priv.h:
  Bug#25122:  Views based on a self-joined table aren't insertable.
  Updated prototype of the unique_table() function.
sql/sql_base.cc:
  Bug#25122:  Views based on a self-joined table aren't insertable.
  Now the unique_table() function checks tables' aliases when needed.
sql/sql_delete.cc:
  Bug#25122:  Views based on a self-joined table aren't insertable.
  Updated calls to the unique_table() function.
sql/sql_insert.cc:
  Bug#25122:  Views based on a self-joined table aren't insertable.
  Updated calls to the unique_table() function.
sql/sql_load.cc:
  Bug#25122:  Views based on a self-joined table aren't insertable.
  Updated calls to the unique_table() function.
sql/sql_parse.cc:
  Bug#25122:  Views based on a self-joined table aren't insertable.
  Updated calls to the unique_table() function.
sql/sql_update.cc:
  Bug#25122:  Views based on a self-joined table aren't insertable.
  Updated calls to the unique_table() function.
This commit is contained in:
unknown
2007-03-02 00:09:22 +03:00
parent 6d537f01fd
commit 1437a9c532
7 changed files with 19 additions and 13 deletions

View File

@@ -2993,7 +2993,7 @@ mysql_execute_command(THD *thd)
if (!(create_info.options & HA_LEX_CREATE_TMP_TABLE))
{
TABLE_LIST *duplicate;
if ((duplicate= unique_table(thd, create_table, select_tables)))
if ((duplicate= unique_table(thd, create_table, select_tables, 0)))
{
update_non_unique_table_error(create_table, "CREATE", duplicate);
res= 1;
@@ -3009,7 +3009,7 @@ mysql_execute_command(THD *thd)
tab= tab->next_local)
{
TABLE_LIST *duplicate;
if ((duplicate= unique_table(thd, tab, select_tables)))
if ((duplicate= unique_table(thd, tab, select_tables, 0)))
{
update_non_unique_table_error(tab, "CREATE", duplicate);
res= 1;