Home - Waterfall Grid T-Grid Console Builders Recent Builds Buildslaves Changesources - JSON API - About

Console View


Categories: connectors experimental galera main
Legend:   Passed Failed Warnings Failed Again Running Exception Offline No data

connectors experimental galera main
Nikita Malyavin
MDEV-37968 GTT: is allowed to us as mysql.help_topic, failing assertions

HELP caused opening a child GTT, whish has table category TEMPORARY,
while only SYSTEM/STATISTICS tables are allowed.

In another assertion, ref_count didn't reach 0 in innodb on shutdown.

We really don't want allowing GTT to work as a system table.

The problem is table->s->table_category is determined at *open* stage,
merely by a name:
share->table_category= get_table_category(share->db, share->table_name)

We could forbid GTT creation when its name maches non-user category.
However, RENAME never opens a table, which means, we anyway can rename
GTT to a system table.

All we can do is make sure we don't open it.

Parent issue:
MDEV-35915
Aleksey Midenkov
MDEV-38710 Assertion is_lock_owner on error returning from auto-create in mysql_admin_table

Followup commit for 4802bfe4f90.

After returning error from check_vers_constants() the stack
immediately returns error status up to mysql_admin_table() where it
does close_thread_tables(). The latter expects MDL acquired.

The bug discloses the generic problem of fallback mechanism throwing
an error when the upper frame does close_thread_tables().
Nikita Malyavin
MDEV-38567 GTT Context corruption on repeated SQL when autocommit=0

Always reset temporary_tables->committed when
drop_on_commit_delete_tables is called. Do it right in that function.

Parent issue:
MDEV-35915 Implement Global temporary tables
Sergei Golubchik
MDEV-39131 Wrong Results in Identical Queries Involving Grouping and Bitwise NOT (~)

Item_copy_string::val_int() should take into account item's
unsignedness
Aleksey Midenkov
MDEV-28619 Server crash and UBSAN null-pointer-use in Window_funcs_sort::setup

Optimization in st_select_lex_unit::prepare() removes ORDER BY for
certain subqueries. That excludes ORDER BY items from being fixed, but
sl->window_funcs still contains window function items and those
related to optimized out ORDER BY are unfixed. The error about missing
window spec is thrown when the item is fixed. Hence we get redundant
processing of window function items without checking window spec
existence.

The fix removes the related window function items when ORDER BY is
optimized out. ORDER accumulates window_funcs at parser stage which
are then removed from SELECT_LEX::window_funcs. The fix also updates
similar optimization in mysql_make_view().
Daniel Black
deb: format debian/control of videx
Nikita Malyavin
MDEV-38568 GTT: Assertion thd->mdl_context.is_lock_owner failed in CoR

The crash happens on the junction of GTT, CREATE OR REPLACE...SELECT,
LOCK TABLES, and error during select.

1. The parent table should be dropped with drop_open_table, not
quick_rm_table, because it should first be closed.
2. In select_create::abort_result_set, drop the parent table as well.
3. Store parent parent GTT in select_create -- this improves readability
  and access hugely.

Parent issue:
MDEV-35915 Implement Global temporary tables
Marko Mäkelä
MDEV-16926 fixup: GCC 16 -Wmaybe-uninitialized

Year::year_precision(): Make static, so that VYear::VYear
and VYear_op::VYear_op() will avoid invoking this function with
an unnecessary "this" pointer to an uninitialized object.
Daniel Black
MDEV-30953: mariadb-server-galera - separate systemd component

There was elements of mariadb.service exclusively for galera.

Separate these out to a galera.conf file installed in
/usr/lib/systemd/systemd/mariadb.service.d/galera.conf.
Mohammad Tafzeel Shams
MDEV-22186: Add innodb_buffer_pool_in_core_dump to exclude InnoDB buffer pool from cores

Problem:
There is no control to include or exclude large InnoDB buffer pool from
core files, which can lead to unnecessarily large core dumps or prevent
capturing useful memory state.

Solution:
Introduce a new global dynamic system variable innodb_buffer_pool_in_core_dump
that allows excluding InnoDB buffer pool from core dumps using MADV_DONTDUMP
where supported. When enabled the server marks relevant memory regions to be
omitted from core files. The madvise state is dynamically updated when the
variable changes.

This variable is only available on Linux & FreeBSD.

Additionally, a test helper script is introduced to inspect
/proc/<pid>/smaps and verify whether large memory regions are marked
for trimming.

- innodb_buffer_pool_in_core_dump
  Global boolean system variable controlling whether InnoDB buffer
  pool should be excluded from core dumps.
  Default: OFF on non-debug builds with MADV_DONTDUMP support,
  ON otherwise.

- innodb_buffer_pool_in_core_dump_update()
  Update hook that sets innodb_buffer_pool_in_core_dump and triggers runtime
  updates of madvise state for the buffer pool.

- buf_pool_t::in_core_dump
  Variable backing @@innodb_buffer_pool_in_core_dump.

- buf_pool_t::core_advise()
  Advises MADV_DONTDUMP or MADV_DODUMP according to latest
  innodb_buffer_pool_in_core_dump value.

- buf_pool_t::create()
  Updates madvise flag to the buffer pool memory based on
  innodb_buffer_pool_in_core_dump.
  Also moves the mutex initialization at the beginiing of function.

- buf_pool_t::resize()
  Updates the madvise flag for buffer pool to keep it in sync with
  the innodb_buffer_pool_in_core_dump.

- check_core_dump_trim.inc
  Test helper that inspects /proc/<pid>/smaps to detect memory regions
  with the dd VmFlag and determine whether the core file is expected
  to be trimmed based on buffer pool and log buffer sizes.
Alexey Botchkov
MDEV-38767 XML datatype to be reported as format in extended metadata in protocol.

add Send_field metadata for UDT.
Tuukka Pasanen
MDEV-30953: Add package for Galera server for RPM

Following the previous commit, we apply the same
to RPM.

Add new package Mariadb-server-galera to RPM build
recude mariadb-server package dependencies.
Galera cluster scripts and libraries are currently
in package mariadb-server. Move Galera cluster
scripts and libraries to new package mariadb-server-galera
as most of the people does not need them and
it allows to slim down mariadb-server package

The MariaDB-test package unlike its Debian
equal, didn't depend on the MariaDB-server
(and now it does), except if WITH_WSREP is
specified in which case it depends on the
MariaDB-server-galera package

Also from a865a7c23bd8c06bf1de0a759703f898f6c180c2
lsof, socat and pv are RECOMMENDS.
* lsof/socat - when selinux is enabled, these aren't used
* pv - the galera sst scripts will silently ignore its absence

Updated/Edited by: Daniel Black <[email protected]>
Nikita Malyavin
MDEV-38603 GTT: Failing assertion prebuilt->template_type == ROW_MYSQL_WHOLE_ROW

FLUSH TABLES WITH READ LOCK differs from FLUSH TABLES in that the latter
doesn't open the tables. FLUSH TABLES works fine with temporary tables,
while FLUSH TABLES WITH READ LOCK results in ER_NO_SUCH_TABLE.

So we also shouldn't allow FLUSH TABLES WITH READ LOCK open a child GTT.
Doing so would result in many unpredicted problems, like this assertion.

Particularly: m_prebuilt->select_lock_type stays LOCK_S after
FLUSH TABLE WITH READ LOCK, and then is not reset by
handler::external_lock or handler::start_stmt. However, innodb would
expect LOCK_X in SERIALIZABLE isolation.

In this commit:
Always submit parent GTT to FLUSH TABLES. Since FLUSH TABLES doesn't
open tables, there'll be no difference for it, and FLUSH TABLES WITH
READ LOCK will use a parent table.

Parent issue:
MDEV-35915 Implement Global temporary tables
Bill Jin
MDEV-35461 Remove redundant checks for standard library functions

Remove function checks that are guaranteed by C89/C99 standards to
reduce the excessive time spent during CMake configuration step. Also,
clean up related compatibility code.

All new code of the whole pull request, including one or several files
that are either new files or modified ones, are contributed under the
BSD-new license. I am contributing on behalf of my employer Amazon Web
Services, Inc.
Abhishek Bansal
MDEV-38264: Fix failed assertion in json_find_path with trailing commas

The function json_skip_array_and_count() was trapping syntax errors
(e.g., trailing commas) in a local engine copy. Because the error state
wasn't propagated back to the main engine, json_find_path() would
proceed with an inconsistent state, eventually triggering an assertion
failure.

This patch ensures that any error encountered during the lookahead
scan is propagated to the primary engine. This allows the parser to
fail gracefully with a syntax error instead of crashing.
Tuukka Pasanen
MDEV-30953: Add package for Galera server (Deb)

MDEV-38744 removed the galera as a server dependency,
and we've decided to put it back.

While we put it back and there's a fresh release
series, lets incorporate some packaging improvements.

Historicly, since 10.1 when Galera became part
of the server the MariaDB-server package included
all the dependencies of Galera, its SST scripts,
in case the user wanted them. There where many
cases where this wasn't the case. As we
separate out to a separate mariadb-server-galera
package, we give the option if they want a
galera install and have its dependencies, or
a more minimal installation.

To facilitate this:

Add new package mariadb-server-galera to Debian to
recude mariadb-server package dependencies.
Galera cluster scripts and libraries are currently
in package mariadb-server. Move Galera cluster
scripts and libraries to new package mariadb-server-galera
as most of the people does not need them and
it allows to slim down mariadb-server package

More explictly:

As such this moves the following files that were previously
in the MariaDB-server packgage to the MariaDB-server-galera package:
* README-wsrep
* Galera SST scripts
* /etc/systemd/system/[email protected]/use_galera_new_cluster.conf

The dependencies of the Galera SST scripts are moved to
the dependencies of the MariaDB-server-galera package.

As the installation of this package is a key indication that
galera is required 60-galera.cnf in the configuration has
explict galera required configuration items set. The
wsrep_cluster_address will however be required to be set by the
user. When the user test this they must also enable
wsrep_on.

The galera-4 is also a dependency of MariaDB-server-galera package
rather than the MariaDB-server package.

MariaDB users previously using galera installed instance, that are
doing a major upgrade will need to be aware that the new package
is required.

Non-galera users during a major upgrade are going to get a slightly
smaller install, and a bunch of previous installed dependencies that
are no longer required and can be removed.

The mariadb-test package change its dependency from mariadb-server
to mariadb-server-galera so all the requirement of the server
are there.

Updated/Edited by: Daniel Black <[email protected]>
Marko Mäkelä
Merge 10.11 into 11.4
Daniel Black
MDEV-39015 Debian - columnstore boost deps 1.88+

Columnstore 23.10, the version in MariaDB-server-11.4+
is strictly dependant on a 1.88+ boost version.

As such remove the libboost-[^d]* dependencies of
columnstore until such Debian/Ubuntu version support this.

libboost-dev is still needed for oqgraph

These version are:
* forky/sid
* questing/resolute

The debian/control always contains the version that
would compile on debian/sid. The debian/autobake-deb.sh
adjusts the control file on earlier distros to
remove the dependencies.
ShenLin
MDEV-39041: Execute permissions required to make dh_link execute this to expand $DEB_HOST_MULTIARCH
Aleksey Midenkov
MDEV-28619 with_flags cleanup

The best practice is to init as much info as possible in class
constructor. with_flags access may be needed before fix_fields() or
fix_fields() may be not called at all like it takes place in
MDEV-28619. The fix for MDEV-28619 requires WINDOW_FUNC check on
unfixed item.
Aleksey Midenkov
MDEV-38798 Assertion `mdl_key->length() == 3' failed in MDL_map::find_or_insert

Originally two MDL_EXCLUSIVE are used for pure alias of derived table
and its schema which is empty db name. It is concurrency performance
overhead and there is no obvious reason why such MDL should exist.

MDEV-33985 changed pure alias check from `db.str` to `db.length` and
that allowed `empty_c_string` to be pure alias too. It is important
for MDEV-33985 fix with sequences. Now such kind of pure alias skips
MDL initialization and thus derived table fails falsely on BACKUP
namespace as it is default namespace for 0-filled structure (see TODO
comments).

The fix a) keeps MDL_NOT_INITIALIZED for uninitialized MDL and that
was the consequence of MDL_INTENTION_EXCLUSIVE value 0 (see TODO
comment).

And b) does not update MDL type for pure alias when view is
initialized, so it is MDL_NOT_INITIALIZED. `lock_table_names()` code
naturally skips such kind of MDL with (mdl_request.type <
MDL_SHARED_UPGRADABLE) condition when processing tables list.
Daniel Black
systemd: deprecate MYSQLD_OPTS

It was added without a good use case as
all MariaDB options where available to
uses to put in configuration files.

Put a notice of deprecation for now.
Sergei Golubchik
MDEV-39112 The query returns incorrect results when using LPAD

LPAD was modifying its first argument, even if it was a const string
Michal Schorm
MDEV-18359, MDEV-26905: Fix invalid XML in charsets Index.xml

Summary:
The charset definition files sql/share/charsets/Index.xml and
mysql-test/std_data/ldml/Index.xml contained duplicate "flag" attributes
on single <collation> elements, violating XML well-formedness rules.
Standard XML parsers (xmllint, libxml2, etc.) reject duplicate attributes,
making these files unparseable by any spec-compliant tool.

Root Cause:
When nopad_bin collations were added, their flags were specified as
XML attributes: flag="binary" flag="nopad". The XML specification
(Section 3.1, Well-Formedness Constraint: Unique Att Spec) prohibits
duplicate attribute names on a single element. MariaDB's custom XML
parser in strings/xml.c happened to process both duplicates because
it handles attributes sequentially in a while loop, but this is
non-standard behavior that breaks interoperability with standard
XML tooling.

What the patch does:
Converts all 24 occurrences of duplicate flag attributes from
self-closing elements with duplicate attributes to elements with
child <flag> nodes. This follows the existing pattern already used
by many collations in the same file (e.g., big5_chinese_ci,
latin1_swedish_ci, utf8mb3_general_ci).

Before (invalid XML):
  <collation name="latin2_nopad_bin" id="1101" flag="binary" flag="nopad"/>

After (valid XML):
  <collation name="latin2_nopad_bin" id="1101">
    <flag>binary</flag>
    <flag>nopad</flag>
  </collation>

No C code changes are required. The _CS_FLAG handler in
strings/ctype.c (around line 621) already processes <flag> child
elements using bitwise OR (|=) to accumulate flags, so both "binary"
(MY_CS_BINSORT) and "nopad" (MY_CS_NOPAD) flags are correctly applied.

Files modified:
- sql/share/charsets/Index.xml (23 collations fixed)
- mysql-test/std_data/ldml/Index.xml (1 collation fixed)

Complete list of 24 collations fixed:

sql/share/charsets/Index.xml:
1. latin2_nopad_bin    (id=1101)
2. dec8_nopad_bin      (id=1093)
3. cp850_nopad_bin      (id=1104)
4. hp8_nopad_bin        (id=1096)
5. koi8r_nopad_bin      (id=1098)
6. swe7_nopad_bin      (id=1106)
7. ascii_nopad_bin      (id=1089)
8. cp1251_nopad_bin    (id=1074)
9. hebrew_nopad_bin    (id=1095)
10. latin7_nopad_bin    (id=1103)
11. koi8u_nopad_bin      (id=1099)
12. greek_nopad_bin      (id=1094)
13. cp1250_nopad_bin    (id=1090)
14. cp1257_nopad_bin    (id=1082)
15. latin5_nopad_bin    (id=1102)
16. armscii8_nopad_bin  (id=1088)
17. cp866_nopad_bin      (id=1092)
18. keybcs2_nopad_bin    (id=1097)
19. macce_nopad_bin      (id=1067)
20. macroman_nopad_bin  (id=1077)
21. cp852_nopad_bin      (id=1105)
22. cp1256_nopad_bin    (id=1091)
23. geostd8_nopad_bin    (id=1117)

mysql-test/std_data/ldml/Index.xml:
24. ascii2_nopad_bin    (id=325)

Validation:
- xmllint --noout passes cleanly on both files after the fix
- Zero duplicate flag attributes remain (verified with grep)
- The fix is consistent with the existing pattern used by other
  collations in the same files

Co-Authored-By: Claude AI <[email protected]>
Daniel Black
wsrep_info plugin config file created
Aleksey Midenkov
MDEV-25365 Server hangs or crashes in Query_cache::move_by_type upon FLUSH QUERY CACHE

Caused by Bug#988 in 702b5ad.

How it works

QUERY blocks has all its tables in the array coming after
Query_cache_block header. Each such table element
(Query_cache_block_table) is also an element of doubly-linked circular
list associated with TABLE block used to find all queries by a
table. TABLE block data() is actually Query_cache_table: identificator
for table elements by real name. Every element in the circular list
has `parent` set to such Query_cache_table, except the list root. The
list root is the only Query_cache_block_table element owned by a TABLE
block, all other elements are owned by QUERY blocks. Thus TABLE block
n_tables is always 1.

FREE blocks are transformed into gap pointed by `border`. All the
QUERY and TABLE blocks are moved in place of the gap providing free
space defragmentation. Moving is done by creating new block at the
location of the gap and then doing memmove() from an old block to new
block. This may involve blocks overlap when the distance between the
blocks is less than the block size.

What was broken

When the old and the new QUERY blocks overlap, pointer can be in range
of both of them and checking the range does not guarantee affiliation
of the pointer with the old block. Such intra-block checks added by
Bug#988 can wrongly work on an already updated pointer.

In the test case small gap allows both tables 16 and 17 to be in the
overlapping region of old and new blocks. Iteration 16 updated
`prev->next` on the normal manner and the `prev` was table 17.
Iteration 17 sees this `next` as a pointer coming from an old block
though really it is already for a new block (as small gap shift allows
table 16 to be in both blocks), and it shifts it to the wrong
location. That have broken TABLE block circular chain.

How it was fixed

The fix modifies intra-block checks to work only in the forward
direction. F.ex., current table jx references intra-block by `next`
another table jy in later iteration (jx < jy) and we shift this `next`
pointer. Then by normal code (pre-Bug#988) we update `next->prev`. At
iteration jy we skip intra-block check for `prev` as it is in the past
iteration and was updated by iteration jx. The same happens for the
opposite direction, there is no semantic difference between `next` and
`prev` pointers.
Daniel Black
MDEV-39015 Debian - remove libboost-date-time-dev dependency

In Debian Bullseye + Ubuntu 22.04 the libboost-date-time
library (1.74 boost version) has been a dummy stub.

The header files for boost-date-time are in the libboost-dev
package.
Hemant Dangi
MDEV-36025: backup taken from a replica with optimistic parallel replication fails to restore most of the time

Issue:
The commit 5836191c (MDEV-21168) was deliberately NOT ported to 10.5+. It added
an optional --rollback-xa flag to mariabackup in 10.4 only, with this note in
the commit message:
"The fix MUST NOT be ported on 10.5+, as MDEV-742 fix solves the issue for
slaves."
However, MDEV-742 does not solve the problem for internal XA transactions, as
MDEV-36025 demonstrates. The --rollback-xa option,
SRV_OPERATION_RESTORE_ROLLBACK_XA, and related code are completely absent from
the 10.6 codebase.

Solution:
Port the MDEV-21168 fix to MariaDB 10.6.

Add SRV_OPERATION_RESTORE_ROLLBACK_XA server operation mode and
--rollback-xa option (enabled by default) to mariabackup --prepare.
This automatically rolls back prepared XA transactions during prepare,
since the backup does not contain the binary log needed to resolve them.

Prevent incompatible combination of --rollback_xa and --export options.
The combination creates mmap state inconsistency in InnoDB's MTR system,
leading to crash.
Raghunandan Bhat
MDEV-38562: `mariabackup` exits with success (0) despite "No space left on device" errors

Problem:
  `mariabackup` ignores `my_close()` failures, resulting in false
  success report with a 'completed OK!' message.

Fix:
  Update `local_close()` function in `mariabackup` to check `my_close()`
  failures and enusre errors are reported.
Nikita Malyavin
MDEV-38931 GTT error: Table was locked with a READ lock after CREATE OR REPLACE

update table-lock TL for a parent table as well.

Parent issue:
MDEV-35915
Nikita Malyavin
MDEV-37660 Make Global Temporary Tables DDL errors more specific

Add ER_TABLE_IN_USE code.
Use it for ALTER, DROP and RENAME when a child Global temporary table
exists in the same connection (effectively blocking the statement)

Parent issue:
MDEV-35915 Implement Global temporary tables
Marko Mäkelä
Merge 10.6 into 10.11
Vladislav Vaintroub
meh
forkfun
MDEV-36183 mariadb-dump backup corrupt if stored procedure ends with comment

When a stored procedure, trigger, or event ends with a line comment (#comment
or --comment), mariadb-dump would append the custom delimiter (;;) on the same line.
This caused the comment to "comment out" the delimiter, leading to syntax errors
during restoration.

Fixed by ensuring a newline is inserted before the delimiter in the dump output.
Marko Mäkelä
Merge 11.4 into 11.8
Jan Lindström
MDEV-38917 : Galera test failure on galera.galera_sst_mysqldump

This regression is caused by commit c380e165973 (MDEV-38833 "Suboptimal
or dead code at server startup"). Problem is that there should never
be an expectation that InnoDB bootstrap is crash-safe. Therefore,
after wsrep has initialized wsrep schema force checkpoint. This
ensured that InnoDB has successfully bootstrapped and wsrep chema
is initialized. This checkpoint ensures that wsrep-recover
is successful.

Other changes:
* Splitted galera_sst_mysqldump to two parts wsrep_sst_mysqldump
  and wsrep_sst_mysqldump_debug that is run only on debug builds.
* Changed wserp_schema initialization not to use std::string
  because it is unnecessary.
* Force checkpoint after wsrep_schema has been created.
* Make test wsrep_sst_mysqldump_with_key smaller
* Stabilize test cases
Nikita Malyavin
MDEV-38937 GTT: 1944 Error executing row event with trigger replication

Row events prelock tables for triggers even if those triggers are not
accessed. Write_row event is known to trigger a wider set of row
operations. In IDEMPOTENT mode it is

  trg2bit(TRG_EVENT_INSERT) | trg2bit(TRG_EVENT_DELETE);

So no surprise that AFTER DELETE trigger is prepared for insert event.

If the table in trigger doesn't exist though, the error wouldn't be
triggered.

Make the same for GTT:
ignore its open denials on slave if it's meant so.

Parent issue:
MDEV-35915 Implement Global temporary tables
forkfun
MDEV-32770 mariadb-dump produces not loadable dump due to temporary view structure

When mariadb-dump produces a dump, it first creates a temporary placeholder for views
to satisfy potential dependencies before their actual creation later in the dump file.
Previously, these views were populated with int literals for their columns (1 AS `col_name`).
This could cause syntax or type-resolution errors during restoration if another view depended
on this placeholder view.

This commit changes the placeholder column values from 1 to NULL, as it is more permissive
and allowing the dump to be restored successfully.
Aleksey Midenkov
Compilation: writing to an object of type ‘ORDER’

/home/buildbot/amd64-last-N-failed/build/sql/sql_window.cc: In function ‘ORDER* concat_order_lists(MEM_ROOT*, ORDER*, ORDER*)’:
/home/buildbot/amd64-last-N-failed/build/sql/sql_window.cc:2976:13: error: ‘void* memcpy(void*, const void*, size_t)’ writing to an object of type ‘ORDER’ {aka ‘struct st_order’} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Werror=class-memaccess]
2976 |      memcpy(copy, cur, sizeof(ORDER));
      |      ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/buildbot/amd64-last-N-failed/build/sql/field.h:29,
                from /home/buildbot/amd64-last-N-failed/build/sql/sql_class.h:32,
                from /home/buildbot/amd64-last-N-failed/build/sql/sql_acl.h:21,
                from /home/buildbot/amd64-last-N-failed/build/sql/sql_parse.h:19,
                from /home/buildbot/amd64-last-N-failed/build/sql/sql_window.cc:18:
/home/buildbot/amd64-last-N-failed/build/sql/table.h:236:16: note: ‘ORDER’ {aka ‘struct st_order’} declared here
  236 | typedef struct st_order {
      |                ^~~~~~~~
/home/buildbot/amd64-last-N-failed/build/sql/sql_window.cc: In member function ‘bool Window_funcs_sort::setup(THD*, SQL_SELECT*, List_iterator<Item_window_func>&, JOIN_TAB*)’:
/home/buildbot/amd64-last-N-failed/build/sql/sql_window.cc:3151:11: error: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘ORDER’ {aka ‘struct st_order’} with no trivial copy-assignment; use assignment or value-initialization instead [-Werror=class-memaccess]
3151 |    memset(order, 0, sizeof(*order));
      |    ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/buildbot/amd64-last-N-failed/build/sql/field.h:29,
                from /home/buildbot/amd64-last-N-failed/build/sql/sql_class.h:32,
                from /home/buildbot/amd64-last-N-failed/build/sql/sql_acl.h:21,
                from /home/buildbot/amd64-last-N-failed/build/sql/sql_parse.h:19,
                from /home/buildbot/amd64-last-N-failed/build/sql/sql_window.cc:18:
/home/buildbot/amd64-last-N-failed/build/sql/table.h:236:16: note: ‘ORDER’ {aka ‘struct st_order’} declared here
  236 | typedef struct st_order {
      |                ^~~~~~~~
cc1plus: all warnings being treated as errors
make[2]: *** [sql/CMakeFiles/sql.dir/build.make:2640: sql/CMakeFiles/sql.dir/sql_window.cc.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/Makefile2:10639: sql/CMakeFiles/sql.dir/all] Error 2
make: *** [Makefile:166: all] Error 2
Alexey Botchkov
MDEV-38809 RBR fails upon DML with XML type.

Add Field_xmltype::rpl_conv_type_from() function to control
replication data types.