Commit 3388a763 authored by unknown's avatar unknown
Browse files

Merge reggie@linux:/home/reggie/work/mysql-5.1

into  big_geek.:C:/Work/mysql/mysql-5.1-bug17720

parents 85d59f4c 5f705921
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -3736,6 +3736,7 @@ static void fix_win_paths(const char* val, int len)
  {
    const char** pattern= dynamic_element(&patterns, i, const char**);
    DBUG_PRINT("info", ("pattern: %s", *pattern));
    if (strlen(*pattern) == 0) continue;
    /* Search for the path in string */
    while ((p= strstr(val, *pattern)))
    {
+40 −1
Original line number Diff line number Diff line
@@ -218,6 +218,7 @@ void ha_partition::init_handler_variables()
  m_engine_array= NULL;
  m_file= NULL;
  m_reorged_file= NULL;
  m_new_file= NULL;
  m_reorged_parts= 0;
  m_added_file= NULL;
  m_tot_parts= 0;
@@ -4680,11 +4681,13 @@ int ha_partition::extra(enum ha_extra_function operation)
  }

  /* Category 3), used by MyISAM handlers */
  case HA_EXTRA_PREPARE_FOR_DELETE:
    DBUG_RETURN(prepare_for_delete());
    break;
  case HA_EXTRA_NORMAL:
  case HA_EXTRA_QUICK:
  case HA_EXTRA_NO_READCHECK:
  case HA_EXTRA_PREPARE_FOR_UPDATE:
  case HA_EXTRA_PREPARE_FOR_DELETE:
  case HA_EXTRA_FORCE_REOPEN:
  case HA_EXTRA_FLUSH_CACHE:
  {
@@ -4793,6 +4796,41 @@ void ha_partition::prepare_extra_cache(uint cachesize)
}


/*
  Prepares our new and reorged handlers for rename or delete

  SYNOPSIS
    prepare_for_delete()

  RETURN VALUE
    >0                    Error code
    0                     Success
*/

int ha_partition::prepare_for_delete()
{
  int result= 0, tmp;
  handler **file;
  DBUG_ENTER("ha_partition::prepare_for_delete()");
  
  if (m_new_file != NULL)
  {
    for (file= m_new_file; *file; file++)
      if ((tmp= (*file)->extra(HA_EXTRA_PREPARE_FOR_DELETE)))
        result= tmp;      
    for (file= m_reorged_file; *file; file++)
      if ((tmp= (*file)->extra(HA_EXTRA_PREPARE_FOR_DELETE)))
        result= tmp;      
  }
  else
  {
    for (file= m_file; *file; file++)
      if ((tmp= (*file)->extra(HA_EXTRA_PREPARE_FOR_DELETE)))
        result= tmp;      
  }
  DBUG_RETURN(result);
}

/*
  Call extra on all partitions

@@ -4810,6 +4848,7 @@ int ha_partition::loop_extra(enum ha_extra_function operation)
  int result= 0, tmp;
  handler **file;
  DBUG_ENTER("ha_partition::loop_extra()");
  
  /* 
    TODO, 5.2: this is where you could possibly add optimisations to add the bitmap
    _if_ a SELECT.
+1 −0
Original line number Diff line number Diff line
@@ -197,6 +197,7 @@ class ha_partition :public handler
    DBUG_RETURN(0);
  }
private:
  int prepare_for_delete();
  int copy_partitions(ulonglong *copied, ulonglong *deleted);
  void cleanup_new_partition(uint part_count);
  int prepare_new_partition(TABLE *table, HA_CREATE_INFO *create_info,