indeed, maybe something's mixed up
I really think this should be a part of this fix (from "[6/8] store cache managers in a list")
:
> diff --git a/sql/handler.cc b/sql/handler.cc
> index 8b95653e69f..8b22167e729 100644
> --- a/sql/handler.cc
> +++ b/sql/handler.cc
> @@ -6660,7 +6660,16 @@ static int binlog_log_row_online_alter(TABLE* table,
> THD *thd= table->in_use;
>
> if (!table->online_alter_cache)
> - table->online_alter_cache= thd->binlog_setup_cache_data();
> + {
> + auto *cache_mngr= online_alter_binlog_get_cache_mngr(thd, table);
> + // Use transaction cache directly, if it is not multi-transaction mode
> + table->online_alter_cache= binlog_get_cache_data(cache_mngr,
> + !thd->in_multi_stmt_transaction_mode());
> +
> + trans_register_ha(thd, false, binlog_hton, 0);
> + if (thd->in_multi_stmt_transaction_mode())
> + trans_register_ha(thd, true, binlog_hton, 0);
But anyway it is going to be a fixup, so whatever. I am only sorry for confusion.
The way to test with and without binlog is to rename .test in .inc and make a new test: one that sources have_binlog.inc, and one that doesn't.
I don't like putting tests in .inc, so decided to leave only one version of it. Maybe that's wrong
But what about sourcing a .test file?