summaryrefslogtreecommitdiff
path: root/sql/item_row.cc
diff options
context:
space:
mode:
authorSergey Petrunya <psergey@askmonty.org>2010-01-17 17:51:10 +0300
committerSergey Petrunya <psergey@askmonty.org>2010-01-17 17:51:10 +0300
commitb83cb52e9e78a0d07c05f6515aa7811deabe434c (patch)
treeaa289e64cb57964bd08fc79d326136cb801e1da7 /sql/item_row.cc
parent1a490f2da492f2e5698b244341696c6dd9d8db4c (diff)
downloadmariadb-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.cc14
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)