summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbar@bar.myoffice.izhnet.ru <>2007-01-23 14:37:12 +0400
committerbar@bar.myoffice.izhnet.ru <>2007-01-23 14:37:12 +0400
commitb3ade670a681b312437dc29c2c51f1f6344ab3f4 (patch)
treef72298cf6b1bb601dc7f5250ee239dbe34d6871c
parent95f3f3f4f3193eb789669284b937698e94f9d436 (diff)
parentf3156a18408edc5f794b64675497ef034e89bd0b (diff)
downloadmariadb-git-b3ade670a681b312437dc29c2c51f1f6344ab3f4.tar.gz
Merge abarkov@bk-internal.mysql.com:/home/bk/mysql-5.1-rpl
into mysql.com:/home/bar/mysql-5.1.b25081
-rw-r--r--mysql-test/r/show_check.result8
-rw-r--r--mysql-test/t/show_check.test12
-rw-r--r--sql/sql_show.cc8
3 files changed, 24 insertions, 4 deletions
diff --git a/mysql-test/r/show_check.result b/mysql-test/r/show_check.result
index 516355839b5..823511e3196 100644
--- a/mysql-test/r/show_check.result
+++ b/mysql-test/r/show_check.result
@@ -730,4 +730,12 @@ show keys from `mysqlttest\1`.`a\b`;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
drop table `mysqlttest\1`.`a\b`;
drop database `mysqlttest\1`;
+set names utf8;
+drop table if exists `été`;
+create table `été` (field1 int);
+show full tables;
+Tables_in_test Table_type
+été BASE TABLE
+drop table `été`;
+set names latin1;
End of 5.1 tests
diff --git a/mysql-test/t/show_check.test b/mysql-test/t/show_check.test
index be803a74c7b..fb21b5ecaa0 100644
--- a/mysql-test/t/show_check.test
+++ b/mysql-test/t/show_check.test
@@ -563,4 +563,16 @@ show keys from `mysqlttest\1`.`a\b`;
drop table `mysqlttest\1`.`a\b`;
drop database `mysqlttest\1`;
+#
+# Bug#25081 SHOW FULL TABLES on table with latin chars in name fails
+#
+set names utf8;
+--disable_warnings
+drop table if exists `été`;
+--enable_warnings
+create table `été` (field1 int);
+show full tables;
+drop table `été`;
+set names latin1;
+
--echo End of 5.1 tests
diff --git a/sql/sql_show.cc b/sql/sql_show.cc
index c4bb6a8fc92..c62eb61d188 100644
--- a/sql/sql_show.cc
+++ b/sql/sql_show.cc
@@ -2489,7 +2489,7 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond)
ST_SCHEMA_TABLE *schema_table= tables->schema_table;
SELECT_LEX sel;
INDEX_FIELD_VALUES idx_field_vals;
- char path[FN_REFLEN], *end, *base_name, *orig_base_name, *file_name;
+ char path[FN_REFLEN], *base_name, *orig_base_name, *file_name;
uint len;
bool with_i_schema;
enum enum_schema_tables schema_table_idx;
@@ -2506,7 +2506,6 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond)
lex->view_prepare_mode= TRUE;
DBUG_ENTER("get_all_tables");
- LINT_INIT(end);
LINT_INIT(len);
lex->reset_n_backup_query_tables_list(&query_tables_list_backup);
@@ -2597,7 +2596,6 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond)
else
{
len= build_table_filename(path, sizeof(path), base_name, "", "", 0);
- end= path + len;
len= FN_LEN - len;
find_files_result res= find_files(thd, &files, base_name,
path, idx_field_vals.table_value, 0);
@@ -2647,7 +2645,9 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond)
}
else
{
- my_snprintf(end, len, "/%s%s", file_name, reg_ext);
+ build_table_filename(path, sizeof(path),
+ base_name, file_name, reg_ext, 0);
+
switch (mysql_frm_type(thd, path, &not_used)) {
case FRMTYPE_ERROR:
table->field[3]->store(STRING_WITH_LEN("ERROR"),