diff options
author | Oleg Smirnov <olernov@gmail.com> | 2022-09-14 18:11:19 +0700 |
---|---|---|
committer | Oleg Smirnov <olernov@gmail.com> | 2022-09-14 18:11:23 +0700 |
commit | c46a720ab4bbbe694b244da4c26796a5ad23a628 (patch) | |
tree | f3b8ed6f30c2b06fae1d69c2f9e793ee928512b1 | |
parent | c637f1c450aa08775f7aa168898ff6eba23c5e27 (diff) | |
download | mariadb-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.cc | 11 | ||||
-rw-r--r-- | storage/federatedx/federatedx_pushdown.h | 1 |
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); }; |