Commit 1dfaaba8 authored by unknown's avatar unknown
Browse files

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

into  mysql.com:/usr/local/home/marty/MySQL/mysql-4.1

parents 83bbd30c bb8bee51
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -179,8 +179,7 @@ a b c
2	two	two
alter table t1 drop index c;
select * from t1 where b = 'two';
a	b	c
2	two	two
ERROR HY000: Table definition has changed, please retry transaction
select * from t1 where b = 'two';
a	b	c
2	two	two
+4 −0
Original line number Diff line number Diff line
@@ -138,6 +138,7 @@ INSERT INTO t1 VALUES (1,2,0),(18,19,4),(20,21,0);
select c from t1 order by c;
drop table t1;

--disable_ps_protocol
create table t1 ( a int primary key, b varchar(10), c varchar(10), index (b) )
engine=ndb;
insert into t1 values (1,'one','one'), (2,'two','two'), (3,'three','three');
@@ -147,10 +148,13 @@ select * from t1 where b = 'two';
connection server1;
alter table t1 drop index c;
connection server2;
# This should fail since index information is not automatically refreshed
--error 1105
select * from t1 where b = 'two';
select * from t1 where b = 'two';
connection server1;
drop table t1;
--enable_ps_protocol

#--disable_warnings
#DROP TABLE IF EXISTS t2;
+39 −5
Original line number Diff line number Diff line
@@ -50,6 +50,8 @@ static const char *ha_ndb_ext=".ndb";
#define NDB_FAILED_AUTO_INCREMENT ~(Uint64)0
#define NDB_AUTO_INCREMENT_RETRIES 10

#define NDB_INVALID_SCHEMA_OBJECT 241

#define ERR_PRINT(err) \
  DBUG_PRINT("error", ("%d  message: %s", err.code, err.message))

@@ -212,7 +214,21 @@ Thd_ndb::Thd_ndb()
Thd_ndb::~Thd_ndb()
{
  if (ndb)
  {
#ifndef DBUG_OFF
    Ndb::Free_list_usage tmp; tmp.m_name= 0;
    while (ndb->get_free_list_usage(&tmp))
    {
      uint leaked= (uint) tmp.m_created - tmp.m_free;
      if (leaked)
        fprintf(stderr, "NDB: Found %u %s%s that %s not been released\n",
                leaked, tmp.m_name,
                (leaked == 1)?"":"'s",
                (leaked == 1)?"has":"have");
    }
#endif
    delete ndb;
  }
  ndb= 0;
}

@@ -3269,15 +3285,19 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type)
        DBUG_PRINT("info", ("Table schema version: %d", 
                            tab->getObjectVersion()));
      }
      if (m_table != (void *)tab || m_table_version < tab->getObjectVersion())
      if (m_table != (void *)tab)
      {
        /*
          The table has been altered, refresh the index list
        */
        build_index_list(ndb, table, ILBP_OPEN);  
        m_table= (void *)tab;
        m_table_version = tab->getObjectVersion();
      }
      else if (m_table_version < tab->getObjectVersion())
      {
        /*
          The table has been altered, caller has to retry
        */
        NdbError err= ndb->getNdbError(NDB_INVALID_SCHEMA_OBJECT);
        DBUG_RETURN(ndb_to_mysql_error(&err));
      }
      m_table_info= tab_info;
    }
    no_uncommitted_rows_init(thd);
@@ -4657,7 +4677,21 @@ bool ndbcluster_end()
{
  DBUG_ENTER("ndbcluster_end");
  if(g_ndb)
  {
#ifndef DBUG_OFF
    Ndb::Free_list_usage tmp; tmp.m_name= 0;
    while (g_ndb->get_free_list_usage(&tmp))
    {
      uint leaked= (uint) tmp.m_created - tmp.m_free;
      if (leaked)
        fprintf(stderr, "NDB: Found %u %s%s that %s not been released\n",
                leaked, tmp.m_name,
                (leaked == 1)?"":"'s",
                (leaked == 1)?"has":"have");
    }
#endif
    delete g_ndb;
  }
  g_ndb= NULL;
  if (g_ndb_cluster_connection)
    delete g_ndb_cluster_connection;