diff options
author | unknown <reggie@bob.(none)> | 2005-01-29 09:37:06 -0600 |
---|---|---|
committer | unknown <reggie@bob.(none)> | 2005-01-29 09:37:06 -0600 |
commit | 70dfda8851ac65f7a5b62a72ac09a7611a961cb6 (patch) | |
tree | 9628784a88ac0cbb3f3a1d4fb476c4d6a2ad03e2 /client | |
parent | aeebe7041cc8a976509941d2773eb0f78887ffcc (diff) | |
parent | ac442b96e15d77de642e530e9cffae1a6f39ae7a (diff) | |
download | mariadb-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.c | 43 |
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; } |