MDEV-3873 & MDEV-3876 & MDEV-3912 : Wrong result (extra rows) with ALL subquery

from a MERGE view.

The problem was in the lost ability to be null for the table of a left join if it
is a view/derived table.

It hapenned because setup_table_map(), was called earlier then we merged
the view or derived.

Fixed by propagating new maybe_null flag during Item::update_used_tables().

Change in join_outer.test and join_outer_jcl6.test appeared because
IS NULL reported no used tables (i.e. constant) for argument which could not be
NULL and new maybe_null flag was propagated for IS NULL argument (Item_field)
because table the Item_field belonged to changed its maybe_null status.
This commit is contained in:
unknown 2012-12-28 14:41:46 +02:00
commit 6f26aac940
20 changed files with 331 additions and 128 deletions

View file

@ -2579,6 +2579,7 @@ void Item_xml_str_func::fix_length_and_dec()
int rc;
nodeset_func= 0;
set_persist_maybe_null(1);
if (agg_arg_charsets(collation, args, arg_count, MY_COLL_CMP_CONV, 1))
return;