mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
BUG10365 Cluster handler uses non-standard error code
- Updated after review sql/ha_ndbcluster.cc: Return -1 if table does not exists sql/handler.cc: Return -1 if table does not exists Return 0 if table exists and it could be created Return >0 if table existed but it could not be created. sql/sql_base.cc: Only need to call ha_create_table_from_engine and check if result is > 0. If that is the case, print error message
This commit is contained in:
@ -4300,7 +4300,7 @@ int ndbcluster_discover(THD* thd, const char *db, const char *name,
|
||||
{
|
||||
const NdbError err= dict->getNdbError();
|
||||
if (err.code == 709)
|
||||
DBUG_RETURN(1);
|
||||
DBUG_RETURN(-1);
|
||||
ERR_RETURN(err);
|
||||
}
|
||||
DBUG_PRINT("info", ("Found table %s", tab->getName()));
|
||||
|
@ -1340,8 +1340,9 @@ int ha_create_table(const char *name, HA_CREATE_INFO *create_info,
|
||||
if found, write the frm file to disk.
|
||||
|
||||
RETURN VALUES:
|
||||
-1 : Table did not exists
|
||||
0 : Table created ok
|
||||
1 : Table could not be created
|
||||
> 0 : Error, table existed but could not be created
|
||||
|
||||
*/
|
||||
|
||||
@ -1361,10 +1362,10 @@ int ha_create_table_from_engine(THD* thd,
|
||||
|
||||
bzero((char*) &create_info,sizeof(create_info));
|
||||
|
||||
if(ha_discover(thd, db, name, &frmblob, &frmlen))
|
||||
if(error= ha_discover(thd, db, name, &frmblob, &frmlen))
|
||||
{
|
||||
// Table could not be discovered and thus not created
|
||||
DBUG_RETURN(1);
|
||||
DBUG_RETURN(error);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1377,11 +1378,11 @@ int ha_create_table_from_engine(THD* thd,
|
||||
if (writefrm(path, frmblob, frmlen))
|
||||
{
|
||||
my_free((char*) frmblob, MYF(MY_ALLOW_ZERO_PTR));
|
||||
DBUG_RETURN(1);
|
||||
DBUG_RETURN(2);
|
||||
}
|
||||
|
||||
if (openfrm(path,"",0,(uint) READ_ALL, 0, &table))
|
||||
DBUG_RETURN(1);
|
||||
DBUG_RETURN(3);
|
||||
|
||||
update_create_info_from_table(&create_info, &table);
|
||||
create_info.table_options|= HA_CREATE_FROM_ENGINE;
|
||||
@ -1506,14 +1507,15 @@ int ha_change_key_cache(KEY_CACHE *old_key_cache,
|
||||
Try to discover one table from handler(s)
|
||||
|
||||
RETURN
|
||||
0 ok. In this case *frmblob and *frmlen are set
|
||||
>=1 error. frmblob and frmlen may not be set
|
||||
-1 : Table did not exists
|
||||
0 : OK. In this case *frmblob and *frmlen are set
|
||||
>0 : error. frmblob and frmlen may not be set
|
||||
*/
|
||||
|
||||
int ha_discover(THD *thd, const char *db, const char *name,
|
||||
const void **frmblob, uint *frmlen)
|
||||
{
|
||||
int error= 1; // Table does not exist in any handler
|
||||
int error= -1; // Table does not exist in any handler
|
||||
DBUG_ENTER("ha_discover");
|
||||
DBUG_PRINT("enter", ("db: %s, name: %s", db, name));
|
||||
#ifdef HAVE_NDBCLUSTER_DB
|
||||
|
@ -1376,8 +1376,7 @@ static int open_unireg_entry(THD *thd, TABLE *entry, const char *db,
|
||||
*/
|
||||
if (discover_retry_count++ != 0)
|
||||
goto err;
|
||||
if (ha_table_exists_in_engine(thd, db, name) &&
|
||||
ha_create_table_from_engine(thd, db, name))
|
||||
if (ha_create_table_from_engine(thd, db, name) > 0)
|
||||
{
|
||||
/* Give right error message */
|
||||
thd->clear_error();
|
||||
|
Reference in New Issue
Block a user