mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
Bug#56862 Execution of a query that uses index merge returns a wrong result
In case of low memory sort buffer QUICK_INDEX_MERGE_SELECT creates temporary file where is stores row ids which meet QUICK_SELECT ranges except of clustered pk range, clustered range is processed separately. In init_read_record we check if temporary file is used and choose appropriate record access method. It does not take into account that temporary file contains partial result in case of QUICK_INDEX_MERGE_SELECT with clustered pk range. The fix is always to use rr_quick if QUICK_INDEX_MERGE_SELECT with clustered pk range is used.
This commit is contained in:
@@ -265,6 +265,7 @@ public:
|
||||
|
||||
virtual bool reverse_sorted() = 0;
|
||||
virtual bool unique_key_range() { return false; }
|
||||
virtual bool clustered_pk_range() { return false; }
|
||||
|
||||
enum {
|
||||
QS_TYPE_RANGE = 0,
|
||||
@@ -533,6 +534,8 @@ public:
|
||||
THD *thd;
|
||||
int read_keys_and_merge();
|
||||
|
||||
bool clustered_pk_range() { return test(pk_quick_select); }
|
||||
|
||||
/* used to get rows collected in Unique */
|
||||
READ_RECORD read_record;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user