mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
fix and test case for the bug #787: HANDLER without INDEX doesn't work with deleted rows
mysql-test/r/handler.result: test case for the bug #787: HANDLER without INDEX doesn't work with deleted rows mysql-test/t/handler.test: test case for the bug #787: HANDLER without INDEX doesn't work with deleted rows sql/sql_handler.cc: fix for the bug #787: HANDLER without INDEX doesn't work with deleted rows
This commit is contained in:
@ -222,6 +222,8 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables,
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (err == HA_ERR_RECORD_DELETED)
|
||||
continue;
|
||||
if (err)
|
||||
{
|
||||
if (err != HA_ERR_KEY_NOT_FOUND && err != HA_ERR_END_OF_FILE)
|
||||
@ -233,31 +235,24 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables,
|
||||
}
|
||||
goto ok;
|
||||
}
|
||||
if (cond)
|
||||
if (cond && !cond->val_int())
|
||||
continue;
|
||||
if (!err && num_rows >= offset_limit)
|
||||
{
|
||||
err=err;
|
||||
if (!cond->val_int())
|
||||
continue;
|
||||
}
|
||||
if (num_rows >= offset_limit)
|
||||
{
|
||||
if (!err)
|
||||
String *packet = &thd->packet;
|
||||
Item *item;
|
||||
protocol->prepare_for_resend();
|
||||
it.rewind();
|
||||
while ((item=it++))
|
||||
{
|
||||
String *packet = &thd->packet;
|
||||
Item *item;
|
||||
protocol->prepare_for_resend();
|
||||
it.rewind();
|
||||
while ((item=it++))
|
||||
{
|
||||
if (item->send(thd->protocol, &buffer))
|
||||
{
|
||||
protocol->free(); // Free used
|
||||
my_error(ER_OUT_OF_RESOURCES,MYF(0));
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
protocol->write();
|
||||
if (item->send(thd->protocol, &buffer))
|
||||
{
|
||||
protocol->free(); // Free used
|
||||
my_error(ER_OUT_OF_RESOURCES,MYF(0));
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
protocol->write();
|
||||
}
|
||||
num_rows++;
|
||||
}
|
||||
|
Reference in New Issue
Block a user