Commit 9a1f030e authored by unknown's avatar unknown

Merged test case


sql/ha_ndbcluster.cc:
  Auto merged
mysql-test/r/ndb_autodiscover.result:
  Merge
BitKeeper/etc/logging_ok:
  Logging to logging@openlogging.org accepted
parents e0875776 329076db
...@@ -155,6 +155,7 @@ mronstrom@mysql.com ...@@ -155,6 +155,7 @@ mronstrom@mysql.com
mskold@bk-internal.mysql.com mskold@bk-internal.mysql.com
mskold@mysql.com mskold@mysql.com
msvensson@build.mysql.com msvensson@build.mysql.com
msvensson@neptunus.(none)
msvensson@neptunus.homeip.net msvensson@neptunus.homeip.net
mwagner@cash.mwagner.org mwagner@cash.mwagner.org
mwagner@evoq.mwagner.org mwagner@evoq.mwagner.org
......
...@@ -167,8 +167,25 @@ show status like 'handler_discover%'; ...@@ -167,8 +167,25 @@ show status like 'handler_discover%';
Variable_name Value Variable_name Value
Handler_discover 0 Handler_discover 0
drop table t4; drop table t4;
ERROR 42S02: Unknown table 't4'
create table t4(
id int not null primary key,
name char(27)
) engine=ndb;
insert into t4 values (1, "Automatic");
select * from t4;
id name
1 Automatic
select * from t4;
ERROR 42S02: Table 'test.t4' doesn't exist
drop table if exists t4;
Warnings:
Note 1051 Unknown table 't4'
drop table t5;
ERROR 42S02: Unknown table 't5'
drop table if exists t5;
Warnings: Warnings:
Error 1296 Got error 709 'No such table existed' from NDB Note 1051 Unknown table 't5'
flush status; flush status;
create table t4( create table t4(
id int not null primary key, id int not null primary key,
......
...@@ -209,8 +209,30 @@ select * from t4; ...@@ -209,8 +209,30 @@ select * from t4;
select * from t4; select * from t4;
show status like 'handler_discover%'; show status like 'handler_discover%';
--error 1051
drop table t4; drop table t4;
create table t4(
id int not null primary key,
name char(27)
) engine=ndb;
insert into t4 values (1, "Automatic");
select * from t4;
# Remove the table from NDB
system exec $NDB_TOOLS_DIR/ndb_drop_table --no-defaults -d test t4 >> $NDB_TOOLS_OUTPUT ;
--error 1146
select * from t4;
drop table if exists t4;
# Test that dropping a table that does not exists
# on disk or in NDB gives same result as above
--error 1051
drop table t5;
drop table if exists t5;
####################################################### #######################################################
# Test that a table that has been dropped from NDB # Test that a table that has been dropped from NDB
......
...@@ -157,7 +157,7 @@ static const err_code_mapping err_map[]= ...@@ -157,7 +157,7 @@ static const err_code_mapping err_map[]=
{ 721, HA_ERR_TABLE_EXIST, 1 }, { 721, HA_ERR_TABLE_EXIST, 1 },
{ 4244, HA_ERR_TABLE_EXIST, 1 }, { 4244, HA_ERR_TABLE_EXIST, 1 },
{ 709, HA_ERR_NO_SUCH_TABLE, 1 }, { 709, HA_ERR_NO_SUCH_TABLE, 0 },
{ 284, HA_ERR_NO_SUCH_TABLE, 1 }, { 284, HA_ERR_NO_SUCH_TABLE, 1 },
{ 266, HA_ERR_LOCK_WAIT_TIMEOUT, 1 }, { 266, HA_ERR_LOCK_WAIT_TIMEOUT, 1 },
...@@ -2362,14 +2362,13 @@ void ha_ndbcluster::print_results() ...@@ -2362,14 +2362,13 @@ void ha_ndbcluster::print_results()
char buf_type[MAX_FIELD_WIDTH], buf_val[MAX_FIELD_WIDTH]; char buf_type[MAX_FIELD_WIDTH], buf_val[MAX_FIELD_WIDTH];
String type(buf_type, sizeof(buf_type), &my_charset_bin); String type(buf_type, sizeof(buf_type), &my_charset_bin);
String val(buf_val, sizeof(buf_val), &my_charset_bin); String val(buf_val, sizeof(buf_val), &my_charset_bin);
for (uint f=0; f<table->s->fields;f++) for (uint f= 0; f < table->s->fields; f++)
{ {
/* Use DBUG_PRINT since DBUG_FILE cannot be filtered out */ /* Use DBUG_PRINT since DBUG_FILE cannot be filtered out */
char buf[2000]; char buf[2000];
Field *field; Field *field;
void* ptr; void* ptr;
NdbValue value; NdbValue value;
NdbBlob *ndb_blob;
buf[0]= 0; buf[0]= 0;
field= table->field[f]; field= table->field[f];
...@@ -2383,7 +2382,6 @@ void ha_ndbcluster::print_results() ...@@ -2383,7 +2382,6 @@ void ha_ndbcluster::print_results()
if (! (field->flags & BLOB_FLAG)) if (! (field->flags & BLOB_FLAG))
{ {
ndb_blob= NULL;
if (value.rec->isNULL()) if (value.rec->isNULL())
{ {
my_snprintf(buf, sizeof(buf), "NULL"); my_snprintf(buf, sizeof(buf), "NULL");
...@@ -2397,7 +2395,7 @@ void ha_ndbcluster::print_results() ...@@ -2397,7 +2395,7 @@ void ha_ndbcluster::print_results()
} }
else else
{ {
ndb_blob= value.blob; NdbBlob *ndb_blob= value.blob;
bool isNull= TRUE; bool isNull= TRUE;
ndb_blob->getNull(isNull); ndb_blob->getNull(isNull);
if (isNull) { if (isNull) {
...@@ -3994,45 +3992,43 @@ int ha_ndbcluster::alter_table_name(const char *to) ...@@ -3994,45 +3992,43 @@ int ha_ndbcluster::alter_table_name(const char *to)
/* /*
Delete a table from NDB Cluster Delete table from NDB Cluster
*/ */
int ha_ndbcluster::delete_table(const char *name) int ha_ndbcluster::delete_table(const char *name)
{ {
DBUG_ENTER("delete_table"); DBUG_ENTER("ha_ndbcluster::delete_table");
DBUG_PRINT("enter", ("name: %s", name)); DBUG_PRINT("enter", ("name: %s", name));
set_dbname(name); set_dbname(name);
set_tabname(name); set_tabname(name);
if (check_ndb_connection()) if (check_ndb_connection())
DBUG_RETURN(HA_ERR_NO_CONNECTION); DBUG_RETURN(HA_ERR_NO_CONNECTION);
// Remove .ndb file
/* Call ancestor function to delete .ndb file */
handler::delete_table(name); handler::delete_table(name);
/* Drop the table from NDB */
DBUG_RETURN(drop_table()); DBUG_RETURN(drop_table());
} }
/* /*
Drop a table in NDB Cluster Drop table in NDB Cluster
*/ */
int ha_ndbcluster::drop_table() int ha_ndbcluster::drop_table()
{ {
Ndb *ndb= get_ndb(); Ndb *ndb= get_ndb();
NdbDictionary::Dictionary *dict= ndb->getDictionary(); NdbDictionary::Dictionary *dict= ndb->getDictionary();
DBUG_ENTER("drop_table"); DBUG_ENTER("drop_table");
DBUG_PRINT("enter", ("Deleting %s", m_tabname)); DBUG_PRINT("enter", ("Deleting %s", m_tabname));
if (dict->dropTable(m_tabname))
{
const NdbError err= dict->getNdbError();
if (err.code == 709)
; // 709: No such table existed
else
ERR_RETURN(dict->getNdbError());
}
release_metadata(); release_metadata();
if (dict->dropTable(m_tabname))
ERR_RETURN(dict->getNdbError());
DBUG_RETURN(0); DBUG_RETURN(0);
} }
...@@ -4509,18 +4505,20 @@ int ndbcluster_find_files(THD *thd,const char *db,const char *path, ...@@ -4509,18 +4505,20 @@ int ndbcluster_find_files(THD *thd,const char *db,const char *path,
// Delete old files // Delete old files
List_iterator_fast<char> it3(delete_list); List_iterator_fast<char> it3(delete_list);
while ((file_name=it3++)) while ((file_name=it3++))
{ {
DBUG_PRINT("info", ("Remove table %s/%s",db, file_name )); DBUG_PRINT("info", ("Remove table %s/%s", db, file_name));
// Delete the table and all related files // Delete the table and all related files
TABLE_LIST table_list; TABLE_LIST table_list;
bzero((char*) &table_list,sizeof(table_list)); bzero((char*) &table_list,sizeof(table_list));
table_list.db= (char*) db; table_list.db= (char*) db;
table_list.alias= table_list.table_name= (char*)file_name; table_list.alias= table_list.table_name= (char*)file_name;
(void)mysql_rm_table_part2(thd, &table_list, (void)mysql_rm_table_part2(thd, &table_list,
/* if_exists */ TRUE, /* if_exists */ FALSE,
/* drop_temporary */ FALSE, /* drop_temporary */ FALSE,
/* drop_view */ FALSE, /* drop_view */ FALSE,
/* dont_log_query*/ TRUE); /* dont_log_query*/ TRUE);
/* Clear error message that is returned when table is deleted */
thd->clear_error();
} }
} }
......
...@@ -249,6 +249,21 @@ int mysql_rm_table_part2(THD *thd, TABLE_LIST *tables, bool if_exists, ...@@ -249,6 +249,21 @@ int mysql_rm_table_part2(THD *thd, TABLE_LIST *tables, bool if_exists,
if (!(error=my_delete(path,MYF(MY_WME)))) if (!(error=my_delete(path,MYF(MY_WME))))
some_tables_deleted=1; some_tables_deleted=1;
} }
if (error == HA_ERR_NO_SUCH_TABLE)
{
/* The table did not exist in engine */
if (if_exists)
{
push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_NOTE,
ER_BAD_TABLE_ERROR, ER(ER_BAD_TABLE_ERROR),
table->table_name);
error= 0;
}
/* Delete the table definition file */
strmov(end,reg_ext);
if (!(my_delete(path,MYF(MY_WME))))
some_tables_deleted=1;
}
} }
if (error) if (error)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment