summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorSergey Vojtovich <svoj@sun.com>2009-09-10 11:53:35 +0500
committerSergey Vojtovich <svoj@sun.com>2009-09-10 11:53:35 +0500
commit32055c1c72f99d5d52fb9622acf1530efa24279b (patch)
treebf5636470f5c6eab90b02996b6af0c9826679eb7 /sql
parent4bb22b342aa26ae7de14b96527839dca0f750f7e (diff)
parent3228a2be669f5d92a607b8212c9c3260a02fd47f (diff)
downloadmariadb-git-32055c1c72f99d5d52fb9622acf1530efa24279b.tar.gz
Local merge.
Diffstat (limited to 'sql')
-rw-r--r--sql/handler.cc30
1 files changed, 30 insertions, 0 deletions
diff --git a/sql/handler.cc b/sql/handler.cc
index e5c64452aaf..a4d88e84f4c 100644
--- a/sql/handler.cc
+++ b/sql/handler.cc
@@ -1885,12 +1885,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);