diff options
author | unknown <bar@mysql.com> | 2005-12-31 09:01:26 +0400 |
---|---|---|
committer | unknown <bar@mysql.com> | 2005-12-31 09:01:26 +0400 |
commit | 8762c036a8154ef015546e495944378a3329c021 (patch) | |
tree | 6a3476c826545341821fbccb1f42ba381c5ca30a /sql/sql_view.cc | |
parent | 97b856981c4c1684ce5de1fcc1ab0bce101af5c9 (diff) | |
download | mariadb-git-8762c036a8154ef015546e495944378a3329c021.tar.gz |
WL#1324 table name to file name encoding
- Encoding itself, implemented as a charset
"filename". Originally planned to use '.'
as an escape character, but now changed to '@'
for two reasons: "ls" does not return
file names starting with '.' considering them
as a kind of hidden files; some platforms
do not allow several dots in a file name.
- replacing many calls of my_snprintf() and
strnxmov() to the new build_table_filename().
- Adding MY_APPEND_EXT mysys flag, to append
an extention rather that replace it.
- Replacing all numeric constants in fn_format
flag arguments to their mysys definitions, e.g.
MY_UNPACK_FILENAME,
- Predictability in several function/methods:
when a table name can appear with or withot .frm
extension. Some functions/methods were changed
so accept names strictly with .frm, other - strictly
without .frm extensions. Several DBUG_ASSERTs were
added to check whether an extension is passed.
Many files:
table name to file name encoding
mysql_priv.h:
Prototypes for new table name encoding tools.
ctype-utf8.c:
Implementing "filename" charset for
table name to file name encoding.
row0mysql.c:
Fixing table name prefix.
mf_format.c:
Adding MY_APPEND_EXT processing.
Many files:
Fixing tests.
my_sys.h:
Adding new flag to append rather than replace an extension.
m_ctype.h:
Adding "filename" charset definition.
include/m_ctype.h:
Adding "filename" charset definition.
include/my_sys.h:
Adding new flag to append rather than replace an extension.
mysql-test/t/alter_table.test:
Fixing tests.
mysql-test/t/create.test:
Fixing tests.
mysql-test/t/show_check.test:
Fixing tests.
mysql-test/r/alter_table.result:
Fixing tests.
mysql-test/r/create.result:
Fixing tests.
mysql-test/r/mysqldump.result:
Fixing tests.
mysys/mf_format.c:
Adding MY_APPEND_EXT processing.
sql/discover.cc:
table name to file name encoding
sql/ha_berkeley.cc:
table name to file name encoding
sql/ha_innodb.cc:
table name to file name encoding
sql/ha_myisam.cc:
table name to file name encoding
sql/ha_myisammrg.cc:
table name to file name encoding
sql/ha_ndbcluster.cc:
table name to file name encoding
sql/ha_partition.cc:
table name to file name encoding
sql/handler.cc:
table name to file name encoding.
sql/init.cc:
table name to file name encoding
sql/mysqld.cc:
table name to file name encoding
sql/parse_file.cc:
table name to file name encoding
sql/sql_acl.cc:
table name to file name encoding
sql/sql_base.cc:
table name to file name encoding
sql/sql_db.cc:
table name to file name encoding
sql/sql_delete.cc:
table name to file name encoding
sql/sql_rename.cc:
table name to file name encoding
sql/sql_show.cc:
table name to file name encoding
sql/sql_table.cc:
table name to file name encoding
sql/sql_trigger.cc:
table name to file name encoding
sql/sql_view.cc:
table name to file name encoding
sql/strfunc.cc:
table name to file name encoding
sql/table.cc:
table name to file name encoding
sql/unireg.cc:
table name to file name encoding
storage/innobase/row/row0mysql.c:
Fixing table name prefix.
,
storage/myisam/mi_create.c:
table name to file name encoding
storage/myisam/mi_delete_table.c:
table name to file name encoding
storage/myisam/mi_open.c:
table name to file name encoding
storage/myisam/mi_rename.c:
table name to file name encoding
strings/ctype-utf8.c:
Implementing "filename" charset for
table name to file name encoding.
sql/mysql_priv.h:
Prototypes for new table name encoding tools.
storage/myisammrg/myrg_create.c:
table name to file name encoding
storage/myisammrg/myrg_open.c:
table name to file name encoding
Diffstat (limited to 'sql/sql_view.cc')
-rw-r--r-- | sql/sql_view.cc | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/sql/sql_view.cc b/sql/sql_view.cc index aea07be1eda..78497a2cf8b 100644 --- a/sql/sql_view.cc +++ b/sql/sql_view.cc @@ -568,8 +568,8 @@ static int mysql_register_view(THD *thd, TABLE_LIST *view, String str(buff,(uint32) sizeof(buff), system_charset_info); char md5[MD5_BUFF_LENGTH]; bool can_be_merged; - char dir_buff[FN_REFLEN], file_buff[FN_REFLEN]; - LEX_STRING dir, file; + char dir_buff[FN_REFLEN], file_buff[FN_REFLEN], path_buff[FN_REFLEN]; + LEX_STRING dir, file, path; DBUG_ENTER("mysql_register_view"); /* print query */ @@ -584,15 +584,17 @@ static int mysql_register_view(THD *thd, TABLE_LIST *view, DBUG_PRINT("info", ("View: %s", str.ptr())); /* print file name */ - (void) my_snprintf(dir_buff, FN_REFLEN, "%s/%s/", - mysql_data_home, view->db); - unpack_filename(dir_buff, dir_buff); + dir.length= build_table_filename(dir_buff, sizeof(dir_buff), + view->db, "", ""); dir.str= dir_buff; - dir.length= strlen(dir_buff); - file.str= file_buff; - file.length= (strxnmov(file_buff, FN_REFLEN-1, view->table_name, reg_ext, - NullS) - file_buff); + path.length= build_table_filename(path_buff, sizeof(path_buff), + view->db, view->table_name, reg_ext); + path.str= path_buff; + + file.str= path.str + dir.length; + file.length= path.length - dir.length; + /* init timestamp */ if (!view->timestamp.str) view->timestamp.str= view->timestamp_buffer; @@ -1184,9 +1186,8 @@ bool mysql_drop_view(THD *thd, TABLE_LIST *views, enum_drop_mode drop_mode) { TABLE_SHARE *share; bool type= 0; - strxnmov(path, FN_REFLEN-1, mysql_data_home, "/", view->db, "/", - view->table_name, reg_ext, NullS); - (void) unpack_filename(path, path); + build_table_filename(path, sizeof(path), + view->db, view->table_name, reg_ext); VOID(pthread_mutex_lock(&LOCK_open)); if (access(path, F_OK) || (type= (mysql_frm_type(thd, path, ¬_used) != FRMTYPE_VIEW))) |