Skip to content

MDEV-41211: FederatedX multi-table DELETE keeps a const table row - #5792

Open
DaveGosselin-MariaDB wants to merge 1 commit into
11.4from
11.4-mdev-41211-federated-multi-delete
Open

DaveGosselin-MariaDB wants to merge 1 commit into
11.4from
11.4-mdev-41211-federated-multi-delete

Conversation

@DaveGosselin-MariaDB

Copy link
Copy Markdown
Member

A multi-table DELETE on a FederatedX table left a row in place when a primary key lookup made the target a const table. The optimizer reads a const table's row through index_read_idx_map(), whose default implementation ends the index scan and frees the result set. The server asks for the row's position later, during execution, so the saved position was empty and the row was skipped.

FederatedX now overrides index_read_idx_map() so that the lookup leaves its result set open, as index_read() does. position() then records a valid position, and the result set is freed at the end of the statement.

A multi-table DELETE on a FederatedX table left a row in place when a
primary key lookup made the target a const table.  The optimizer reads
a const table's row through index_read_idx_map(), whose default
implementation ends the index scan and frees the result set.  The
server asks for the row's position later, during execution, so the
saved position was empty and the row was skipped.

FederatedX now overrides index_read_idx_map() so that the lookup leaves
its result set open, as index_read() does.  position() then records a
valid position, and the result set is freed at the end of the
statement.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

1 participant