1
0
mirror of https://github.com/MariaDB/server.git synced 2026-10-23 18:49:29 +03:00
Files
mariadb/sql
DerZc dec45ff9f3 MDEV-40762: Wrong MIN()/MAX() in loose index scan
Problem: GROUP BY with MIN()/MAX() can return the opposite extremum
when loose index scan chooses among indexes with different ordering.
MDEV-32732 (ec6f320883) added support for
descending indexes in loose index scan. It exposed a previously harmless
incorrect MIN/MAX key-part pointer: index enumeration overwrites
min_max_arg_part even when the candidate is rejected or not selected.
The pointer can then refer to a different index from the chosen plan.
Using its index-specific key_part_flag to determine scan direction
causes the regression.

Fix: Keep the MIN/MAX key-part pointer local to each candidate and
use it for the candidate's gap, infix and predicate checks. Save it
with the chosen index only when that candidate becomes the best plan.

(Cosmetic edits to testcase and commit comment by Sergei Petrunia)
2026-10-21 17:04:16 +03:00
..
2026-06-15 16:53:03 +02:00
2025-10-25 00:19:11 +07:00
…
2026-10-07 22:10:46 +02:00
2025-07-28 21:29:29 +02:00
2024-11-05 14:00:48 -08:00
2026-07-30 11:41:55 +02:00
2025-09-29 18:25:09 +03:00
…
2025-03-14 12:08:56 +04:00
2025-03-14 12:08:56 +04:00
…
2024-12-02 11:35:34 +02:00
2024-12-02 17:51:17 +02:00
2026-01-31 14:08:54 +01:00
2024-10-30 15:11:17 +01:00
…
2026-07-30 11:41:55 +02:00
2026-08-20 08:27:14 +02:00
2024-12-02 11:35:34 +02:00
2026-05-26 21:15:58 +02:00
2026-03-24 09:49:17 +02:00
2026-03-24 09:49:17 +02:00
…
…
2024-11-08 07:17:00 +01:00
2026-05-26 21:15:58 +02:00
2026-06-15 16:53:03 +02:00
2026-05-26 21:15:58 +02:00
2026-10-07 22:10:46 +02:00
2026-05-26 21:15:58 +02:00
2026-07-29 12:27:46 +02:00
2024-11-29 13:43:17 +02:00
…
…
2026-08-20 08:27:14 +02:00
2026-08-20 08:27:14 +02:00
2024-12-05 10:11:58 +01:00
2026-07-30 11:41:55 +02:00
2026-08-20 08:27:14 +02:00
2026-02-03 14:53:15 +01:00
2026-05-26 21:15:58 +02:00
2026-02-03 14:53:15 +01:00
2026-02-03 14:53:15 +01:00
2026-10-07 22:10:46 +02:00
2026-07-30 11:41:55 +02:00
2026-08-20 08:27:14 +02:00
2026-07-30 11:41:55 +02:00
2026-10-07 22:10:46 +02:00
2026-06-29 07:40:04 +03:00
2026-03-24 09:49:17 +02:00
2026-01-31 14:08:54 +01:00
2026-04-01 15:03:59 +03:00
2026-10-07 22:10:46 +02:00
2026-01-08 12:02:45 +01:00
2026-07-30 11:41:55 +02:00
2024-07-08 22:40:16 +02:00
2026-05-26 21:15:58 +02:00
2026-08-20 08:27:14 +02:00
…
2026-08-20 08:27:14 +02:00
2026-08-20 08:27:14 +02:00
2026-05-26 21:15:58 +02:00
…
2025-03-14 12:08:56 +04:00
2026-08-20 08:27:14 +02:00
2026-04-02 09:15:17 +03:00
…
2024-10-03 15:59:20 +10:00
…
2025-03-14 12:08:56 +04:00
2026-05-26 21:15:58 +02:00
2026-05-26 21:15:58 +02:00
2026-10-07 22:10:46 +02:00
2026-10-07 22:10:46 +02:00
2026-07-29 12:27:46 +02:00
2026-02-06 17:46:51 +01:00
2026-02-03 14:53:15 +01:00
2026-10-07 22:10:46 +02:00
2026-08-20 08:27:14 +02:00
2026-07-28 13:14:38 +02:00
2026-07-30 11:41:55 +02:00
2026-05-08 08:00:01 +02:00
2026-08-20 08:27:14 +02:00
2026-01-31 14:08:54 +01:00
2026-05-26 21:15:58 +02:00
2026-02-03 14:53:15 +01:00
2025-09-29 18:25:09 +03:00
2024-07-22 15:14:50 +02:00
2026-05-26 21:15:58 +02:00
2026-05-26 21:15:58 +02:00
2026-05-26 21:15:58 +02:00
2026-06-15 16:53:03 +02:00
2026-07-30 11:41:55 +02:00
2026-06-15 16:53:03 +02:00
2026-08-20 08:27:14 +02:00
2026-08-20 08:27:14 +02:00
2026-06-15 16:53:03 +02:00
2026-06-15 16:53:03 +02:00
2025-03-14 12:08:56 +04:00
2026-04-02 09:15:17 +03:00
2026-08-20 08:27:14 +02:00
2026-08-20 08:27:14 +02:00
2026-02-06 17:46:50 +01:00
2025-11-04 12:39:27 +01:00
2026-07-30 11:41:55 +02:00
2026-05-26 21:15:58 +02:00
2026-07-30 11:41:55 +02:00
2026-07-30 11:41:55 +02:00
2026-07-30 11:41:55 +02:00
2026-10-07 22:10:46 +02:00
2026-02-06 17:46:51 +01:00
2026-08-20 08:27:14 +02:00
2025-09-04 18:08:39 +03:00
2026-08-20 08:27:14 +02:00
2025-05-03 12:06:36 +02:00
2026-05-26 21:15:58 +02:00
2026-07-30 11:41:55 +02:00
2026-07-30 11:41:55 +02:00
2026-06-15 15:15:10 +02:00
2026-06-15 15:15:10 +02:00
2026-01-08 21:41:40 +01:00
2026-10-07 22:10:46 +02:00
2026-05-26 21:15:58 +02:00
2026-04-02 09:15:17 +03:00
2026-10-07 22:10:46 +02:00
2026-01-31 14:08:54 +01:00
2026-01-05 20:34:44 +01:00
2026-07-30 11:41:55 +02:00
2026-03-24 09:49:17 +02:00
2026-06-29 07:40:04 +03:00
2026-01-08 12:02:45 +01:00
2026-07-30 11:41:55 +02:00
2026-07-30 11:41:55 +02:00
2026-07-30 11:41:55 +02:00
2026-02-06 17:46:51 +01:00
2026-03-17 18:57:42 +01:00
2026-10-07 22:10:46 +02:00
2026-08-20 08:27:14 +02:00
…
2026-02-06 17:46:51 +01:00
2026-02-06 17:46:51 +01:00
2026-04-02 09:15:17 +03:00
2025-09-29 18:25:09 +03:00
2025-08-04 12:05:53 +02:00
2024-12-02 17:51:17 +02:00
2026-07-30 11:41:55 +02:00
2025-09-19 12:31:14 +03:00
2026-07-30 11:41:55 +02:00
2026-05-26 21:15:58 +02:00
2025-03-14 12:08:56 +04:00
2026-08-20 08:27:14 +02:00
2026-08-20 08:27:14 +02:00
2026-04-17 09:31:38 +10:00
2026-10-07 22:10:46 +02:00
2026-07-30 11:41:55 +02:00
2024-12-02 17:51:17 +02:00
2026-08-20 08:27:14 +02:00
2026-07-30 11:41:55 +02:00
2026-08-20 08:27:14 +02:00
2026-10-07 22:10:46 +02:00
2026-10-07 22:10:46 +02:00
2026-06-15 16:53:03 +02:00
2026-05-26 21:15:58 +02:00
2026-10-13 12:48:57 +03:00
2026-10-07 22:10:46 +02:00
2026-08-20 08:27:14 +02:00
2026-03-24 09:49:17 +02:00
2026-10-07 22:10:46 +02:00
2026-10-07 22:10:46 +02:00
2026-10-07 22:10:46 +02:00
2026-07-30 11:41:55 +02:00
2026-08-19 08:40:05 +02:00
2026-07-28 13:14:38 +02:00
2026-07-30 11:41:55 +02:00
2026-02-07 22:12:32 +01:00
2025-04-29 11:18:00 +10:00
2026-05-26 21:15:58 +02:00
…
2026-05-08 08:11:03 +02:00
2026-08-20 08:27:14 +02:00
2026-07-30 11:41:55 +02:00
2025-03-14 12:08:56 +04:00
2024-12-02 17:51:17 +02:00
2026-08-20 08:27:14 +02:00
2026-07-30 11:41:55 +02:00
2026-07-30 11:41:55 +02:00
2026-06-15 16:53:03 +02:00
2026-08-20 08:27:14 +02:00
2026-08-20 08:27:14 +02:00
2026-08-20 08:27:14 +02:00
2026-10-07 22:10:46 +02:00
2026-08-20 08:27:14 +02:00
2026-08-20 08:27:14 +02:00
2026-08-20 08:27:14 +02:00
2026-03-24 09:49:17 +02:00
2025-09-04 18:08:39 +03:00
2025-03-14 12:08:56 +04:00
2024-12-02 17:51:17 +02:00
2024-12-02 11:35:34 +02:00
2026-08-20 08:27:14 +02:00
2026-10-07 22:10:46 +02:00
2026-08-20 08:27:14 +02:00
2025-03-14 12:08:56 +04:00
2026-06-15 16:53:03 +02:00
2025-11-28 12:56:27 +02:00
2026-08-20 08:27:14 +02:00
2026-05-26 21:15:58 +02:00
2026-06-21 15:32:20 +02:00
2026-08-19 08:40:05 +02:00
2026-06-15 16:53:03 +02:00
2026-04-02 09:15:17 +03:00
2024-10-03 13:24:43 +03:00
2024-09-09 13:50:38 +03:00
2026-08-20 08:27:14 +02:00
2026-02-07 22:12:32 +01:00
2026-07-29 12:27:46 +02:00
2026-07-29 12:27:46 +02:00
2026-08-20 08:27:14 +02:00
2026-04-01 10:49:05 +03:00
2025-07-31 20:55:47 +02:00