diff options
author | Igor Babaev <igor@askmonty.org> | 2018-10-09 02:36:09 -0700 |
---|---|---|
committer | Igor Babaev <igor@askmonty.org> | 2019-02-06 17:02:44 -0800 |
commit | 16327fc2e76e9215059894b461e8aca7f989da00 (patch) | |
tree | d8189268b2af4eb6ac865e0d9c78cf2cd1eca587 /sql/handler.h | |
parent | 171fbbb968ed52dc7e2bbd33a6f8f72bbc6f5e88 (diff) | |
download | mariadb-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.h | 17 |
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 |