mariadb/mysql-test/include/have_spider.inc
Andrei Elkin 8d4abfeca2 MDEV-36802 flaw in external xa-commit with multiple xa-capable engines
MDEV-32830 base patch missed out supporting XA-COMPLETE
via hton::"complete"_by_xid with multiple engines some of them
are and some are not defined ordered_commit().
The base patch fails with an assert in a path that should have been
unreachable in the first place.
The assert path revealed a second commit-by-xid capable engine (Spider)
was running commit_by_xid() as if it is ordered_commit()-type of
while Spider does not define ordered_commit.
For engines featuring the ordered-commit undefined and commit-by-xid defined
commit_by_xid() is considered as a general so cannot be invoked out of
binlog-group-commit (run_prepare_ordered()).
It would be a full commit similarly to the normal transaction case be invoked
after binlog-group-commit engine loop is done^\footnote{%
also specified in p.5 low-level design points of MDEV-32830 description}.

For that this patch

- extends  commit_or_rollback_xa_engine() with a hint
  for xarollback_handlerton() argument that enables to understand
  which phase of XA completion it's being run.
- elaborates in xacommit_handlerton().
  Specifically to fix this bug, not invoke a defined hton->complete_by_xid when
  the method is to run as ordered-"complete" by engine lacking the
  ordered_commit.
2025-05-15 10:56:55 +03:00

4 lines
169 B
SQL

if (`SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.ENGINES WHERE engine = 'SPIDER' AND support IN ('YES', 'DEFAULT', 'ENABLED')`)
{
--skip Test requires Spider engine
}