summaryrefslogtreecommitdiff
path: root/sql/sql_derived.cc
diff options
context:
space:
mode:
authorunknown <sanja@askmonty.org>2013-09-26 21:20:15 +0300
committerunknown <sanja@askmonty.org>2013-09-26 21:20:15 +0300
commite5746665c9f8dcfa66a7a645f1c5517769a2fa0a (patch)
tree56e9d83b5ef43f93d9628c25f69b81f174d48f5c /sql/sql_derived.cc
parent828be0d9bae813d0587fbede6e02b12eebac66ca (diff)
parent9d83468e78ba23f024ce3c11443913ad75cf1ea5 (diff)
downloadmariadb-git-e5746665c9f8dcfa66a7a645f1c5517769a2fa0a.tar.gz
merge 10.0-base -> 10.0
Diffstat (limited to 'sql/sql_derived.cc')
-rw-r--r--sql/sql_derived.cc13
1 files changed, 13 insertions, 0 deletions
diff --git a/sql/sql_derived.cc b/sql/sql_derived.cc
index d9dd538f96d..9f507df3767 100644
--- a/sql/sql_derived.cc
+++ b/sql/sql_derived.cc
@@ -620,6 +620,15 @@ bool mysql_derived_prepare(THD *thd, LEX *lex, TABLE_LIST *derived)
sl->context.outer_context= 0;
// Prepare underlying views/DT first.
sl->handle_derived(lex, DT_PREPARE);
+
+ if (derived->outer_join)
+ {
+ /* Mark that table is part of OUTER JOIN and fields may be NULL */
+ for (TABLE_LIST *cursor= (TABLE_LIST*) sl->table_list.first;
+ cursor;
+ cursor= cursor->next_local)
+ cursor->outer_join|= JOIN_TYPE_OUTER;
+ }
}
unit->derived= derived;
@@ -714,6 +723,10 @@ exit:
/* Add new temporary table to list of open derived tables */
table->next= thd->derived_tables;
thd->derived_tables= table;
+
+ /* If table is used by a left join, mark that any column may be null */
+ if (derived->outer_join)
+ table->maybe_null= 1;
}
if (arena)
thd->restore_active_arena(arena, &backup);