mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
independent ALL/ANY subselect on top of WHERE clause (subselect without GROUP BY or aggregate functions) optimisation
(SCRUM) (WL#1086) mysql-test/r/subselect.result: new optimisation tests mysql-test/t/subselect.test: new optimisation tests sql/item_cmpfunc.cc: new NOT sql/item_cmpfunc.h: new NOT sql/item_subselect.cc: independent ALL/ANY in top of WHERE clause optimisation sql/item_subselect.h: independent ALL/ANY in top of WHERE clause optimisation sql/item_sum.cc: prevent fixlields call for parameters of min/max if it is already done sql/sql_union.cc: removed debuging print sql/sql_yacc.yy: support of ALL optimisation
This commit is contained in:
@ -53,7 +53,7 @@ public:
|
||||
|
||||
enum trans_res {OK, REDUCE, ERROR};
|
||||
enum subs_type {UNKNOWN_SUBS, SINGLEROW_SUBS,
|
||||
EXISTS_SUBS, IN_SUBS, ALLANY_SUBS};
|
||||
EXISTS_SUBS, IN_SUBS, ALL_SUBS, ANY_SUBS};
|
||||
|
||||
Item_subselect();
|
||||
Item_subselect(Item_subselect *item)
|
||||
@ -202,6 +202,8 @@ protected:
|
||||
bool was_null;
|
||||
bool abort_on_null;
|
||||
public:
|
||||
Item_func_not_all *upper_not; // point on NOT before ALL subquery
|
||||
|
||||
Item_in_subselect(THD *thd, Item * left_expr, st_select_lex *select_lex);
|
||||
Item_in_subselect(Item_in_subselect *item);
|
||||
Item_in_subselect(): Item_exists_subselect(), abort_on_null(0) {}
|
||||
@ -241,7 +243,8 @@ public:
|
||||
Item_allany_subselect(THD *thd, Item * left_expr, compare_func_creator f,
|
||||
st_select_lex *select_lex);
|
||||
Item_allany_subselect(Item_allany_subselect *item);
|
||||
subs_type substype() { return ALLANY_SUBS; }
|
||||
// only ALL subquery has upper not
|
||||
subs_type substype() { return upper_not?ALL_SUBS:ANY_SUBS; }
|
||||
trans_res select_transformer(JOIN *join);
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user