diff options
author | Igor Babaev <igor@askmonty.org> | 2019-02-09 22:54:26 -0800 |
---|---|---|
committer | Igor Babaev <igor@askmonty.org> | 2019-02-09 22:54:26 -0800 |
commit | d11be23933def394585fae83a6f1ab561e3736f2 (patch) | |
tree | 867a809df45931d5c6ad00424c327cd47aae9392 /storage/federatedx | |
parent | 3f9040085a0de4976f55bc7e4a2fa5fa8d923100 (diff) | |
download | mariadb-git-d11be23933def394585fae83a6f1ab561e3736f2.tar.gz |
MDEV-17096 Pushdown of simple derived tables to storage engines
Resolved the problem of forming a proper query string for FEDERATEDX.
Added test cases.
Cleanup of extra spaces.
Diffstat (limited to 'storage/federatedx')
-rw-r--r-- | storage/federatedx/federatedx_pushdown.cc | 19 | ||||
-rw-r--r-- | storage/federatedx/federatedx_pushdown.h | 4 |
2 files changed, 9 insertions, 14 deletions
diff --git a/storage/federatedx/federatedx_pushdown.cc b/storage/federatedx/federatedx_pushdown.cc index bfe421c8ab2..c53b35976f7 100644 --- a/storage/federatedx/federatedx_pushdown.cc +++ b/storage/federatedx/federatedx_pushdown.cc @@ -38,14 +38,14 @@ create_federatedx_derived_handler(THD* thd, TABLE_LIST *derived) return 0; } } - + handler= new ha_federatedx_derived_handler(thd, derived); return handler; } -/* +/* Implementation class of the derived_handler interface for FEDERATEDX: class implementation */ @@ -62,7 +62,6 @@ ha_federatedx_derived_handler::~ha_federatedx_derived_handler() {} int ha_federatedx_derived_handler::init_scan() { - char query_buff[4096]; THD *thd; int rc= 0; @@ -76,12 +75,8 @@ int ha_federatedx_derived_handler::init_scan() txn= h->get_txn(thd); if ((rc= txn->acquire(share, thd, TRUE, iop))) DBUG_RETURN(rc); - - String derived_query(query_buff, sizeof(query_buff), thd->charset()); - derived_query.length(0); - derived->derived->print(&derived_query, QT_ORDINARY); - - if ((*iop)->query(derived_query.ptr(), derived_query.length())) + + if ((*iop)->query(derived->derived_spec.str, derived->derived_spec.length)) goto err; stored_result= (*iop)->store_result(); @@ -93,7 +88,7 @@ int ha_federatedx_derived_handler::init_scan() err: DBUG_RETURN(HA_FEDERATEDX_ERROR_WITH_REMOTE_SYSTEM); } - + int ha_federatedx_derived_handler::next_row() { int rc; @@ -167,7 +162,7 @@ create_federatedx_select_handler(THD* thd, SELECT_LEX *sel) return handler; } -/* +/* Implementation class of the select_handler interface for FEDERATEDX: class implementation */ @@ -175,7 +170,7 @@ create_federatedx_select_handler(THD* thd, SELECT_LEX *sel) ha_federatedx_select_handler::ha_federatedx_select_handler(THD *thd, SELECT_LEX *sel) : select_handler(thd, federatedx_hton), - share(NULL), txn(NULL), iop(NULL), stored_result(NULL) + share(NULL), txn(NULL), iop(NULL), stored_result(NULL) { select= sel; } diff --git a/storage/federatedx/federatedx_pushdown.h b/storage/federatedx/federatedx_pushdown.h index 961571b972c..673abcfc68d 100644 --- a/storage/federatedx/federatedx_pushdown.h +++ b/storage/federatedx/federatedx_pushdown.h @@ -17,7 +17,7 @@ #include "derived_handler.h" #include "select_handler.h" -/* +/* Implementation class of the derived_handler interface for FEDERATEDX: class declaration */ @@ -40,7 +40,7 @@ public: }; -/* +/* Implementation class of the select_handler interface for FEDERATEDX: class declaration */ |