Commit 0f278f96 authored by unknown's avatar unknown
Browse files

Merge xiphis.org:/home/antony/work2/mysql-5.0-engines

into  xiphis.org:/home/antony/work2/p4-bug12096.2


sql/mysqld.cc:
  Auto merged
parents 32a7fafe 64b82dfd
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -736,6 +736,9 @@ typedef SOCKET_SIZE_TYPE size_socket;
#define DBL_MAX		1.79769313486231470e+308
#define FLT_MAX		((float)3.40282346638528860e+38)
#endif
#ifndef SSIZE_MAX
#define SSIZE_MAX ((~((size_t) 0)) / 2)
#endif

#if !defined(HAVE_ISINF) && !defined(isinf)
#define isinf(X)    0
+16 −18
Original line number Diff line number Diff line
@@ -453,25 +453,24 @@ int chk_key(MI_CHECK *param, register MI_INFO *info)
    if ((uint) share->base.auto_key -1 == key)
    {
      /* Check that auto_increment key is bigger than max key value */
      ulonglong save_auto_value=info->s->state.auto_increment;
      info->s->state.auto_increment=0;
      ulonglong auto_increment;
      info->lastinx=key;
      _mi_read_key_record(info, 0L, info->rec_buff);
      update_auto_increment(info, info->rec_buff);
      if (info->s->state.auto_increment > save_auto_value)
      auto_increment= retrieve_auto_increment(info, info->rec_buff);
      if (auto_increment > info->s->state.auto_increment)
      {
	mi_check_print_warning(param,
			       "Auto-increment value: %s is smaller than max used value: %s",
			       llstr(save_auto_value,buff2),
			       llstr(info->s->state.auto_increment, buff));
        mi_check_print_warning(param, "Auto-increment value: %s is smaller "
                               "than max used value: %s",
                               llstr(info->s->state.auto_increment,buff2),
                               llstr(auto_increment, buff));
      }
      if (param->testflag & T_AUTO_INC)
      {
        set_if_bigger(info->s->state.auto_increment,
                      auto_increment);
        set_if_bigger(info->s->state.auto_increment,
                      param->auto_increment_value);
      }
      else
	info->s->state.auto_increment=save_auto_value;

      /* Check that there isn't a row with auto_increment = 0 in the table */
      mi_extra(info,HA_EXTRA_KEYREAD,0);
@@ -481,8 +480,8 @@ int chk_key(MI_CHECK *param, register MI_INFO *info)
      {
	/* Don't count this as a real warning, as myisamchk can't correct it */
	uint save=param->warning_printed;
	mi_check_print_warning(param,
			       "Found row where the auto_increment column has the value 0");
        mi_check_print_warning(param, "Found row where the auto_increment "
                               "column has the value 0");
	param->warning_printed=save;
      }
      mi_extra(info,HA_EXTRA_NO_KEYREAD,0);
@@ -4099,11 +4098,10 @@ void update_auto_increment_key(MI_CHECK *param, MI_INFO *info,
  }
  else
  {
    ulonglong auto_increment= (repair_only ? info->s->state.auto_increment :
			       param->auto_increment_value);
    info->s->state.auto_increment=0;
    update_auto_increment(info, record);
    ulonglong auto_increment= retrieve_auto_increment(info, record);
    set_if_bigger(info->s->state.auto_increment,auto_increment);
    if (!repair_only)
      set_if_bigger(info->s->state.auto_increment, param->auto_increment_value);
  }
  mi_extra(info,HA_EXTRA_NO_KEYREAD,0);
  my_free((char*) record, MYF(0));
+6 −8
Original line number Diff line number Diff line
@@ -509,20 +509,19 @@ int _mi_read_key_record(MI_INFO *info, my_off_t filepos, byte *buf)


/*
  Update auto_increment info
  Retrieve auto_increment info

  SYNOPSIS
    update_auto_increment()
    retrieve_auto_increment()
    info			MyISAM handler
    record			Row to update

  IMPLEMENTATION
    Only replace the auto_increment value if it is higher than the previous
    one. For signed columns we don't update the auto increment value if it's
    For signed columns we don't retrieve the auto increment value if it's
    less than zero.
*/

void update_auto_increment(MI_INFO *info,const byte *record)
ulonglong retrieve_auto_increment(MI_INFO *info,const byte *record)
{
  ulonglong value= 0;			/* Store unsigned values here */
  longlong s_value= 0;			/* Store signed values here */
@@ -587,6 +586,5 @@ void update_auto_increment(MI_INFO *info,const byte *record)
    and if s_value == 0 then value will contain either s_value or the
    correct value.
  */
  set_if_bigger(info->s->state.auto_increment,
                (s_value > 0) ? (ulonglong) s_value : value);
  return (s_value > 0) ? (ulonglong) s_value : value;
}
+2 −1
Original line number Diff line number Diff line
@@ -164,7 +164,8 @@ int mi_update(register MI_INFO *info, const byte *oldrec, byte *newrec)
      key_changed|= HA_STATE_CHANGED;		/* Must update index file */
  }
  if (auto_key_changed)
    update_auto_increment(info,newrec);
    set_if_bigger(info->s->state.auto_increment,
                  retrieve_auto_increment(info, newrec));
  if (share->calc_checksum)
    info->state->checksum+=(info->checksum - old_checksum);

+2 −1
Original line number Diff line number Diff line
@@ -149,7 +149,8 @@ int mi_write(MI_INFO *info, byte *record)
    info->state->checksum+=info->checksum;
  }
  if (share->base.auto_key)
    update_auto_increment(info,record);
    set_if_bigger(info->s->state.auto_increment,
                  retrieve_auto_increment(info, record));
  info->update= (HA_STATE_CHANGED | HA_STATE_AKTIV | HA_STATE_WRITTEN |
		 HA_STATE_ROW_CHANGED);
  info->state->records++;
Loading