1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

MDEV-26345 Spider GBH should execute original queries on the data node

Stop skipping const items when selecting but skip them when storing
their results to spider row to avoid storing in mismatching temporary
table fields.

Skip auxiliary fields in SELECTing, and do not store
the (non-existing) results to the corresponding temporary table
accordingly.

When there are BOTH auxiliary fields AND const items in the auxiliary
field items, do not use the spider GBH. This is a rare occasion if it
happens at all and not worth the added complexity to cover it.

Use the original item (item_ptr) in constructing GROUP BY and ORDER
BY, which also means using item->name instead of field->field_name as
aliases in constructing SELECT items. This fixes spurious regressions
caused by the above changes in some tests using ORDER BY, such as
mdev_24517.test. As a by-product, this also fixes MDEV-29546.
Therefore we update mdev_29008.test to include the MDEV-29546 case.
This commit is contained in:
Yuchen Pei
2024-10-15 15:36:12 +11:00
parent e6daff40e4
commit 77ed235d50
22 changed files with 286 additions and 109 deletions

View File

@@ -294,7 +294,7 @@ public:
bool has_result() override;
void free_result() override;
SPIDER_DB_ROW *current_row() override;
SPIDER_DB_ROW *fetch_row() override;
SPIDER_DB_ROW *fetch_row(MY_BITMAP *) override;
SPIDER_DB_ROW *fetch_row_from_result_buffer(
spider_db_result_buffer *spider_res_buf
) override;
@@ -1493,7 +1493,8 @@ public:
uint alias_length,
bool use_fields,
spider_fields *fields,
ulong sql_type
ulong sql_type,
int n_aux=0
) override;
int append_list_item_select(
List<Item> *select,
@@ -1501,7 +1502,8 @@ public:
const char *alias,
uint alias_length,
bool use_fields,
spider_fields *fields
spider_fields *fields,
int n_aux
);
int append_group_by_part(
ORDER *order,