Fixed wrong test in maria_rsame() that caused ma_test_all to fail.

storage/maria/ma_rsame.c:
  Fixed wrong test of index usage
storage/maria/ma_search.c:
  Fixed test to avoid compiler warnings.
  Safety fix to ensure that my_error is properly set in case of errors.
This commit is contained in:
Michael Widenius 2011-01-11 13:27:16 +02:00
parent fcd3f2cd4b
commit 9ae7fb96b0
2 changed files with 9 additions and 4 deletions

View File

@ -19,7 +19,7 @@
Find current row with read on position or read on key
@notes
If inx >= 0 find record using key
If inx >= 0 find record using key else re-read row on last position
@warning
This function is not row version safe.
@ -29,6 +29,7 @@
@retval 0 Ok
@retval HA_ERR_KEY_NOT_FOUND Row is deleted
@retval HA_ERR_END_OF_FILE End of file
@retval HA_ERR_WRONG_INDEX Wrong inx argument
*/
@ -36,10 +37,10 @@ int maria_rsame(MARIA_HA *info, uchar *record, int inx)
{
DBUG_ENTER("maria_rsame");
if (inx >= 0 && !_ma_check_index(info, inx))
if (inx >= 0 && _ma_check_index(info, inx) < 0)
{
DBUG_PRINT("error", ("wrong index usage"));
DBUG_RETURN(my_errno=HA_ERR_WRONG_INDEX);
DBUG_RETURN(my_errno);
}
if (info->cur_row.lastpos == HA_OFFSET_ERROR ||
info->update & HA_STATE_DELETED)

View File

@ -44,8 +44,12 @@ int _ma_check_index(MARIA_HA *info, int inx)
info->update= ((info->update & (HA_STATE_CHANGED | HA_STATE_ROW_CHANGED)) |
HA_STATE_NEXT_FOUND | HA_STATE_PREV_FOUND);
}
if (info->opt_flag & WRITE_CACHE_USED && flush_io_cache(&info->rec_cache))
if ((info->opt_flag & WRITE_CACHE_USED) && flush_io_cache(&info->rec_cache))
{
if (unlikely(!my_errno))
my_errno= HA_ERR_INTERNAL_ERROR; /* Impossible */
return(-1);
}
return(inx);
} /* _ma_check_index */