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:
@@ -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,
|
||||
|
Reference in New Issue
Block a user