summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorunknown <reggie@bob.(none)>2005-01-29 09:37:06 -0600
committerunknown <reggie@bob.(none)>2005-01-29 09:37:06 -0600
commit70dfda8851ac65f7a5b62a72ac09a7611a961cb6 (patch)
tree9628784a88ac0cbb3f3a1d4fb476c4d6a2ad03e2 /client
parentaeebe7041cc8a976509941d2773eb0f78887ffcc (diff)
parentac442b96e15d77de642e530e9cffae1a6f39ae7a (diff)
downloadmariadb-git-70dfda8851ac65f7a5b62a72ac09a7611a961cb6.tar.gz
Merge rburnett@bk-internal.mysql.com:/home/bk/mysql-5.0
into bob.(none):/home/reggie/bk/mysql5.0
Diffstat (limited to 'client')
-rw-r--r--client/mysqldump.c43
1 files changed, 40 insertions, 3 deletions
diff --git a/client/mysqldump.c b/client/mysqldump.c
index 757521fe935..70310737164 100644
--- a/client/mysqldump.c
+++ b/client/mysqldump.c
@@ -2186,6 +2186,38 @@ static my_bool dump_all_views_in_db(char *database)
return 0;
} /* dump_all_tables_in_db */
+/*
+ get_actual_table_name -- executes a SHOW TABLES LIKE '%s' to get the actual
+ table name from the server for the table name given on the command line.
+ we do this because the table name given on the command line may be a
+ different case (e.g. T1 vs t1)
+
+ RETURN
+ void
+*/
+static void get_actual_table_name( const char *old_table_name,
+ char *new_table_name,
+ int buf_size )
+{
+ MYSQL_RES *tableRes;
+ MYSQL_ROW row;
+ char query[ NAME_LEN + 50 ];
+
+ DBUG_ENTER("get_actual_table_name");
+
+ sprintf( query, "SHOW TABLES LIKE '%s'", old_table_name );
+ if (mysql_query_with_error_report(sock, 0, query))
+ {
+ safe_exit(EX_MYSQLERR);
+ }
+
+ tableRes = mysql_store_result( sock );
+ row = mysql_fetch_row( tableRes );
+ strncpy( new_table_name, row[0], buf_size );
+ mysql_free_result(tableRes);
+} /* get_actual_table_name */
+
+
static int dump_selected_tables(char *db, char **table_names, int tables)
{
uint numrows;
@@ -2219,9 +2251,14 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
print_xml_tag1(md_result_file, "", "database name=", db, "\n");
for (i=0 ; i < tables ; i++)
{
- numrows = getTableStructure(table_names[i], db);
- if (!dFlag && numrows > 0)
- dumpTable(numrows, table_names[i]);
+ char new_table_name[NAME_LEN];
+
+ /* the table name passed on commandline may be wrong case */
+ get_actual_table_name( table_names[i], new_table_name, sizeof(new_table_name) );
+
+ numrows = getTableStructure(new_table_name, db);
+
+ dumpTable(numrows, new_table_name);
my_free(order_by, MYF(MY_ALLOW_ZERO_PTR));
order_by= 0;
}