Details
-
Bug
-
Status: Open (View Workflow)
-
Critical
-
Resolution: Unresolved
-
13.2
-
None
-
Can result in hang or crash
-
Q4/2026 Server Maintenance
Description
Issue:
---------
mariadbd: /home/ppandith/wl-39226/storage/federatedx/federatedx_io_mysql.cc:238: virtual int federatedx_io_mysql::savepoint_set(ulong): Assertion `sp > last_savepoint()' failed.
Issue details:
-------------------------
With pushdown=ON , query exceeds net_read_timeout(defualt 30sec) and errors out , re-executing query with pushdown=OFF crashes.
MariaDB [m8]> set global federated_pushdown=ON; |
|
|
MariaDB [m8]> UPDATE s1 JOIN s1 AS OUTR2 SET OUTR2.a = 1 where s1.a >0; |
ERROR 1159 (08S01): Got timeout reading communication packets
|
|
|
MariaDB [m8]> set global federated_pushdown=OFF; |
|
|
MariaDB [m8]> UPDATE s1 JOIN s1 AS OUTR2 SET OUTR2.a = 1 where s1.a <2; |
ERROR 2027 (HY000): Received malformed packet
|
MariaDB [m8]> UPDATE s1 JOIN s1 AS OUTR2 SET OUTR2.a = 1 where s1.a <2; |
ERROR 2026 (HY000): TLS/SSL error: unexpected eof while reading
|
Version used:
----------------
Branch : 13.2-MDEV-39226-direct-multi_table-update-delete
commit: 5992b3d00bec6bdaee4c7dcd3efd9bb8e39e4911
Version : 13.1.0
Stack trace:
---------------
#11 __assert_fail_base (fmt="%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry="sp > last_savepoint()",
|
file=file@entry="/home/ppandith/wl-39226/storage/federatedx/federatedx_io_mysql.cc", line=line@entry=238,
|
function=function@entry="virtual int federatedx_io_mysql::savepoint_set(ulong)") at ./assert/assert.c:96
|
#12 __assert_fail (assertion="sp > last_savepoint()", file="/home/ppandith/wl-39226/storage/federatedx/federatedx_io_mysql.cc",
|
line=238, function="virtual int federatedx_io_mysql::savepoint_set(ulong)") at ./assert/assert.c:105
|
#13 federatedx_io_mysql::savepoint_set (this=, sp=1) at /home/ppandith/wl-39226/storage/federatedx/federatedx_io_mysql.cc:238
|
#14 federatedx_txn::sp_acquire (this=, sp=) at /home/ppandith/wl-39226/storage/federatedx/federatedx_txn.cc:308
|
#15 federatedx_txn::stmt_begin (this=) at /home/ppandith/wl-39226/storage/federatedx/federatedx_txn.cc:373
|
#16 ha_federatedx::external_lock (this=, thd=, lock_type=1) at /home/ppandith/wl-39226/storage/federatedx/ha_federatedx.cc:3550
|
#17 handler::ha_external_lock (this=, thd=, lock_type=1) at /home/ppandith/wl-39226/sql/handler.cc:8044
|
#18 lock_external (thd=, tables=, count=2) at /home/ppandith/wl-39226/sql/lock.cc:443
|
#19 mysql_lock_tables (thd=, sql_lock=, flags=0) at /home/ppandith/wl-39226/sql/lock.cc:388
|
#20 mysql_lock_tables (thd=, tables=, count=2, flags=0) at /home/ppandith/wl-39226/sql/lock.cc:351
|
#21 lock_tables (thd=, tables=, count=2, flags=0) at /home/ppandith/wl-39226/sql/sql_base.cc:6099
|
#22 Sql_cmd_dml::execute (this=, thd=) at /home/ppandith/wl-39226/sql/sql_select.cc:34971
|
#23 mysql_execute_command (thd=, is_called_from_prepared_stmt=false) at /home/ppandith/wl-39226/sql/sql_parse.cc:4452
|
#24 mysql_parse (thd=, rawbuf="UPDATE s1 JOIN s1 AS OUTR2 SET OUTR2.a = 1 where s1.a <2", length=56, parser_state=)
|
at /home/ppandith/wl-39226/sql/sql_parse.cc:7968
|
#25 dispatch_command (command=COM_QUERY, thd=, packet="UPDATE s1 JOIN s1 AS OUTR2 SET OUTR2.a = 1 where s1.a <2", packet_length=56,
|
blocking=true) at /home/ppandith/wl-39226/sql/sql_parse.cc:1903
|
#26 do_command (thd=, blocking=true) at /home/ppandith/wl-39226/sql/sql_parse.cc:1437
|
#27 do_handle_one_connection (connect=, put_in_cache=true) at /home/ppandith/wl-39226/sql/sql_connect.cc:1514
|
#28 handle_one_connection (arg=) at /home/ppandith/wl-39226/sql/sql_connect.cc:1426
|
#29 pfs_spawn_thread (arg=) at /home/ppandith/wl-39226/storage/perfschema/pfs.cc:2198
|
#30 start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:447
|
#31 clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
|
How to repeat:
----------------
Slave:
create table s1( a int); |
Master: Start server with federated engine enabled
create table s1(a int) ENGINE="FEDERATED" CONNECTION='mysql://u3:pass1@127.0.0.1:3306/m8/s1'; |
|
|
insert into s1 select seq from seq_1_to_100000; |
set global federated_pushdown=ON; |
UPDATE s1 JOIN s1 AS OUTR2 SET OUTR2.a = 1 where s1.a >0; |
|
|
set global federated_pushdown=OFF; |
UPDATE s1 JOIN s1 AS OUTR2 SET OUTR2.a = 1 where s1.a <2; |
UPDATE s1 JOIN s1 AS OUTR2 SET OUTR2.a = 1 where s1.a <2; |
Attachments
Issue Links
- is caused by
-
MDEV-39226 Direct multi-table update/delete interface and FederatedX implementation
-
- In Testing
-