summaryrefslogtreecommitdiff
path: root/client/mysqlcheck.c
diff options
context:
space:
mode:
authorunknown <monty@mashka.mysql.fi>2003-02-04 21:52:14 +0200
committerunknown <monty@mashka.mysql.fi>2003-02-04 21:52:14 +0200
commit2ff82a7b152181a49814f5ea125ca8dc6551fbdd (patch)
treebad5f8dd7f020cc76a4c5e0f19bd130e3fb4a735 /client/mysqlcheck.c
parent5a7189cf8c238c991e2b590ee3bb968d13fed63c (diff)
parentdfbd628cd7ec0d3dbe86ee8e4f820d78f10b8ad0 (diff)
downloadmariadb-git-2ff82a7b152181a49814f5ea125ca8dc6551fbdd.tar.gz
Merge with 4.0.11
BitKeeper/etc/gone: auto-union BitKeeper/etc/logging_ok: auto-union Makefile.am: Auto merged bdb/os/os_handle.c: Auto merged client/mysqladmin.c: Auto merged client/mysqlcheck.c: Auto merged client/mysqldump.c: Auto merged client/mysqltest.c: Auto merged extra/resolveip.c: Auto merged include/Makefile.am: Auto merged include/config-win.h: Auto merged include/my_base.h: Auto merged include/my_global.h: Auto merged include/my_pthread.h: Auto merged include/my_sys.h: Auto merged include/mysql.h: Auto merged innobase/btr/btr0cur.c: Auto merged innobase/os/os0file.c: Auto merged innobase/srv/srv0srv.c: Auto merged innobase/srv/srv0start.c: Auto merged libmysql/Makefile.am: Auto merged libmysql/Makefile.shared: Auto merged libmysql/manager.c: Auto merged libmysqld/libmysqld.c: Auto merged myisam/ft_static.c: Auto merged myisam/mi_check.c: Auto merged myisam/mi_open.c: Auto merged myisam/mi_test3.c: Auto merged myisam/myisamdef.h: Auto merged mysql-test/mysql-test-run.sh: Auto merged mysql-test/r/func_group.result: Auto merged mysql-test/r/func_math.result: Auto merged mysql-test/r/handler.result: Auto merged mysql-test/r/query_cache.result: Auto merged mysql-test/r/select_found.result: Auto merged mysql-test/r/union.result: Auto merged mysql-test/t/backup.test: Auto merged mysql-test/t/bigint.test: Auto merged mysql-test/t/binary.test: Auto merged mysql-test/t/count_distinct.test: Auto merged mysql-test/t/func_crypt.test: Auto merged mysql-test/t/func_group.test: Auto merged mysql-test/t/grant_cache.test: Auto merged mysql-test/t/handler.test: Auto merged mysql-test/t/query_cache.test: Auto merged mysql-test/t/rpl000015.test: Auto merged mysql-test/t/rpl000017.test: Auto merged mysys/default.c: Auto merged mysys/my_getwd.c: Auto merged mysys/my_init.c: Auto merged sql/Makefile.am: Auto merged sql/des_key_file.cc: Auto merged sql/ha_innodb.cc: Auto merged sql/ha_myisam.cc: Auto merged sql/ha_myisammrg.cc: Auto merged sql/handler.cc: Auto merged sql/hostname.cc: Auto merged sql/item.cc: Auto merged sql/item_create.h: Auto merged sql/item_func.h: Auto merged sql/item_strfunc.cc: Auto merged sql/item_sum.cc: Auto merged sql/item_sum.h: Auto merged sql/lex.h: Auto merged sql/net_serv.cc: Auto merged sql/opt_sum.cc: Auto merged sql/repl_failsafe.cc: Auto merged sql/set_var.cc: Auto merged sql/slave.h: Auto merged sql/sql_acl.cc: Auto merged sql/sql_base.cc: Auto merged sql/sql_class.cc: Auto merged sql/sql_insert.cc: Auto merged sql/sql_repl.cc: Auto merged sql/sql_select.h: Auto merged sql/sql_show.cc: Auto merged sql/sql_table.cc: Auto merged sql/sql_udf.cc: Auto merged sql-bench/crash-me.sh: Auto merged sql-bench/server-cfg.sh: Auto merged sql-bench/test-insert.sh: Auto merged sql/share/english/errmsg.txt: Auto merged sql/table.cc: Auto merged Docs/manual.texi: Use remote version client/mysql.cc: Merge configure.in: Merge libmysql/libmysql.c: Merge libmysqld/lib_sql.cc: Merge myisam/ft_stopwords.c: Merge myisam/myisamchk.c: Merge mysql-test/r/bigint.result: Merge mysql-test/r/group_by.result: Merge mysql-test/r/rpl000009.result: Merge mysql-test/t/group_by.test: Merge mysql-test/t/rpl000009.test: Merge mysql-test/t/rpl_rotate_logs.test: Merge mysys/Makefile.am: Merge mysys/charset.c: Merge sql/item.h: Merge sql/item_cmpfunc.cc: Merge sql/item_cmpfunc.h: Merge sql/item_create.cc: Merge sql/item_func.cc: Merge sql/item_strfunc.h: Merge sql/log.cc: Merge sql/mysql_priv.h: Merge sql/mysqld.cc: Merge sql/protocol.cc: Merge sql/slave.cc: Merge sql/sql_class.h: Merge sql/sql_db.cc: Merge sql/sql_handler.cc: Merge sql/sql_parse.cc: Merge sql/sql_select.cc: Merge sql/sql_yacc.yy: Merge
Diffstat (limited to 'client/mysqlcheck.c')
-rw-r--r--client/mysqlcheck.c42
1 files changed, 36 insertions, 6 deletions
diff --git a/client/mysqlcheck.c b/client/mysqlcheck.c
index f9719f05bf3..cd67a2c7522 100644
--- a/client/mysqlcheck.c
+++ b/client/mysqlcheck.c
@@ -16,7 +16,7 @@
/* By Jani Tolonen, 2001-04-20, MySQL Development Team */
-#define CHECK_VERSION "2.4.2"
+#define CHECK_VERSION "2.4.3"
#include "client_priv.h"
#include <m_ctype.h>
@@ -167,6 +167,7 @@ static void dbDisconnect(char *host);
static void DBerror(MYSQL *mysql, const char *when);
static void safe_exit(int error);
static void print_result();
+static char *fix_table_name(char *dest, char *src);
int what_to_do = 0;
static void print_version(void)
@@ -390,7 +391,8 @@ static int process_selected_tables(char *db, char **table_names, int tables)
for (end = table_names_comma_sep + 1; tables > 0;
tables--, table_names++)
{
- end = strxmov(end, " `", *table_names, "`,", NullS);
+ end= fix_table_name(end, *table_names);
+ *end++= ',';
}
*--end = 0;
handle_request_for_tables(table_names_comma_sep + 1, tot_length - 1);
@@ -403,6 +405,22 @@ static int process_selected_tables(char *db, char **table_names, int tables)
} /* process_selected_tables */
+static char *fix_table_name(char *dest, char *src)
+{
+ char *db_sep;
+
+ *dest++= '`';
+ if ((db_sep= strchr(src, '.')))
+ {
+ dest= strmake(dest, src, (uint) (db_sep - src));
+ dest= strmov(dest, "`.`");
+ src= db_sep + 1;
+ }
+ dest= strxmov(dest, src, "`", NullS);
+ return dest;
+}
+
+
static int process_all_tables_in_db(char *database)
{
MYSQL_RES *res;
@@ -437,7 +455,8 @@ static int process_all_tables_in_db(char *database)
}
for (end = tables + 1; (row = mysql_fetch_row(res)) ;)
{
- end = strxmov(end, " `", row[0], "`,", NullS);
+ end= fix_table_name(end, row[0]);
+ *end++= ',';
}
*--end = 0;
if (tot_length)
@@ -468,6 +487,7 @@ static int use_db(char *database)
static int handle_request_for_tables(char *tables, uint length)
{
char *query, *end, options[100], message[100];
+ uint query_length= 0;
const char *op = 0;
options[0] = 0;
@@ -498,11 +518,21 @@ static int handle_request_for_tables(char *tables, uint length)
if (!(query =(char *) my_malloc((sizeof(char)*(length+110)), MYF(MY_WME))))
return 1;
if (opt_all_in_1)
+ {
/* No backticks here as we added them before */
- sprintf(query, "%s TABLE %s %s", op, tables, options);
+ query_length= my_sprintf(query,
+ (query, "%s TABLE %s %s", op, tables, options));
+ }
else
- sprintf(query, "%s TABLE `%s` %s", op, tables, options);
- if (mysql_query(sock, query))
+ {
+ char *ptr;
+
+ ptr= strmov(strmov(query, op), " TABLE ");
+ ptr= fix_table_name(ptr, tables);
+ ptr= strxmov(ptr, " ", options, NullS);
+ query_length= (uint) (ptr - query);
+ }
+ if (mysql_real_query(sock, query, query_length))
{
sprintf(message, "when executing '%s TABLE ... %s'", op, options);
DBerror(sock, message);