diff options
author | unknown <ram@gw.mysql.r18.ru> | 2004-03-30 15:54:26 +0500 |
---|---|---|
committer | unknown <ram@gw.mysql.r18.ru> | 2004-03-30 15:54:26 +0500 |
commit | 3004dc7ef27ee96f7b1ccf2868009e035f7cff06 (patch) | |
tree | f40c4a8f46b4b5470a29fab2c987e5071fe70717 | |
parent | 6c937d71530fd83c434a1e5f8dbef53a3dbd6c45 (diff) | |
download | mariadb-git-3004dc7ef27ee96f7b1ccf2868009e035f7cff06.tar.gz |
An improvement of
ChangeSet
1.1707 04/03/19 12:36:55 ram@gw.mysql.r18.ru +4 -0
Fix for the bug #2976: NATURAL JOIN produces duplicate columns.
-rw-r--r-- | sql/sql_base.cc | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/sql/sql_base.cc b/sql/sql_base.cc index e7bb9a778e2..e77e65b77cc 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -2290,16 +2290,20 @@ insert_fields(THD *thd,TABLE_LIST *tables, const char *db_name, DBUG_RETURN(-1); #endif Field **ptr=table->field,*field; + TABLE *natural_join_table; thd->used_tables|=table->map; + if (table->outer_join || + !tables->natural_join || + tables->natural_join->table->outer_join) + natural_join_table= NULL; + else + natural_join_table= tables->natural_join->table; while ((field = *ptr++)) { /* Skip duplicate field names if NATURAL JOIN is used */ - if (table->outer_join || - !tables->natural_join || - tables->natural_join->table->outer_join || - !find_field_in_table(thd, tables->natural_join->table, - field->field_name, strlen(field->field_name), - 0, 0)) + if (!natural_join_table || + !find_field_in_table(thd, natural_join_table, field->field_name, + strlen(field->field_name), 0, 0)) { Item_field *item= new Item_field(field); if (!found++) |