summaryrefslogtreecommitdiffstats
path: root/storage/federatedx/federatedx_pushdown.h
diff options
context:
space:
mode:
Diffstat (limited to 'storage/federatedx/federatedx_pushdown.h')
-rw-r--r--storage/federatedx/federatedx_pushdown.h57
1 files changed, 36 insertions, 21 deletions
diff --git a/storage/federatedx/federatedx_pushdown.h b/storage/federatedx/federatedx_pushdown.h
index 673abcfc..1d5bdab1 100644
--- a/storage/federatedx/federatedx_pushdown.h
+++ b/storage/federatedx/federatedx_pushdown.h
@@ -14,29 +14,43 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
+#include "sql_string.h"
#include "derived_handler.h"
#include "select_handler.h"
+class federatedx_handler_base
+{
+protected:
+ FEDERATEDX_SHARE *share;
+ federatedx_txn *txn;
+ federatedx_io **iop;
+ FEDERATEDX_IO_RESULT *stored_result;
+ StringBuffer<512> query;
+
+ TABLE *query_table;
+
+ int next_row_(TABLE *tmp_tbl);
+ int init_scan_();
+ int end_scan_();
+public:
+ federatedx_handler_base(THD *thd_arg, TABLE *tbl_arg);
+};
+
/*
Implementation class of the derived_handler interface for FEDERATEDX:
class declaration
*/
-class ha_federatedx_derived_handler: public derived_handler
+class ha_federatedx_derived_handler: public derived_handler, public federatedx_handler_base
{
private:
- FEDERATEDX_SHARE *share;
- federatedx_txn *txn;
- federatedx_io **iop;
- FEDERATEDX_IO_RESULT *stored_result;
public:
- ha_federatedx_derived_handler(THD* thd_arg, TABLE_LIST *tbl);
+ ha_federatedx_derived_handler(THD* thd_arg, TABLE_LIST *tbl, TABLE *tbl_arg);
~ha_federatedx_derived_handler();
- int init_scan();
- int next_row();
- int end_scan();
- void print_error(int, unsigned long);
+ int init_scan() { return federatedx_handler_base::init_scan_(); }
+ int next_row() { return federatedx_handler_base::next_row_(table); }
+ int end_scan() { return federatedx_handler_base::end_scan_(); }
};
@@ -45,19 +59,20 @@ public:
class declaration
*/
-class ha_federatedx_select_handler: public select_handler
+class ha_federatedx_select_handler: public select_handler, public federatedx_handler_base
{
-private:
- FEDERATEDX_SHARE *share;
- federatedx_txn *txn;
- federatedx_io **iop;
- FEDERATEDX_IO_RESULT *stored_result;
-
public:
- ha_federatedx_select_handler(THD* thd_arg, SELECT_LEX *sel);
+ ha_federatedx_select_handler(THD *thd_arg, SELECT_LEX_UNIT *sel_unit,
+ TABLE *tbl);
+ ha_federatedx_select_handler(THD *thd_arg, SELECT_LEX *sel_lex,
+ SELECT_LEX_UNIT *sel_unit, TABLE *tbl);
~ha_federatedx_select_handler();
- int init_scan();
- int next_row();
+ int init_scan() { return federatedx_handler_base::init_scan_(); }
+ int next_row() { return federatedx_handler_base::next_row_(table); }
int end_scan();
- void print_error(int, unsigned long);
+
+private:
+ static constexpr auto PRINT_QUERY_TYPE=
+ enum_query_type(QT_VIEW_INTERNAL | QT_SELECT_ONLY |
+ QT_ITEM_ORIGINAL_FUNC_NULLIF | QT_PARSABLE);
};