Commit a9344b42 authored by serg@serg.mysql.com's avatar serg@serg.mysql.com
Browse files

myisammrg/myrg_rnext.c bug with incomlete queue fixed

myisammrg/myrg_rprev.c    bug with incomlete queue fixed
parent da7e3380
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -29,11 +29,7 @@ int myrg_rnext(MYRG_INFO *info, byte *buf, int inx)
  if ((err=mi_rnext(info->current_table->table,NULL,inx)))
  {
    if (err == HA_ERR_END_OF_FILE)
    {
      queue_remove(&(info->by_key),0);
      if (!info->by_key.elements)
	return HA_ERR_END_OF_FILE;
    }
    else
      return err;
  }
@@ -48,6 +44,9 @@ int myrg_rnext(MYRG_INFO *info, byte *buf, int inx)
  if ((err=_myrg_finish_scan(info, inx, HA_READ_KEY_OR_NEXT)))
    return err;

  if (!info->by_key.elements)
    return HA_ERR_END_OF_FILE;

  /* now, mymerge's read_next is as simple as one queue_top */
  mi=(info->current_table=(MYRG_TABLE *)queue_top(&(info->by_key)))->table;
  return mi_rrnd(mi,buf,mi->lastpos);
+3 −4
Original line number Diff line number Diff line
@@ -29,11 +29,7 @@ int myrg_rprev(MYRG_INFO *info, byte *buf, int inx)
  if ((err=mi_rprev(info->current_table->table,NULL,inx)))
  {
    if (err == HA_ERR_END_OF_FILE)
    {
      queue_remove(&(info->by_key),0);
      if (!info->by_key.elements)
	return HA_ERR_END_OF_FILE;
    }
    else
      return err;
  }
@@ -48,6 +44,9 @@ int myrg_rprev(MYRG_INFO *info, byte *buf, int inx)
  if ((err=_myrg_finish_scan(info, inx, HA_READ_KEY_OR_PREV)))
    return err;

  if (!info->by_key.elements)
    return HA_ERR_END_OF_FILE;

  /* now, mymerge's read_prev is as simple as one queue_top */
  mi=(info->current_table=(MYRG_TABLE *)queue_top(&(info->by_key)))->table;
  return mi_rrnd(mi,buf,mi->lastpos);