summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <ram@gw.mysql.r18.ru>2004-03-30 15:54:26 +0500
committerunknown <ram@gw.mysql.r18.ru>2004-03-30 15:54:26 +0500
commit3004dc7ef27ee96f7b1ccf2868009e035f7cff06 (patch)
treef40c4a8f46b4b5470a29fab2c987e5071fe70717
parent6c937d71530fd83c434a1e5f8dbef53a3dbd6c45 (diff)
downloadmariadb-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.cc16
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++)