diff options
author | unknown <jimw@rama.(none)> | 2006-07-24 13:31:20 -0700 |
---|---|---|
committer | unknown <jimw@rama.(none)> | 2006-07-24 13:31:20 -0700 |
commit | c4bfacd7770c5b55c81caec16bc58687f8d974e1 (patch) | |
tree | 0a34744b847839984e06d4a29f203d7821050b64 /client/mysqlcheck.c | |
parent | dc50ce997083b4f3d3e4ab237c6a1f5e11cfd90f (diff) | |
download | mariadb-git-c4bfacd7770c5b55c81caec16bc58687f8d974e1.tar.gz |
Bug #16502: mysqlcheck gets confused with views
Make mysqlcheck skip over views when processing all of the tables in a
database.
client/mysqlcheck.c:
Use SHOW TABLE STATUS to get table list, and skip over things that don't
have an engine (like a VIEW).
mysql-test/r/mysqlcheck.result:
Add new results
mysql-test/t/mysqlcheck.test:
Add new regression test
Diffstat (limited to 'client/mysqlcheck.c')
-rw-r--r-- | client/mysqlcheck.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/client/mysqlcheck.c b/client/mysqlcheck.c index 804fa14956f..5d87a4fd23c 100644 --- a/client/mysqlcheck.c +++ b/client/mysqlcheck.c @@ -458,7 +458,7 @@ static int process_all_tables_in_db(char *database) LINT_INIT(res); if (use_db(database)) return 1; - if (mysql_query(sock, "SHOW TABLES") || + if (mysql_query(sock, "SHOW TABLE STATUS") || !((res= mysql_store_result(sock)))) return 1; @@ -484,8 +484,12 @@ static int process_all_tables_in_db(char *database) } for (end = tables + 1; (row = mysql_fetch_row(res)) ;) { - end= fix_table_name(end, row[0]); - *end++= ','; + /* Skip tables with an engine of NULL (probably a view). */ + if (row[1]) + { + end= fix_table_name(end, row[0]); + *end++= ','; + } } *--end = 0; if (tot_length) @@ -495,7 +499,11 @@ static int process_all_tables_in_db(char *database) else { while ((row = mysql_fetch_row(res))) - handle_request_for_tables(row[0], strlen(row[0])); + /* Skip tables with an engine of NULL (probably a view). */ + if (row[1]) + { + handle_request_for_tables(row[0], strlen(row[0])); + } } mysql_free_result(res); return 0; |