Bug#30480: Falcon: searches fail if LIKE and key partition
(also fixes the bugs: Bug#29320, Bug#29493 and Bug#30536) Problem: Partitioning did not handle unordered scans correctly for engines with unordered read order. Solution: do not stop scanning fi a recored is out of range, since there can be more records within the range afterwards. Note: this is the patch that fixes the bug, but since there are no storage engines shipped with mysql 5.1 (falcon comes in 6.0) there are no test cases (it is a separate patch that only goes into 6.0)
This commit is contained in:
parent
4f112fc9db
commit
1d7ac77479
@ -3983,7 +3983,8 @@ int ha_partition::handle_unordered_next(uchar *buf, bool is_next_same)
|
|||||||
}
|
}
|
||||||
else if (!(error= file->index_next(buf)))
|
else if (!(error= file->index_next(buf)))
|
||||||
{
|
{
|
||||||
if (compare_key(end_range) <= 0)
|
if (!(file->table_flags() & HA_READ_ORDER) ||
|
||||||
|
compare_key(end_range) <= 0)
|
||||||
{
|
{
|
||||||
m_last_part= m_part_spec.start_part;
|
m_last_part= m_part_spec.start_part;
|
||||||
DBUG_RETURN(0); // Row was in range
|
DBUG_RETURN(0); // Row was in range
|
||||||
@ -4060,7 +4061,8 @@ int ha_partition::handle_unordered_scan_next_partition(uchar * buf)
|
|||||||
}
|
}
|
||||||
if (!error)
|
if (!error)
|
||||||
{
|
{
|
||||||
if (compare_key(end_range) <= 0)
|
if (!(file->table_flags() & HA_READ_ORDER) ||
|
||||||
|
compare_key(end_range) <= 0)
|
||||||
{
|
{
|
||||||
m_last_part= i;
|
m_last_part= i;
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user