Commit 843e9e65 authored by unknown's avatar unknown
Browse files

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

into  poseidon.ndb.mysql.com:/home/tomas/mysql-5.1-new

parents 605c82d2 601a4428
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -4728,13 +4728,14 @@ int ha_ndbcluster::final_drop_index(TABLE *table_arg)
int ha_ndbcluster::rename_table(const char *from, const char *to)
{
  NDBDICT *dict;
  char old_dbname[FN_HEADLEN];
  char new_tabname[FN_HEADLEN];
  const NDBTAB *orig_tab;
  int result;

  DBUG_ENTER("ha_ndbcluster::rename_table");
  DBUG_PRINT("info", ("Renaming %s to %s", from, to));
  set_dbname(from);
  set_dbname(from, old_dbname);
  set_tabname(from);
  set_tabname(to, new_tabname);

@@ -4742,6 +4743,7 @@ int ha_ndbcluster::rename_table(const char *from, const char *to)
    DBUG_RETURN(my_errno= HA_ERR_NO_CONNECTION);

  Ndb *ndb= get_ndb();
  ndb->setDatabaseName(old_dbname);
  dict= ndb->getDictionary();
  if (!(orig_tab= dict->getTable(m_tabname)))
    ERR_RETURN(dict->getNdbError());
@@ -4833,7 +4835,8 @@ int ha_ndbcluster::rename_table(const char *from, const char *to)
                               current_thd->query, current_thd->query_length,
                               m_dbname, new_tabname,
                               0, 0,
                               SOT_RENAME_TABLE);
                               SOT_RENAME_TABLE,
                               old_dbname, m_tabname);
  }
  if (share)
    free_share(&share);
+20 −10
Original line number Diff line number Diff line
@@ -885,7 +885,8 @@ int ndbcluster_log_schema_op(THD *thd, NDB_SHARE *share,
                             const char *db, const char *table_name,
                             uint32 ndb_table_id,
                             uint32 ndb_table_version,
                             enum SCHEMA_OP_TYPE type)
                             enum SCHEMA_OP_TYPE type,
                             const char *old_db, const char *old_table_name)
{
  DBUG_ENTER("ndbcluster_log_schema_op");
  Thd_ndb *thd_ndb= get_thd_ndb(thd);
@@ -919,10 +920,19 @@ int ndbcluster_log_schema_op(THD *thd, NDB_SHARE *share,
    query= tmp_buf2;
    query_length= (uint) (strxmov(tmp_buf2, "drop table `",
                                  table_name, "`", NullS) - tmp_buf2);
    // fall through
  case SOT_CREATE_TABLE:
    // fall through
    if (!share)
      get_a_share= 1;
    break;
  case SOT_RENAME_TABLE:
    /* redo the rename table query as is may contain several tables */
    query= tmp_buf2;
    query_length= (uint) (strxmov(tmp_buf2, "rename table `",
                                  old_db, ".", old_table_name, "` to `",
                                  db, ".", table_name, "`", NullS) - tmp_buf2);
    if (!share)
      get_a_share= 1;
    break;
  case SOT_CREATE_TABLE:
    // fall through
  case SOT_ALTER_TABLE:
    if (!share)
@@ -983,8 +993,8 @@ int ndbcluster_log_schema_op(THD *thd, NDB_SHARE *share,
  }

  Ndb *ndb= thd_ndb->ndb;
  char old_db[FN_REFLEN];
  strcpy(old_db, ndb->getDatabaseName());
  char save_db[FN_REFLEN];
  strcpy(save_db, ndb->getDatabaseName());

  char tmp_buf[SCHEMA_QUERY_SIZE];
  NDBDICT *dict= ndb->getDictionary();
@@ -1091,7 +1101,7 @@ int ndbcluster_log_schema_op(THD *thd, NDB_SHARE *share,
          
  if (trans)
    ndb->closeTransaction(trans);
  ndb->setDatabaseName(old_db);
  ndb->setDatabaseName(save_db);

  /*
    Wait for other mysqld's to acknowledge the table operation
@@ -1169,8 +1179,8 @@ ndbcluster_update_slock(THD *thd,
  const NdbError *ndb_error= 0;
  uint32 node_id= g_ndb_cluster_connection->node_id();
  Ndb *ndb= check_ndb_in_thd(thd);
  char old_db[128];
  strcpy(old_db, ndb->getDatabaseName());
  char save_db[FN_HEADLEN];
  strcpy(save_db, ndb->getDatabaseName());

  char tmp_buf[SCHEMA_QUERY_SIZE];
  NDBDICT *dict= ndb->getDictionary();
@@ -1292,7 +1302,7 @@ ndbcluster_update_slock(THD *thd,
                        db, table_name);
  if (trans)
    ndb->closeTransaction(trans);
  ndb->setDatabaseName(old_db);
  ndb->setDatabaseName(save_db);
  DBUG_RETURN(0);
}

+3 −1
Original line number Diff line number Diff line
@@ -95,7 +95,9 @@ int ndbcluster_log_schema_op(THD *thd, NDB_SHARE *share,
                             const char *db, const char *table_name,
                             uint32 ndb_table_id,
                             uint32 ndb_table_version,
                             enum SCHEMA_OP_TYPE type);
                             enum SCHEMA_OP_TYPE type,
                             const char *old_db= 0,
                             const char *old_table_name= 0);
int ndbcluster_handle_drop_table(Ndb *ndb, const char *event_name,
                                 NDB_SHARE *share);
void ndb_rep_event_name(String *event_name,