Skip to content
/ server Public

MDEV-28817: Derived table elimination fails when field aliases are used#4866

Open
Olernov wants to merge 1 commit into10.11from
10.11-MDEV-28817
Open

MDEV-28817: Derived table elimination fails when field aliases are used#4866
Olernov wants to merge 1 commit into10.11from
10.11-MDEV-28817

Conversation

@Olernov
Copy link
Copy Markdown
Contributor

@Olernov Olernov commented Mar 26, 2026

When a derived table's SELECT list contains the same column under multiple aliases (e.g. "SELECT a, b, a as a2 FROM t2 GROUP BY a, b"), the table elimination logic failed to recognize that the aliased column is also part of the GROUP BY pseudo-key.

The root cause was in find_field_in_list() which only recorded the first matching position in the SELECT list for each GROUP BY element. If the ON clause referenced the column via a different alias (a later position), covers_field() would not find it in the pseudo-key bitmap.

Fix: find_field_in_list() now marks ALL matching positions in the SELECT list, so every alias of a GROUP BY column is recognized as part of the pseudo-key.

When a derived table's SELECT list contains the same column under
multiple aliases (e.g. "SELECT a, b, a as a2 FROM t2 GROUP BY a, b"),
the table elimination logic failed to recognize that the aliased
column is also part of the GROUP BY pseudo-key.

The root cause was in find_field_in_list() which only recorded the
first matching position in the SELECT list for each GROUP BY element.
If the ON clause referenced the column via a different alias (a later
position), covers_field() would not find it in the pseudo-key bitmap.

Fix: find_field_in_list() now marks ALL matching positions in the
SELECT list, so every alias of a GROUP BY column is recognized as
part of the pseudo-key.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Development

Successfully merging this pull request may close these issues.

1 participant