MDEV-6082 Assertion `0' fails in TC_LOG_DUMMY::log_and_order on DML after installing TokuDB at runtime on server with disabled InnoDB
We don't support changing tc_log implementation at run time. If the first XA-capable engine is loaded with INSTALL PLUGIN - disable its XA capabilities with a warning
This commit is contained in:
parent
1987819281
commit
a6071cc596
7
mysql-test/r/innodb_load_xa.result
Normal file
7
mysql-test/r/innodb_load_xa.result
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
install plugin innodb soname 'ha_innodb';
|
||||||
|
Warnings:
|
||||||
|
Warning 1105 Cannot enable tc-log at run-time. XA features of InnoDB are disabled
|
||||||
|
select engine,support,transactions,xa from information_schema.engines where engine='innodb';
|
||||||
|
engine support transactions xa
|
||||||
|
InnoDB YES YES NO
|
||||||
|
uninstall plugin innodb;
|
1
mysql-test/t/innodb_load_xa.opt
Normal file
1
mysql-test/t/innodb_load_xa.opt
Normal file
@ -0,0 +1 @@
|
|||||||
|
--ignore-builtin-innodb --loose-innodb --log-bin
|
11
mysql-test/t/innodb_load_xa.test
Normal file
11
mysql-test/t/innodb_load_xa.test
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#
|
||||||
|
# MDEV-6082 Assertion `0' fails in TC_LOG_DUMMY::log_and_order on DML after installing TokuDB at runtime on server with disabled InnoDB
|
||||||
|
#
|
||||||
|
--source include/not_embedded.inc
|
||||||
|
|
||||||
|
if (!$HA_INNODB_SO) {
|
||||||
|
--skip Need InnoDB plugin
|
||||||
|
}
|
||||||
|
install plugin innodb soname 'ha_innodb';
|
||||||
|
select engine,support,transactions,xa from information_schema.engines where engine='innodb';
|
||||||
|
uninstall plugin innodb;
|
@ -543,7 +543,19 @@ int ha_initialize_handlerton(st_plugin_int *plugin)
|
|||||||
savepoint_alloc_size+= tmp;
|
savepoint_alloc_size+= tmp;
|
||||||
hton2plugin[hton->slot]=plugin;
|
hton2plugin[hton->slot]=plugin;
|
||||||
if (hton->prepare)
|
if (hton->prepare)
|
||||||
|
{
|
||||||
total_ha_2pc++;
|
total_ha_2pc++;
|
||||||
|
if (tc_log && tc_log != get_tc_log_implementation())
|
||||||
|
{
|
||||||
|
total_ha_2pc--;
|
||||||
|
hton->prepare= 0;
|
||||||
|
push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN,
|
||||||
|
ER_UNKNOWN_ERROR,
|
||||||
|
"Cannot enable tc-log at run-time. "
|
||||||
|
"XA features of %s are disabled",
|
||||||
|
plugin->name.str);
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/* fall through */
|
/* fall through */
|
||||||
|
@ -954,6 +954,13 @@ end:
|
|||||||
DBUG_RETURN(error);
|
DBUG_RETURN(error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline TC_LOG *get_tc_log_implementation()
|
||||||
|
{
|
||||||
|
if (total_ha_2pc <= 1)
|
||||||
|
return &tc_log_dummy;
|
||||||
|
if (opt_bin_log)
|
||||||
|
return &mysql_bin_log;
|
||||||
|
return &tc_log_mmap;
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* LOG_H */
|
#endif /* LOG_H */
|
||||||
|
@ -4327,6 +4327,8 @@ a file name for --log-bin-index option", opt_binlog_index_name);
|
|||||||
if (ha_init_errors())
|
if (ha_init_errors())
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
|
|
||||||
|
tc_log= 0; // ha_initialize_handlerton() needs that
|
||||||
|
|
||||||
if (plugin_init(&remaining_argc, remaining_argv,
|
if (plugin_init(&remaining_argc, remaining_argv,
|
||||||
(opt_noacl ? PLUGIN_INIT_SKIP_PLUGIN_TABLE : 0) |
|
(opt_noacl ? PLUGIN_INIT_SKIP_PLUGIN_TABLE : 0) |
|
||||||
(opt_abort ? PLUGIN_INIT_SKIP_INITIALIZATION : 0)))
|
(opt_abort ? PLUGIN_INIT_SKIP_INITIALIZATION : 0)))
|
||||||
@ -4469,10 +4471,7 @@ a file name for --log-bin-index option", opt_binlog_index_name);
|
|||||||
internal_tmp_table_max_key_segments= myisam_max_key_segments();
|
internal_tmp_table_max_key_segments= myisam_max_key_segments();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
tc_log= (total_ha_2pc > 1 ? (opt_bin_log ?
|
tc_log= get_tc_log_implementation();
|
||||||
(TC_LOG *) &mysql_bin_log :
|
|
||||||
(TC_LOG *) &tc_log_mmap) :
|
|
||||||
(TC_LOG *) &tc_log_dummy);
|
|
||||||
|
|
||||||
if (tc_log->open(opt_bin_log ? opt_bin_logname : opt_tc_log_file))
|
if (tc_log->open(opt_bin_log ? opt_bin_logname : opt_tc_log_file))
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user