summaryrefslogtreecommitdiff
path: root/client/mysqlcheck.c
diff options
context:
space:
mode:
authorunknown <salle@geopard.(none)>2002-11-12 16:09:33 +0200
committerunknown <salle@geopard.(none)>2002-11-12 16:09:33 +0200
commit6580fbaf6f7d7b894a3e5feb1fdef3934bb82462 (patch)
treec851e1d78e1234c45496332c96fa26a9692bf264 /client/mysqlcheck.c
parentfa771db2e7faac353fa700b135a3f5abc70d62a9 (diff)
downloadmariadb-git-6580fbaf6f7d7b894a3e5feb1fdef3934bb82462.tar.gz
Fixed mysqlcheck so it can process table names with dashes.
Quote all table names with backticks.
Diffstat (limited to 'client/mysqlcheck.c')
-rw-r--r--client/mysqlcheck.c33
1 files changed, 23 insertions, 10 deletions
diff --git a/client/mysqlcheck.c b/client/mysqlcheck.c
index 7c556a1cee6..f06e06c8a83 100644
--- a/client/mysqlcheck.c
+++ b/client/mysqlcheck.c
@@ -406,21 +406,25 @@ static int process_selected_tables(char *db, char **table_names, int tables)
return 1;
if (opt_all_in_1)
{
+ /*
+ We need table list in form `a`, `b`, `c`
+ that's why we need 4 more chars added to to each table name
+ space is for more readable output in logs and in case of error
+ */
char *table_names_comma_sep, *end;
int i, tot_length = 0;
for (i = 0; i < tables; i++)
- tot_length += strlen(*(table_names + i)) + 1;
+ tot_length += strlen(*(table_names + i)) + 4;
if (!(table_names_comma_sep = (char *)
- my_malloc((sizeof(char) * tot_length) + 1, MYF(MY_WME))))
+ my_malloc((sizeof(char) * tot_length) + 4, MYF(MY_WME))))
return 1;
for (end = table_names_comma_sep + 1; tables > 0;
tables--, table_names++)
{
- end = strmov(end, *table_names);
- *end++= ',';
+ end = strxmov(end, " `", *table_names, "`,", NullS);
}
*--end = 0;
handle_request_for_tables(table_names_comma_sep + 1, tot_length - 1);
@@ -447,22 +451,27 @@ static int process_all_tables_in_db(char *database)
if (opt_all_in_1)
{
+ /*
+ We need table list in form `a`, `b`, `c`
+ that's why we need 4 more chars added to to each table name
+ space is for more readable output in logs and in case of error
+ */
+
char *tables, *end;
uint tot_length = 0;
while ((row = mysql_fetch_row(res)))
- tot_length += strlen(row[0]) + 1;
+ tot_length += strlen(row[0]) + 4;
mysql_data_seek(res, 0);
- if (!(tables=(char *) my_malloc(sizeof(char)*tot_length+1, MYF(MY_WME))))
+ if (!(tables=(char *) my_malloc(sizeof(char)*tot_length+4, MYF(MY_WME))))
{
mysql_free_result(res);
return 1;
}
for (end = tables + 1; (row = mysql_fetch_row(res)) ;)
{
- end = strmov(end, row[0]);
- *end++= ',';
+ end = strxmov(end, " `", row[0], "`,", NullS);
}
*--end = 0;
if (tot_length)
@@ -521,10 +530,14 @@ static int handle_request_for_tables(char *tables, uint length)
if (!(query =(char *) my_malloc((sizeof(char)*(length+110)), MYF(MY_WME))))
return 1;
- sprintf(query, "%s TABLE %s %s", op, tables, options);
+ if (opt_all_in_1)
+ /* No backticks here as we added them before */
+ sprintf(query, "%s TABLE %s %s", op, tables, options);
+ else
+ sprintf(query, "%s TABLE `%s` %s", op, tables, options);
if (mysql_query(sock, query))
{
- sprintf(message, "when executing '%s TABLE ... %s", op, options);
+ sprintf(message, "when executing '%s TABLE ... %s'", op, options);
DBerror(sock, message);
return 1;
}