diff options
Diffstat (limited to 'sql/sql_union.cc')
-rw-r--r-- | sql/sql_union.cc | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sql/sql_union.cc b/sql/sql_union.cc index 1cb01c6b3ef..bfaccc93906 100644 --- a/sql/sql_union.cc +++ b/sql/sql_union.cc @@ -206,6 +206,7 @@ int st_select_lex_unit::prepare(THD *thd_arg, select_result *sel_result, if (first_select->next_select()) { union_result->tmp_table_param.field_count= types.elements; + union_result->tmp_table_param.all_nulls= true; if (!(table= create_tmp_table(thd_arg, &union_result->tmp_table_param, types, (ORDER*) 0, !union_option, 1, @@ -315,6 +316,7 @@ int st_select_lex_unit::exec() if it use same tables */ uint tablenr=0; + ulong query_id= thd->query_id; for (TABLE_LIST *table_list= (TABLE_LIST*) sl->table_list.first; table_list; table_list= table_list->next, tablenr++) @@ -329,6 +331,8 @@ int st_select_lex_unit::exec() */ setup_table_map(table_list->table, table_list, tablenr); } + for (unsigned int i=0; i < table_list->table->fields; i++) + table_list->table->field[i]->query_id= query_id; } res= sl->join->optimize(); } |