summaryrefslogtreecommitdiff
path: root/sql/handler.h
diff options
context:
space:
mode:
authorIgor Babaev <igor@askmonty.org>2018-10-09 02:36:09 -0700
committerIgor Babaev <igor@askmonty.org>2019-02-06 17:02:44 -0800
commit16327fc2e76e9215059894b461e8aca7f989da00 (patch)
treed8189268b2af4eb6ac865e0d9c78cf2cd1eca587 /sql/handler.h
parent171fbbb968ed52dc7e2bbd33a6f8f72bbc6f5e88 (diff)
downloadmariadb-git-16327fc2e76e9215059894b461e8aca7f989da00.tar.gz
MDEV-17096 Pushdown of simple derived tables to storage engines
MDEV-17631 select_handler for a full query pushdown Interfaces + Proof of Concept for federatedx with test cases. The interfaces have been developed for integration of ColumnStore engine.
Diffstat (limited to 'sql/handler.h')
-rw-r--r--sql/handler.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/sql/handler.h b/sql/handler.h
index 68a54cc207a..346dbd68cd9 100644
--- a/sql/handler.h
+++ b/sql/handler.h
@@ -1183,6 +1183,8 @@ struct handler_iterator {
class handler;
class group_by_handler;
+class derived_handler;
+class select_handler;
struct Query;
typedef class st_select_lex SELECT_LEX;
typedef struct st_order ORDER;
@@ -1502,6 +1504,21 @@ struct handlerton
*/
group_by_handler *(*create_group_by)(THD *thd, Query *query);
+ /*
+ Create and return a derived_handler if the storage engine can execute
+ the derived table 'derived', otherwise return NULL.
+ In a general case 'derived' may contain tables not from the engine.
+ If the engine cannot handle or does not want to handle such pushed derived
+ the function create_group_by has to return NULL.
+ */
+ derived_handler *(*create_derived)(THD *thd, TABLE_LIST *derived);
+
+ /*
+ Create and return a select_handler if the storage engine can execute
+ the select statement 'select, otherwise return NULL
+ */
+ select_handler *(*create_select) (THD *thd, SELECT_LEX *select);
+
/*********************************************************************
Table discovery API.
It allows the server to "discover" tables that exist in the storage