summaryrefslogtreecommitdiff
path: root/sql/sql_select.h
diff options
context:
space:
mode:
authorunknown <igor@rurik.mysql.com>2003-11-26 17:23:52 -0800
committerunknown <igor@rurik.mysql.com>2003-11-26 17:23:52 -0800
commitda566c16c0c03f56caa8bd6bfd9452b73ad1a456 (patch)
treeccfdefe3940ac9e8bf4d61df4e3eb671b6a303a4 /sql/sql_select.h
parentafe2186e3baea84d9eec0a898ef3e9be11c788af (diff)
downloadmariadb-git-da566c16c0c03f56caa8bd6bfd9452b73ad1a456.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. 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.
Diffstat (limited to 'sql/sql_select.h')
-rw-r--r--sql/sql_select.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/sql/sql_select.h b/sql/sql_select.h
index 24854713a0e..ad2adc2ee0f 100644
--- a/sql/sql_select.h
+++ b/sql/sql_select.h
@@ -184,6 +184,7 @@ class JOIN :public Sql_alloc
ORDER *order, *group_list, *proc_param; //hold parameters of mysql_select
COND *conds; // ---"---
Item *conds_history; // store WHERE for explain
+ COND_EQUAL *cond_equal;
TABLE_LIST *tables_list; //hold 'tables' parameter of mysql_selec
SQL_SELECT *select; //created in optimisation phase
Item **ref_pointer_array; //used pointer reference for this select
@@ -243,6 +244,7 @@ class JOIN :public Sql_alloc
ref_pointer_array_size= 0;
zero_result_cause= 0;
optimized= 0;
+ cond_equal= 0;
fields_list= fields;
bzero((char*) &keyuse,sizeof(keyuse));