summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Golubchik <sergii@pisem.net>2013-04-09 15:34:09 +0200
committerSergei Golubchik <sergii@pisem.net>2013-04-09 15:34:09 +0200
commit5ad68a0d2f66b2d36f0a509c443829d58477caa2 (patch)
tree50db6c8c76f336bdecce14bdc8a64b6e4fd0e13f
parentcda52b2cb28091c4372880a2b68a9174f21bd885 (diff)
downloadmariadb-git-5ad68a0d2f66b2d36f0a509c443829d58477caa2.tar.gz
don't use I_S constants for open_table_def and get_table_share,
have a specially defined enum with clearly named values
-rw-r--r--sql/handler.cc4
-rw-r--r--sql/sql_admin.cc4
-rw-r--r--sql/sql_base.cc32
-rw-r--r--sql/sql_base.h2
-rw-r--r--sql/sql_show.cc4
-rw-r--r--sql/sql_table.cc2
-rw-r--r--sql/table.cc12
-rw-r--r--sql/table.h8
8 files changed, 31 insertions, 37 deletions
diff --git a/sql/handler.cc b/sql/handler.cc
index 8dd0a5d6995..0091c765042 100644
--- a/sql/handler.cc
+++ b/sql/handler.cc
@@ -4104,7 +4104,7 @@ int ha_create_table(THD *thd, const char *path,
DBUG_ENTER("ha_create_table");
init_tmp_table_share(thd, &share, db, 0, table_name, path);
- if (open_table_def(thd, &share, 0) ||
+ if (open_table_def(thd, &share) ||
open_table_from_share(thd, &share, "", 0, (uint) READ_ALL, 0, &table,
TRUE))
goto err;
@@ -4171,7 +4171,7 @@ int ha_create_table_from_engine(THD* thd, const char *db, const char *name)
DBUG_RETURN(2);
init_tmp_table_share(thd, &share, db, 0, name, path);
- if (open_table_def(thd, &share, 0))
+ if (open_table_def(thd, &share))
{
DBUG_RETURN(3);
}
diff --git a/sql/sql_admin.cc b/sql/sql_admin.cc
index 10636fd7296..43500211e1b 100644
--- a/sql/sql_admin.cc
+++ b/sql/sql_admin.cc
@@ -128,8 +128,8 @@ static int prepare_for_repair(THD *thd, TABLE_LIST *table_list,
hash_value= my_calc_hash(&table_def_cache, (uchar*) key, key_length);
mysql_mutex_lock(&LOCK_open);
- share= get_table_share(thd, table_list, key, key_length, 0,
- &error, hash_value);
+ share= get_table_share(thd, table_list, key, key_length,
+ FRM_READ_TABLE_ONLY, &error, hash_value);
mysql_mutex_unlock(&LOCK_open);
if (share == NULL)
DBUG_RETURN(0); // Can't open frm file
diff --git a/sql/sql_base.cc b/sql/sql_base.cc
index 0d31ba06e12..9b9411c63a1 100644
--- a/sql/sql_base.cc
+++ b/sql/sql_base.cc
@@ -575,7 +575,7 @@ static void table_def_unuse_table(TABLE *table)
*/
TABLE_SHARE *get_table_share(THD *thd, TABLE_LIST *table_list, char *key,
- uint key_length, uint db_flags, int *error,
+ uint key_length, enum read_frm_op op, int *error,
my_hash_value_type hash_value)
{
TABLE_SHARE *share;
@@ -622,7 +622,7 @@ TABLE_SHARE *get_table_share(THD *thd, TABLE_LIST *table_list, char *key,
free_table_share(share);
DBUG_RETURN(0); // return error
}
- if (open_table_def(thd, share, db_flags))
+ if (open_table_def(thd, share, op))
{
*error= share->error;
(void) my_hash_delete(&table_def_cache, (uchar*) share);
@@ -644,7 +644,7 @@ found:
open_table_error(share, share->error, share->open_errno, share->errarg);
DBUG_RETURN(0);
}
- if (share->is_view && !(db_flags & OPEN_VIEW))
+ if (share->is_view && op != FRM_READ_NO_ERROR_FOR_VIEW)
{
open_table_error(share, 1, ENOENT, 0);
DBUG_RETURN(0);
@@ -685,7 +685,7 @@ found:
static TABLE_SHARE *
get_table_share_with_discover(THD *thd, TABLE_LIST *table_list,
char *key, uint key_length,
- uint db_flags, int *error,
+ enum read_frm_op op, int *error,
my_hash_value_type hash_value)
{
@@ -693,7 +693,7 @@ get_table_share_with_discover(THD *thd, TABLE_LIST *table_list,
bool exists;
DBUG_ENTER("get_table_share_with_discover");
- share= get_table_share(thd, table_list, key, key_length, db_flags, error,
+ share= get_table_share(thd, table_list, key, key_length, op, error,
hash_value);
/*
If share is not NULL, we found an existing share.
@@ -3014,10 +3014,9 @@ retry_share:
mysql_mutex_lock(&LOCK_open);
- if (!(share= get_table_share_with_discover(thd, table_list, key,
- key_length, OPEN_VIEW,
- &error,
- hash_value)))
+ if (!(share= get_table_share_with_discover(thd, table_list, key, key_length,
+ FRM_READ_NO_ERROR_FOR_VIEW,
+ &error, hash_value)))
{
mysql_mutex_unlock(&LOCK_open);
/*
@@ -3856,10 +3855,8 @@ bool tdc_open_view(THD *thd, TABLE_LIST *table_list, const char *alias,
cache_key_length);
mysql_mutex_lock(&LOCK_open);
- if (!(share= get_table_share(thd, table_list, cache_key,
- cache_key_length,
- OPEN_VIEW, &error,
- hash_value)))
+ if (!(share= get_table_share(thd, table_list, cache_key, cache_key_length,
+ FRM_READ_NO_ERROR_FOR_VIEW, &error, hash_value)))
goto err;
if (share->is_view &&
@@ -3949,9 +3946,8 @@ static bool auto_repair_table(THD *thd, TABLE_LIST *table_list)
cache_key_length);
mysql_mutex_lock(&LOCK_open);
- if (!(share= get_table_share(thd, table_list, cache_key,
- cache_key_length,
- OPEN_VIEW, &not_used,
+ if (!(share= get_table_share(thd, table_list, cache_key, cache_key_length,
+ FRM_READ_NO_ERROR_FOR_VIEW, &not_used,
hash_value)))
goto end_unlock;
@@ -6117,7 +6113,7 @@ TABLE *open_table_uncached(THD *thd, const char *path, const char *db,
init_tmp_table_share(thd, share, saved_cache_key, key_length,
strend(saved_cache_key)+1, tmp_path);
- if (open_table_def(thd, share, 0) ||
+ if (open_table_def(thd, share) ||
open_table_from_share(thd, share, table_name,
(uint) (HA_OPEN_KEYFILE | HA_OPEN_RNDFILE |
HA_GET_INDEX),
@@ -9249,7 +9245,7 @@ my_bool mysql_rm_tmp_tables(void)
memcpy(filePathCopy, filePath, filePath_len - ext_len);
filePathCopy[filePath_len - ext_len]= 0;
init_tmp_table_share(thd, &share, "", 0, "", filePathCopy);
- if (!open_table_def(thd, &share, 0) &&
+ if (!open_table_def(thd, &share) &&
((handler_file= get_new_handler(&share, thd->mem_root,
share.db_type()))))
{
diff --git a/sql/sql_base.h b/sql/sql_base.h
index 7d1797e2883..1cd36160309 100644
--- a/sql/sql_base.h
+++ b/sql/sql_base.h
@@ -108,7 +108,7 @@ create_table_def_key(char *key, const char *db, const char *table_name)
}
TABLE_SHARE *get_table_share(THD *thd, TABLE_LIST *table_list, char *key,
- uint key_length, uint db_flags, int *error,
+ uint key_length, enum read_frm_op op, int *error,
my_hash_value_type hash_value);
void release_table_share(TABLE_SHARE *share);
TABLE_SHARE *get_cached_table_share(const char *db, const char *table_name);
diff --git a/sql/sql_show.cc b/sql/sql_show.cc
index 44736cd375a..d63e8221654 100644
--- a/sql/sql_show.cc
+++ b/sql/sql_show.cc
@@ -4383,8 +4383,8 @@ static int fill_schema_table_from_frm(THD *thd, TABLE_LIST *tables,
key_length= create_table_def_key(thd, key, &table_list, 0);
hash_value= my_calc_hash(&table_def_cache, (uchar*) key, key_length);
mysql_mutex_lock(&LOCK_open);
- share= get_table_share(thd, &table_list, key,
- key_length, OPEN_VIEW, &not_used, hash_value);
+ share= get_table_share(thd, &table_list, key, key_length,
+ FRM_READ_NO_ERROR_FOR_VIEW, &not_used, hash_value);
if (!share)
{
res= 0;
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index 455fef094af..7072cb38138 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -4023,7 +4023,7 @@ static bool check_if_created_table_can_be_opened(THD *thd,
init_tmp_table_share(thd, &share, db, 0, table_name, path);
- result= (open_table_def(thd, &share, 0) ||
+ result= (open_table_def(thd, &share) ||
open_table_from_share(thd, &share, "", 0, (uint) READ_ALL,
0, &table, TRUE));
if (! result)
diff --git a/sql/table.cc b/sql/table.cc
index 46ac6578076..a0012e2e0d0 100644
--- a/sql/table.cc
+++ b/sql/table.cc
@@ -619,7 +619,7 @@ static bool has_disabled_path_chars(const char *str)
6 Unknown .frm version
*/
-int open_table_def(THD *thd, TABLE_SHARE *share, uint db_flags)
+int open_table_def(THD *thd, TABLE_SHARE *share, enum read_frm_op op)
{
int error, table_type;
bool error_given;
@@ -693,17 +693,11 @@ int open_table_def(THD *thd, TABLE_SHARE *share, uint db_flags)
if (head[2] == FRM_VER || head[2] == FRM_VER+1 ||
(head[2] >= FRM_VER+3 && head[2] <= FRM_VER+4))
{
- /* Open view only */
- if (db_flags & OPEN_VIEW_ONLY)
- {
- error_given= 1;
- goto err;
- }
table_type= 1;
}
else
{
- error= 6; // Unkown .frm version
+ error= 6; // Unknown .frm version
goto err;
}
}
@@ -713,7 +707,7 @@ int open_table_def(THD *thd, TABLE_SHARE *share, uint db_flags)
if (memcmp(head+5,"VIEW",4) == 0)
{
share->is_view= 1;
- if (db_flags & OPEN_VIEW)
+ if (op == FRM_READ_NO_ERROR_FOR_VIEW)
error= 0;
}
goto err;
diff --git a/sql/table.h b/sql/table.h
index 90907230f78..18ed635aae8 100644
--- a/sql/table.h
+++ b/sql/table.h
@@ -2433,10 +2433,13 @@ static inline void dbug_tmp_restore_column_maps(MY_BITMAP *read_set,
#endif
}
+enum read_frm_op {
+ FRM_READ_TABLE_ONLY,
+ FRM_READ_NO_ERROR_FOR_VIEW
+};
size_t max_row_length(TABLE *table, const uchar *data);
-
void init_mdl_requests(TABLE_LIST *table_list);
int open_table_from_share(THD *thd, TABLE_SHARE *share, const char *alias,
@@ -2451,7 +2454,8 @@ void init_tmp_table_share(THD *thd, TABLE_SHARE *share, const char *key,
uint key_length,
const char *table_name, const char *path);
void free_table_share(TABLE_SHARE *share);
-int open_table_def(THD *thd, TABLE_SHARE *share, uint db_flags);
+int open_table_def(THD *thd, TABLE_SHARE *share,
+ enum read_frm_op op = FRM_READ_TABLE_ONLY);
void open_table_error(TABLE_SHARE *share, int error, int db_errno, int errarg);
void update_create_info_from_table(HA_CREATE_INFO *info, TABLE *form);
bool check_and_convert_db_name(LEX_STRING *db, bool preserve_lettercase);