mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
BUG#22178: Scan ordered performed also on engines not supporting ordered scans
Scan of ranges without start key should not use ordered scans unless it is requested. sql/ha_partition.cc: Scan of ranges without start key should not use ordered scans unless it is requested. sql/ha_partition.h: Scan of ranges without start key should not use ordered scans unless it is requested.
This commit is contained in:
parent
c690c11feb
commit
392c3122f6
2 changed files with 20 additions and 4 deletions
|
@ -3655,7 +3655,10 @@ int ha_partition::read_range_first(const key_range *start_key,
|
|||
|
||||
if (!start_key) // Read first record
|
||||
{
|
||||
m_index_scan_type= partition_index_first;
|
||||
if (m_ordered)
|
||||
m_index_scan_type= partition_index_first;
|
||||
else
|
||||
m_index_scan_type= partition_index_first_unordered;
|
||||
error= common_first_last(m_rec0);
|
||||
}
|
||||
else
|
||||
|
@ -3869,6 +3872,18 @@ int ha_partition::handle_unordered_scan_next_partition(byte * buf)
|
|||
DBUG_PRINT("info", ("index_first on partition %d", i));
|
||||
error= file->index_first(buf);
|
||||
break;
|
||||
case partition_index_first_unordered:
|
||||
/*
|
||||
We perform a scan without sorting and this means that we
|
||||
should not use the index_first since not all handlers
|
||||
support it and it is also unnecessary to restrict sort
|
||||
order.
|
||||
*/
|
||||
DBUG_PRINT("info", ("read_range_first on partition %d", i));
|
||||
table->record[0]= buf;
|
||||
error= file->read_range_first(0, end_range, eq_range, 0);
|
||||
table->record[0]= m_rec0;
|
||||
break;
|
||||
default:
|
||||
DBUG_ASSERT(FALSE);
|
||||
DBUG_RETURN(1);
|
||||
|
|
|
@ -45,9 +45,10 @@ private:
|
|||
{
|
||||
partition_index_read= 0,
|
||||
partition_index_first= 1,
|
||||
partition_index_last= 2,
|
||||
partition_index_read_last= 3,
|
||||
partition_no_index_scan= 4
|
||||
partition_index_first_unordered= 2,
|
||||
partition_index_last= 3,
|
||||
partition_index_read_last= 4,
|
||||
partition_no_index_scan= 5
|
||||
};
|
||||
/* Data for the partition handler */
|
||||
int m_mode; // Open mode
|
||||
|
|
Loading…
Reference in a new issue