diff options
author | Sergey Petrunya <psergey@askmonty.org> | 2011-09-23 01:25:08 +0400 |
---|---|---|
committer | Sergey Petrunya <psergey@askmonty.org> | 2011-09-23 01:25:08 +0400 |
commit | ebbdb14a02daf36063effc8b734028578f7e4e90 (patch) | |
tree | 4502de918c214b3ba5633d6e632cd6cd9ba258b7 /sql/item_row.cc | |
parent | 42b928ca05fca3ae8858566622a3a483a70aa3fc (diff) | |
download | mariadb-git-ebbdb14a02daf36063effc8b734028578f7e4e90.tar.gz |
BUG#849776: Wrong result with semijoin + "Impossible where"
- Provide fix_after_pullout() function for Item_in_optimizer and other Item_XXX classes (basically, all of them
that have eval_not_null_tables, which means they have special rules for calculating not_null_tables_cache value)
Diffstat (limited to 'sql/item_row.cc')
-rw-r--r-- | sql/item_row.cc | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sql/item_row.cc b/sql/item_row.cc index 09977d71bb7..46d5f13f6fa 100644 --- a/sql/item_row.cc +++ b/sql/item_row.cc @@ -149,11 +149,13 @@ void Item_row::fix_after_pullout(st_select_lex *new_parent, Item **ref) { used_tables_cache= 0; const_item_cache= 1; + not_null_tables_cache= 0; for (uint i= 0; i < arg_count; i++) { items[i]->fix_after_pullout(new_parent, &items[i]); used_tables_cache|= items[i]->used_tables(); const_item_cache&= items[i]->const_item(); + not_null_tables_cache|= items[i]->not_null_tables(); } } |