summaryrefslogtreecommitdiff
path: root/storage/federatedx
diff options
context:
space:
mode:
Diffstat (limited to 'storage/federatedx')
-rw-r--r--storage/federatedx/Makefile.am1
-rw-r--r--storage/federatedx/ha_federatedx.cc22
2 files changed, 15 insertions, 8 deletions
diff --git a/storage/federatedx/Makefile.am b/storage/federatedx/Makefile.am
index 6dbeff1207a..ad1328247ec 100644
--- a/storage/federatedx/Makefile.am
+++ b/storage/federatedx/Makefile.am
@@ -22,7 +22,6 @@ pkgplugin_LTLIBRARIES = @plugin_federated_shared_target@
ha_federatedx_la_LDFLAGS = -module -rpath $(pkgplugindir)
ha_federatedx_la_CXXFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
ha_federatedx_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
-ha_federatedx_la_SOURCES = ha_federatedx.cc
EXTRA_LIBRARIES = libfederatedx.a
diff --git a/storage/federatedx/ha_federatedx.cc b/storage/federatedx/ha_federatedx.cc
index 4d4b25da058..308215fe839 100644
--- a/storage/federatedx/ha_federatedx.cc
+++ b/storage/federatedx/ha_federatedx.cc
@@ -390,8 +390,8 @@ int federatedx_db_init(void *p)
DBUG_ENTER("federatedx_db_init");
handlerton *federatedx_hton= (handlerton *)p;
federatedx_hton->state= SHOW_OPTION_YES;
- /* This is no longer needed for plugin storage engines */
- federatedx_hton->db_type= DB_TYPE_DEFAULT;
+ /* Needed to work with old .frm files */
+ federatedx_hton->db_type= DB_TYPE_FEDERATED_DB;
federatedx_hton->savepoint_offset= sizeof(ulong);
federatedx_hton->close_connection= ha_federatedx::disconnect;
federatedx_hton->savepoint_set= ha_federatedx::savepoint_set;
@@ -1785,14 +1785,22 @@ int ha_federatedx::close(void)
if (stored_result)
retval= free_result();
- /* Disconnect from mysql */
- if ((txn= get_txn(thd, true)))
+ /* Disconnect from mysql. thd may be null during refresh */
+ txn= thd ? get_txn(thd, true) : new federatedx_txn();
+
+ if (txn)
+ {
txn->release(&io);
+
+ DBUG_ASSERT(io == NULL);
- DBUG_ASSERT(io == NULL);
+ if ((error= free_share(txn, share)))
+ retval= error;
+
+ if (!thd)
+ delete txn;
- if ((error= free_share(txn, share)))
- retval= error;
+ }
DBUG_RETURN(retval);
}