summaryrefslogtreecommitdiff
path: root/sql/item_subselect.h
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mariadb.org>2017-05-05 16:12:54 +0400
committerAlexander Barkov <bar@mariadb.org>2017-05-05 16:12:54 +0400
commitac53b49b1be807f588aebd83883ec93b764f5d54 (patch)
treec86cbdb535eefb15e2077a7ac2ffaeff9d76955e /sql/item_subselect.h
parent583b68e89961c35fa95a06c38988f82e33c73f4a (diff)
parentdb0917f68f2681882974afd53935aa8cba29c6b8 (diff)
downloadmariadb-git-ac53b49b1be807f588aebd83883ec93b764f5d54.tar.gz
Merge remote-tracking branch 'origin/10.2' into bb-10.2-ext
Diffstat (limited to 'sql/item_subselect.h')
-rw-r--r--sql/item_subselect.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/sql/item_subselect.h b/sql/item_subselect.h
index 22fc48391de..4c4af25edf5 100644
--- a/sql/item_subselect.h
+++ b/sql/item_subselect.h
@@ -32,6 +32,7 @@ class subselect_engine;
class subselect_hash_sj_engine;
class Item_bool_func2;
class Comp_creator;
+class With_element;
typedef class st_select_lex SELECT_LEX;
@@ -135,6 +136,9 @@ public:
*/
bool with_recursive_reference;
+ /* To link Item_subselects containing references to the same recursive CTE */
+ Item_subselect *next_with_rec_ref;
+
enum subs_type {UNKNOWN_SUBS, SINGLEROW_SUBS,
EXISTS_SUBS, IN_SUBS, ALL_SUBS, ANY_SUBS};
@@ -256,6 +260,7 @@ public:
return TRUE;
}
+ void register_as_with_rec_ref(With_element *with_elem);
void init_expr_cache_tracker(THD *thd);
Item* build_clone(THD *thd, MEM_ROOT *mem_root) { return 0; }
@@ -831,6 +836,7 @@ public:
virtual bool no_rows() = 0;
virtual enum_engine_type engine_type() { return ABSTRACT_ENGINE; }
virtual int get_identifier() { DBUG_ASSERT(0); return 0; }
+ virtual void force_reexecution() {}
protected:
void set_row(List<Item> &item_list, Item_cache **row);
};
@@ -864,6 +870,7 @@ public:
bool no_rows();
virtual enum_engine_type engine_type() { return SINGLE_SELECT_ENGINE; }
int get_identifier();
+ void force_reexecution();
friend class subselect_hash_sj_engine;
friend class Item_in_subselect;
@@ -894,6 +901,7 @@ public:
bool temp= FALSE);
bool no_tables();
bool is_executed() const;
+ void force_reexecution();
bool no_rows();
virtual enum_engine_type engine_type() { return UNION_ENGINE; }
};