diff options
Diffstat (limited to 'sql/handler.cc')
-rw-r--r-- | sql/handler.cc | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/sql/handler.cc b/sql/handler.cc index 2b6d8cad190..9c4c6287950 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -581,6 +581,7 @@ static int hton_drop_table(handlerton *hton, const char *path) int ha_finalize_handlerton(st_plugin_int *plugin) { + int deinit_status= 0; handlerton *hton= (handlerton *)plugin->data; DBUG_ENTER("ha_finalize_handlerton"); @@ -595,18 +596,7 @@ int ha_finalize_handlerton(st_plugin_int *plugin) hton->panic(hton, HA_PANIC_CLOSE); if (plugin->plugin->deinit) - { - /* - Today we have no defined/special behavior for uninstalling - engine plugins. - */ - DBUG_PRINT("info", ("Deinitializing plugin: '%s'", plugin->name.str)); - if (plugin->plugin->deinit(NULL)) - { - DBUG_PRINT("warning", ("Plugin '%s' deinit function returned error.", - plugin->name.str)); - } - } + deinit_status= plugin->plugin->deinit(NULL); free_sysvar_table_options(hton); update_discovery_counters(hton, -1); @@ -627,7 +617,7 @@ int ha_finalize_handlerton(st_plugin_int *plugin) my_free(hton); end: - DBUG_RETURN(0); + DBUG_RETURN(deinit_status); } @@ -1746,6 +1736,13 @@ int ha_commit_trans(THD *thd, bool all) if (ha_info->ht()->prepare_commit_versioned) { trx_end_id= ha_info->ht()->prepare_commit_versioned(thd, &trx_start_id); + + if (trx_end_id == ULONGLONG_MAX) + { + my_error(ER_ERROR_DURING_COMMIT, MYF(0), 1); + goto err; + } + if (trx_end_id) break; // FIXME: use a common ID for cross-engine transactions } @@ -8229,7 +8226,7 @@ static Create_field *vers_init_sys_field(THD *thd, const char *field_name, int f f->set_handler(&type_handler_timestamp2); f->length= MAX_DATETIME_PRECISION; } - f->invisible= DBUG_EVALUATE_IF("sysvers_show", VISIBLE, INVISIBLE_SYSTEM); + f->invisible= DBUG_IF("sysvers_show") ? VISIBLE : INVISIBLE_SYSTEM; if (f->check(thd)) return NULL; @@ -8374,7 +8371,7 @@ bool Vers_parse_info::fix_alter_info(THD *thd, Alter_info *alter_info, if (!need_check(alter_info) && !share->versioned) return false; - if (DBUG_EVALUATE_IF("sysvers_force", 0, share->tmp_table)) + if (!DBUG_IF("sysvers_force") && share->tmp_table) { my_error(ER_VERS_NOT_SUPPORTED, MYF(0), "CREATE TEMPORARY TABLE"); return true; |