summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOleg Smirnov <olernov@gmail.com>2022-09-14 18:11:19 +0700
committerOleg Smirnov <olernov@gmail.com>2022-09-14 18:11:23 +0700
commitc46a720ab4bbbe694b244da4c26796a5ad23a628 (patch)
treef3b8ed6f30c2b06fae1d69c2f9e793ee928512b1
parentc637f1c450aa08775f7aa168898ff6eba23c5e27 (diff)
downloadmariadb-git-bb-10.11-mdev-29535.tar.gz
MDEV-29535 Cleanup error handling in ha_federatedxbb-10.11-mdev-29535
1. Class ha_federatedx_derived_handler overrides virtual function derived_handler::print_error() with an empty implementation which causes problems with error handling. Errors are being simply ignored and occur during later processing. 2. Federatedx_handler_base::share can be NULL on unsuccessful attempt of initialization, this must be checked.
-rw-r--r--storage/federatedx/federatedx_pushdown.cc11
-rw-r--r--storage/federatedx/federatedx_pushdown.h1
2 files changed, 4 insertions, 8 deletions
diff --git a/storage/federatedx/federatedx_pushdown.cc b/storage/federatedx/federatedx_pushdown.cc
index 5402a7e4f16..82bdc2dc241 100644
--- a/storage/federatedx/federatedx_pushdown.cc
+++ b/storage/federatedx/federatedx_pushdown.cc
@@ -137,18 +137,13 @@ int federatedx_handler_base::end_scan_()
DBUG_ENTER("ha_federatedx_derived_handler::end_scan");
(*iop)->free_result(stored_result);
-
- free_share(txn, share);
+ if (share)
+ free_share(txn, share);
DBUG_RETURN(0);
}
-void ha_federatedx_derived_handler::print_error(int, unsigned long)
-{
-}
-
-
static select_handler *create_federatedx_select_handler(
THD *thd, SELECT_LEX *sel_lex)
{
@@ -228,6 +223,8 @@ int federatedx_handler_base::init_scan_()
ha_federatedx *h= (ha_federatedx *) query_table->file;
iop= &h->io;
share= get_share(query_table->s->table_name.str, query_table);
+ if (!share)
+ goto err;
txn= h->get_txn(thd);
if ((rc= txn->acquire(share, thd, TRUE, iop)))
DBUG_RETURN(rc);
diff --git a/storage/federatedx/federatedx_pushdown.h b/storage/federatedx/federatedx_pushdown.h
index 9a3ec10b310..d369039891f 100644
--- a/storage/federatedx/federatedx_pushdown.h
+++ b/storage/federatedx/federatedx_pushdown.h
@@ -51,7 +51,6 @@ public:
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_(); }
- void print_error(int, unsigned long);
};