diff options
author | igor@rurik.mysql.com <> | 2003-11-26 17:23:52 -0800 |
---|---|---|
committer | igor@rurik.mysql.com <> | 2003-11-26 17:23:52 -0800 |
commit | 3938ac543601aee49d3137621293302f2b577640 (patch) | |
tree | ccfdefe3940ac9e8bf4d61df4e3eb671b6a303a4 /sql/item_row.cc | |
parent | 5b355ea6f51a3224650bbaea6d58e9015ac9000a (diff) | |
download | mariadb-git-3938ac543601aee49d3137621293302f2b577640.tar.gz |
This ChangeSet Introdices Item_equal.
The objects of this class represent multiple conjunctive equalities
in where conditions: =(f1,f2,...fn) <=> f1=f2 and f2= ... and =fn.
The objects are used to generate new possibale paths to access
the tables when executing a query.
They are also used to optimize the execution plan
chosen by the optimizer for the query.
Diffstat (limited to 'sql/item_row.cc')
-rw-r--r-- | sql/item_row.cc | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/sql/item_row.cc b/sql/item_row.cc index 89b38c8a753..d7afe9ad5f0 100644 --- a/sql/item_row.cc +++ b/sql/item_row.cc @@ -140,6 +140,18 @@ bool Item_row::walk(Item_processor processor, byte *arg) return (this->*processor)(arg); } +Item *Item_row::traverse(Item_calculator calculator, byte *arg) +{ + for (uint i= 0; i < arg_count; i++) + { + Item *new_item= items[i]->traverse(calculator, arg); + if (!new_item) + return 0; + items[i]= new_item; + } + return (this->*calculator)(arg); +} + void Item_row::bring_value() { for (uint i= 0; i < arg_count; i++) |