diff options
author | Sergey Petrunya <psergey@askmonty.org> | 2010-01-17 17:51:10 +0300 |
---|---|---|
committer | Sergey Petrunya <psergey@askmonty.org> | 2010-01-17 17:51:10 +0300 |
commit | b83cb52e9e78a0d07c05f6515aa7811deabe434c (patch) | |
tree | aa289e64cb57964bd08fc79d326136cb801e1da7 /sql/item_row.cc | |
parent | 1a490f2da492f2e5698b244341696c6dd9d8db4c (diff) | |
download | mariadb-git-b83cb52e9e78a0d07c05f6515aa7811deabe434c.tar.gz |
Backport of subquery optimizations to 5.3.
There are still test failures because of:
- Wrong query results in outer join + semi join
- EXPLAIN output differences
Diffstat (limited to 'sql/item_row.cc')
-rw-r--r-- | sql/item_row.cc | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/sql/item_row.cc b/sql/item_row.cc index 28de03bf049..97bbde2c562 100644 --- a/sql/item_row.cc +++ b/sql/item_row.cc @@ -124,6 +124,20 @@ void Item_row::update_used_tables() } } + +void Item_row::fix_after_pullout(st_select_lex *new_parent, Item **ref) +{ + used_tables_cache= 0; + const_item_cache= 1; + 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(); + } +} + + bool Item_row::check_cols(uint c) { if (c != arg_count) |