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

Merge mskold@bk-internal.mysql.com:/home/bk/mysql-5.1-new

into  linux.site:/home/marty/MySQL/mysql-5.1-new


sql/ha_partition.cc:
  Auto merged
parents 39bf253c 0b5fe0f8
Loading
Loading
Loading
Loading
+26 −12
Original line number Diff line number Diff line
@@ -4696,8 +4696,9 @@ int ha_ndbcluster::create(const char *name,
  DBUG_RETURN(my_errno);
}

int ha_ndbcluster::create_handler_files(const char *file) 
int ha_ndbcluster::create_handler_files(const char *file, HA_CREATE_INFO *info) 
{ 
  char path[FN_REFLEN];
  const char *name;
  Ndb* ndb;
  const NDBTAB *tab;
@@ -4707,16 +4708,21 @@ int ha_ndbcluster::create_handler_files(const char *file)

  DBUG_ENTER("create_handler_files");

  DBUG_PRINT("enter", ("file: %s", file));
  if (!(ndb= get_ndb()))
    DBUG_RETURN(HA_ERR_NO_CONNECTION);

  NDBDICT *dict= ndb->getDictionary();
  if (!(tab= dict->getTable(m_tabname)))
  if (!info->frm_only)
    DBUG_RETURN(0); // Must be a create, ignore since frm is saved in create
  set_dbname(file);
  set_tabname(file);
  DBUG_PRINT("info", ("m_dbname: %s, m_tabname: %s", m_dbname, m_tabname));
  if (!(tab= dict->getTable(m_tabname)))
    DBUG_RETURN(0); // Unkown table, must be temporary table

  DBUG_ASSERT(get_ndb_share_state(m_share) == NSS_ALTERED);
  name= table->s->normalized_path.str;
  DBUG_PRINT("enter", ("m_tabname: %s, path: %s", m_tabname, name));
  if (readfrm(name, &data, &length) ||
  if (readfrm(file, &data, &length) ||
      packfrm(data, length, &pack_data, &pack_length))
  {
    DBUG_PRINT("info", ("Missing frm for %s", m_tabname));
@@ -4732,6 +4738,7 @@ int ha_ndbcluster::create_handler_files(const char *file)
    my_free((char*)data, MYF(MY_ALLOW_ZERO_PTR));
    my_free((char*)pack_data, MYF(MY_ALLOW_ZERO_PTR));
  }
  
  set_ndb_share_state(m_share, NSS_INITIAL);
  free_share(&m_share); // Decrease ref_count

@@ -4838,6 +4845,15 @@ int ha_ndbcluster::create_ndb_index(const char *name,
  DBUG_RETURN(0);  
}

/*
 Prepare for an on-line alter table
*/ 
void ha_ndbcluster::prepare_for_alter()
{
  ndbcluster_get_share(m_share); // Increase ref_count
  set_ndb_share_state(m_share, NSS_ALTERED);
}

/*
  Add an index on-line to a table
*/
@@ -4850,7 +4866,7 @@ int ha_ndbcluster::add_index(TABLE *table_arg,
  int error= 0;
  uint idx;

  DBUG_ASSERT(m_share->state == NSS_INITIAL);
  DBUG_ASSERT(m_share->state == NSS_ALTERED);
  for (idx= 0; idx < num_of_keys; idx++)
  {
    KEY *key= key_info + idx;
@@ -4866,10 +4882,10 @@ int ha_ndbcluster::add_index(TABLE *table_arg,
    if((error= create_index(key_info[idx].name, key, idx_type, idx)))
      break;
  }
  if (!error)
  if (error)
  {
    ndbcluster_get_share(m_share); // Increase ref_count
    set_ndb_share_state(m_share, NSS_ALTERED);
    set_ndb_share_state(m_share, NSS_INITIAL);
    free_share(&m_share); // Decrease ref_count
  }
  DBUG_RETURN(error);  
}
@@ -4894,7 +4910,7 @@ int ha_ndbcluster::prepare_drop_index(TABLE *table_arg,
                                      uint *key_num, uint num_of_keys)
{
  DBUG_ENTER("ha_ndbcluster::prepare_drop_index");
  DBUG_ASSERT(m_share->state == NSS_INITIAL);
  DBUG_ASSERT(m_share->state == NSS_ALTERED);
  // Mark indexes for deletion
  uint idx;
  for (idx= 0; idx < num_of_keys; idx++)
@@ -4907,8 +4923,6 @@ int ha_ndbcluster::prepare_drop_index(TABLE *table_arg,
  Thd_ndb *thd_ndb= get_thd_ndb(thd);
  Ndb *ndb= thd_ndb->ndb;
  renumber_indexes(ndb, table_arg);
  ndbcluster_get_share(m_share); // Increase ref_count
  set_ndb_share_state(m_share, NSS_ALTERED);
  DBUG_RETURN(0);
}
 
+2 −1
Original line number Diff line number Diff line
@@ -595,6 +595,7 @@ class ha_ndbcluster: public handler
  const char * table_type() const;
  const char ** bas_ext() const;
  ulong table_flags(void) const;
  void prepare_for_alter();
  int add_index(TABLE *table_arg, KEY *key_info, uint num_of_keys);
  int prepare_drop_index(TABLE *table_arg, uint *key_num, uint num_of_keys);
  int final_drop_index(TABLE *table_arg);
@@ -609,7 +610,7 @@ class ha_ndbcluster: public handler
  int rename_table(const char *from, const char *to);
  int delete_table(const char *name);
  int create(const char *name, TABLE *form, HA_CREATE_INFO *info);
  int create_handler_files(const char *file);
  int create_handler_files(const char *file, HA_CREATE_INFO *info);
  int get_default_no_partitions(ulonglong max_rows);
  bool get_no_parts(const char *name, uint *no_parts);
  void set_auto_partitions(partition_info *part_info);
+3 −1
Original line number Diff line number Diff line
@@ -562,6 +562,7 @@ int ha_partition::rename_table(const char *from, const char *to)
  SYNOPSIS
    create_handler_files()
    name                              Full path of table name
    create_info                       Create info generated for CREATE TABLE

  RETURN VALUE
    >0                        Error
@@ -575,7 +576,8 @@ int ha_partition::rename_table(const char *from, const char *to)
    and types of engines in the partitions.
*/

int ha_partition::create_handler_files(const char *name)
int ha_partition::create_handler_files(const char *name,
                                       HA_CREATE_INFO *create_info)
{
  DBUG_ENTER("ha_partition::create_handler_files()");

+2 −1
Original line number Diff line number Diff line
@@ -179,7 +179,8 @@ class ha_partition :public handler
  virtual int rename_table(const char *from, const char *to);
  virtual int create(const char *name, TABLE *form,
		     HA_CREATE_INFO *create_info);
  virtual int create_handler_files(const char *name);
  virtual int create_handler_files(const char *name, 
                                   HA_CREATE_INFO *create_info);
  virtual void update_create_info(HA_CREATE_INFO *create_info);
  virtual char *update_table_comment(const char *comment);
  virtual int change_partitions(HA_CREATE_INFO *create_info,
+3 −1
Original line number Diff line number Diff line
@@ -1338,6 +1338,7 @@ class handler :public Sql_alloc

  virtual ulong index_flags(uint idx, uint part, bool all_parts) const =0;

  virtual void prepare_for_alter() { return; }
  virtual int add_index(TABLE *table_arg, KEY *key_info, uint num_of_keys)
  { return (HA_ERR_WRONG_COMMAND); }
  virtual int prepare_drop_index(TABLE *table_arg, uint *key_num,
@@ -1378,7 +1379,8 @@ class handler :public Sql_alloc
  virtual void drop_table(const char *name);
  
  virtual int create(const char *name, TABLE *form, HA_CREATE_INFO *info)=0;
  virtual int create_handler_files(const char *name) { return FALSE;}
  virtual int create_handler_files(const char *name, HA_CREATE_INFO *info) 
  { return FALSE;}

  virtual int change_partitions(HA_CREATE_INFO *create_info,
                                const char *path,
Loading