summaryrefslogtreecommitdiff
path: root/sql/handler.cc
diff options
context:
space:
mode:
authorAlexander Nozdrin <alik@sun.com>2009-09-16 10:52:43 +0400
committerAlexander Nozdrin <alik@sun.com>2009-09-16 10:52:43 +0400
commit80c91e429876e66dfac0c288c8e390b553b5fb49 (patch)
treec54cce7e6f502a73331b395334f2ddd5b948280b /sql/handler.cc
parent4bf2c41df4ea0d62ce6b66da155988aafe2328ba (diff)
parent7ee331ab5d35e0d428cebf56a385627f2c65f76c (diff)
downloadmariadb-git-80c91e429876e66dfac0c288c8e390b553b5fb49.tar.gz
Merge from mysql-5.1-bugteam.
Diffstat (limited to 'sql/handler.cc')
-rw-r--r--sql/handler.cc30
1 files changed, 30 insertions, 0 deletions
diff --git a/sql/handler.cc b/sql/handler.cc
index 0e83d2911f2..24ada69ff87 100644
--- a/sql/handler.cc
+++ b/sql/handler.cc
@@ -1886,12 +1886,42 @@ bool ha_flush_logs(handlerton *db_type)
return FALSE;
}
+
+/**
+ @brief make canonical filename
+
+ @param[in] file table handler
+ @param[in] path original path
+ @param[out] tmp_path buffer for canonized path
+
+ @details Lower case db name and table name path parts for
+ non file based tables when lower_case_table_names
+ is 2 (store as is, compare in lower case).
+ Filesystem path prefix (mysql_data_home or tmpdir)
+ is left intact.
+
+ @note tmp_path may be left intact if no conversion was
+ performed.
+
+ @retval canonized path
+
+ @todo This may be done more efficiently when table path
+ gets built. Convert this function to something like
+ ASSERT_CANONICAL_FILENAME.
+*/
const char *get_canonical_filename(handler *file, const char *path,
char *tmp_path)
{
+ uint i;
if (lower_case_table_names != 2 || (file->ha_table_flags() & HA_FILE_BASED))
return path;
+ for (i= 0; i <= mysql_tmpdir_list.max; i++)
+ {
+ if (is_prefix(path, mysql_tmpdir_list.list[i]))
+ return path;
+ }
+
/* Ensure that table handler get path in lower case */
if (tmp_path != path)
strmov(tmp_path, path);