mirror of
https://github.com/MariaDB/server.git
synced 2026-04-24 09:15:30 +02:00
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.
sql/item.cc:
Introduced Item_equal
sql/item.h:
Introduced Item_equal.
Added traverse method.
sql/item_cmpfunc.cc:
Introduced Item_equal.
Added traverse mehtod.
sql/item_cmpfunc.h:
Itroduced Item_equal and Item_equal_iterator.
sql/item_func.cc:
Added traverse method.
Introduced Item_equal.
sql/item_func.h:
Introduced Item_equal.
Added traverse method.
sql/item_row.cc:
Added traverse method.
sql/item_row.h:
Added traverse method.
sql/item_strfunc.h:
Added traverse method.
sql/opt_range.cc:
Used Item_equal in range analysis.
sql/opt_sum.cc:
Introduced Item_equal.
sql/sql_list.h:
Added concat and disjoin methods to lists.
Fixed remove method for lists.
sql/sql_select.cc:
Introdiced Item_equal:
created Item_equal;
used Item_equal objects to generate new paths to access tables.
used Item_equal objects to optimize the execution plan chosen by optimizer.
sql/sql_select.h:
Introduced Item_equal.
This commit is contained in:
parent
afe2186e3b
commit
da566c16c0
14 changed files with 1397 additions and 109 deletions
|
|
@ -427,6 +427,14 @@ public:
|
|||
return item->walk(processor, arg) ||
|
||||
Item_str_func::walk(processor, arg);
|
||||
}
|
||||
Item *traverse(Item_calculator calculator, byte *arg)
|
||||
{
|
||||
Item *new_item= item->traverse(calculator, arg);
|
||||
if (!new_item)
|
||||
return 0;
|
||||
item= new_item;
|
||||
return Item_str_func::traverse(calculator, arg);
|
||||
}
|
||||
void print(String *str);
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue