-
Roy Lyseng authored
The problem here is that we try to evaluate a subquery from the resolver. Item_is_not_null_test::update_used_tables() attempts to call is_null() on its argument because with_subselect is erroneously false. This field is wrongly updated because Item_func_make_set::update_used_tables() has a bad propagation of with_subselect: It first calls Item_func::update_used_tables() to update data for each arguments, then it calls item->update_used_tables(). But instead of accumulating data for with_subselect and with_stored_program, it assigns directly to those fields. The fix is to convert the assignments into OR assignments.
Roy Lyseng authoredThe problem here is that we try to evaluate a subquery from the resolver. Item_is_not_null_test::update_used_tables() attempts to call is_null() on its argument because with_subselect is erroneously false. This field is wrongly updated because Item_func_make_set::update_used_tables() has a bad propagation of with_subselect: It first calls Item_func::update_used_tables() to update data for each arguments, then it calls item->update_used_tables(). But instead of accumulating data for with_subselect and with_stored_program, it assigns directly to those fields. The fix is to convert the assignments into OR assignments.
Loading