summaryrefslogtreecommitdiff
path: root/client/mysqlcheck.c
diff options
context:
space:
mode:
authorunknown <jimw@rama.(none)>2006-07-24 13:31:20 -0700
committerunknown <jimw@rama.(none)>2006-07-24 13:31:20 -0700
commitc4bfacd7770c5b55c81caec16bc58687f8d974e1 (patch)
tree0a34744b847839984e06d4a29f203d7821050b64 /client/mysqlcheck.c
parentdc50ce997083b4f3d3e4ab237c6a1f5e11cfd90f (diff)
downloadmariadb-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.c16
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;