backport of Bug#11867664 from mysql-5.5
3381 Mattias Jonsson 2011-03-18 Bug#11867664: SERVER CRASHES ON UPDATE WITH JOIN ON PARTITIONED TABLE Regression from bug#11766232. m_last_part could be set beyond the last partition. Fixed by only setting it if within the limit. Also added check in print_error.
This commit is contained in:
parent
e108b3f69e
commit
ec9611cf40
@ -4317,7 +4317,8 @@ int ha_partition::index_read_idx_map(uchar *buf, uint index,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
m_last_part= part;
|
if (part <= m_part_spec.end_part)
|
||||||
|
m_last_part= part;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -6237,7 +6238,14 @@ void ha_partition::print_error(int error, myf errflag)
|
|||||||
{
|
{
|
||||||
/* In case m_file has not been initialized, like in bug#42438 */
|
/* In case m_file has not been initialized, like in bug#42438 */
|
||||||
if (m_file)
|
if (m_file)
|
||||||
|
{
|
||||||
|
if (m_last_part >= m_tot_parts)
|
||||||
|
{
|
||||||
|
DBUG_ASSERT(0);
|
||||||
|
m_last_part= 0;
|
||||||
|
}
|
||||||
m_file[m_last_part]->print_error(error, errflag);
|
m_file[m_last_part]->print_error(error, errflag);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
handler::print_error(error, errflag);
|
handler::print_error(error, errflag);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user