Bug #37390 | "mysqldump -d" can not implement "show table status" | ||
---|---|---|---|
Submitted: | 13 Jun 2008 9:53 | Modified: | 30 Sep 2009 8:54 |
Reporter: | talen xu | Email Updates: | |
Status: | Verified | Impact on me: | |
Category: | MySQL Server: mysqldump Command-line Client | Severity: | S5 (Performance) |
Version: | 5.0++ | OS: | Any |
Assigned to: | CPU Architecture: | Any |
[13 Jun 2008 9:53]
talen xu
[13 Jun 2008 11:09]
Susanne Ebrecht
Many thanks for writing a bug report. What exactly do you mean here? If I understand you right then this is a duplicate of bug #33057. Please let us know, if I understand you right.
[13 Jun 2008 16:15]
talen xu
MySQL 5.0++ mysqldump.c char check_if_ignore_table(const char *table_name, char *table_type) { char result= IGNORE_NONE; char buff[FN_REFLEN+80], show_name_buff[FN_REFLEN]; MYSQL_RES *res= NULL; MYSQL_ROW row; DBUG_ENTER("check_if_ignore_table"); /* Check memory for quote_for_like() */ DBUG_ASSERT(2*sizeof(table_name) < sizeof(show_name_buff)); my_snprintf(buff, sizeof(buff), "show table status like %s", ///here/// quote_for_like(table_name, show_name_buff)); if (mysql_query_with_error_report(mysql, &res, buff)) { if (mysql_errno(mysql) != ER_PARSE_ERROR) { /* If old MySQL version */ verbose_msg("-- Warning: Couldn't get status information for " "table %s (%s)\n", table_name, mysql_error(mysql)); DBUG_RETURN(result); /* assume table is ok */ } } ---------------------------------------------------------------------------------- MySQL 5.0++ static uint get_table_structure(char *table, char *db, char *table_type, char *ignore_flag) { my_bool init=0, delayed, write_data, complete_insert; my_ulonglong num_fields; char *result_table, *opt_quoted_table; const char *insert_option; char name_buff[NAME_LEN+3],table_buff[NAME_LEN*2+3]; char table_buff2[NAME_LEN*2+3], query_buff[512]; FILE *sql_file= md_result_file; int len; MYSQL_RES *result; MYSQL_ROW row; DBUG_ENTER("get_table_structure"); DBUG_PRINT("enter", ("db: %s table: %s", db, table)); *ignore_flag= check_if_ignore_table(table, table_type); ///here/// MySQL 4.1.22 static uint getTableStructure(char *table, char* db) { MYSQL_RES *tableRes; MYSQL_ROW row; my_bool init=0; uint numFields; char *result_table, *opt_quoted_table; const char *insert_option; char name_buff[NAME_LEN+3],table_buff[NAME_LEN*2+3]; char table_buff2[NAME_LEN*2+3]; char query_buff[512]; FILE *sql_file = md_result_file; int len; DBUG_ENTER("getTableStructure"); DBUG_PRINT("enter", ("db: %s, table: %s", db, table)); if (!insert_pat_inited) { insert_pat_inited= init_dynamic_string(&insert_pat, "", 1024, 1024); } else dynstr_set(&insert_pat, ""); insert_option= ((opt_delayed && opt_ignore) ? " DELAYED IGNORE " : opt_delayed ? " DELAYED " : opt_ignore ? " IGNORE " : ""); "mysqldump -d" can not implement "show table status"?For InnoDB engine, it has been too slow
[30 Sep 2009 8:54]
Sveta Smirnova
Thank you for the feedback. Yes, this is possible to replace SHOW TABLE STATUS with SHOW TABLES + SHOW CREATE TABLE + parsing of result or select engine from information_schema.tables where TABLE_NAME='TABLE_NAME' and TABLE_SCHEMA ='DBNAME';