summaryrefslogtreecommitdiff
path: root/sql/handler.cc
diff options
context:
space:
mode:
authorunknown <tomas@whalegate.ndb.mysql.com>2007-05-10 08:06:09 +0200
committerunknown <tomas@whalegate.ndb.mysql.com>2007-05-10 08:06:09 +0200
commit8d8a3205c579333ae84c9242365ddca0202306d9 (patch)
tree2d5565953b289fe2d26ba02e3f090fec5de45661 /sql/handler.cc
parentb32473a3d56374ae2620ecead5d29ff6d2239e96 (diff)
parent3d78e6fcd3b99c69416893a30e991aeb51eb6763 (diff)
downloadmariadb-git-8d8a3205c579333ae84c9242365ddca0202306d9.tar.gz
Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-opt
into whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-single-user sql/field.cc: Auto merged sql/field.h: Auto merged sql/ha_ndbcluster.cc: Auto merged sql/sql_table.cc: Auto merged sql/handler.cc: manual merge sql/mysqld.cc: manual merge sql/set_var.cc: manual merge sql/sql_plugin.cc: manual merge
Diffstat (limited to 'sql/handler.cc')
-rw-r--r--sql/handler.cc31
1 files changed, 18 insertions, 13 deletions
diff --git a/sql/handler.cc b/sql/handler.cc
index 9e1d79dd1ad..48600c68daf 100644
--- a/sql/handler.cc
+++ b/sql/handler.cc
@@ -2886,20 +2886,21 @@ ha_find_files(THD *thd,const char *db,const char *path,
DBUG_RETURN(error);
}
-
-/** @brief
+/*
Ask handler if the table exists in engine
RETURN
- 0 Table does not exist
- 1 Table exists
- # Error code
+ HA_ERR_NO_SUCH_TABLE Table does not exist
+ HA_ERR_TABLE_EXIST Table exists
+ # Error code
+
+ */
-*/
struct st_table_exists_in_engine_args
{
const char *db;
const char *name;
+ int err;
};
static my_bool table_exists_in_engine_handlerton(THD *thd, plugin_ref plugin,
@@ -2908,23 +2909,27 @@ static my_bool table_exists_in_engine_handlerton(THD *thd, plugin_ref plugin,
st_table_exists_in_engine_args *vargs= (st_table_exists_in_engine_args *)arg;
handlerton *hton= plugin_data(plugin, handlerton *);
+ int err= HA_ERR_NO_SUCH_TABLE;
+
if (hton->state == SHOW_OPTION_YES && hton->table_exists_in_engine)
- if ((hton->table_exists_in_engine(hton, thd, vargs->db, vargs->name)) == 1)
- return TRUE;
+ err = hton->table_exists_in_engine(hton, thd, vargs->db, vargs->name);
+
+ vargs->err = err;
+ if (vargs->err == HA_ERR_TABLE_EXIST)
+ return TRUE;
return FALSE;
}
int ha_table_exists_in_engine(THD* thd, const char* db, const char* name)
{
- int error= 0;
DBUG_ENTER("ha_table_exists_in_engine");
DBUG_PRINT("enter", ("db: %s, name: %s", db, name));
- st_table_exists_in_engine_args args= {db, name};
- error= plugin_foreach(thd, table_exists_in_engine_handlerton,
+ st_table_exists_in_engine_args args= {db, name, HA_ERR_NO_SUCH_TABLE};
+ plugin_foreach(thd, table_exists_in_engine_handlerton,
MYSQL_STORAGE_ENGINE_PLUGIN, &args);
- DBUG_PRINT("exit", ("error: %d", error));
- DBUG_RETURN(error);
+ DBUG_PRINT("exit", ("error: %d", args.err));
+ DBUG_RETURN(args.err);
}
#ifdef HAVE_NDB_BINLOG