summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorunknown <gluh@gluh.mysql.r18.ru>2005-03-17 16:51:07 +0300
committerunknown <gluh@gluh.mysql.r18.ru>2005-03-17 16:51:07 +0300
commit17791f95002b2f9c8cb31eed64c36f019b2edda9 (patch)
tree7107fca24e8d8dd39be0300a9e1e64d7ad8921a2 /client
parent621abfacfe316df9ce06c9d046ec11f23e543ea7 (diff)
parent3e4ae65a144d8f7a63ee5f8c4d1ec65f94f35b58 (diff)
downloadmariadb-git-17791f95002b2f9c8cb31eed64c36f019b2edda9.tar.gz
Merge 4.1 -> 5.0
heap/hp_create.c: Auto merged mysql-test/mysql-test-run.sh: Auto merged mysql-test/r/ctype_utf8.result: Auto merged mysql-test/r/olap.result: Auto merged mysql-test/t/func_str.test: Auto merged sql/item.cc: Auto merged sql/item.h: Auto merged sql/item_func.cc: Auto merged sql/item_strfunc.cc: Auto merged sql/key.cc: Auto merged sql/set_var.cc: Auto merged sql/sql_select.h: Auto merged sql/sql_string.h: Auto merged client/mysqldump.c: Manual merge mysql-test/r/func_gconcat.result: Manual merge mysql-test/r/func_str.result: Manual merge mysql-test/t/func_gconcat.test: Manual merge sql/ha_heap.cc: Manual merge sql/sql_select.cc: Manual merge
Diffstat (limited to 'client')
-rw-r--r--client/mysqldump.c95
1 files changed, 60 insertions, 35 deletions
diff --git a/client/mysqldump.c b/client/mysqldump.c
index 7d357b25541..46337c99732 100644
--- a/client/mysqldump.c
+++ b/client/mysqldump.c
@@ -875,8 +875,8 @@ static int dbConnect(char *host, char *user,char *passwd)
cannot reconnect.
*/
sock->reconnect= 0;
- sprintf(buff, "/*!40100 SET @@SQL_MODE='%s' */",
- compatible_mode_normal_str);
+ my_snprintf(buff, sizeof(buff), "/*!40100 SET @@SQL_MODE='%s' */",
+ compatible_mode_normal_str);
if (mysql_query_with_error_report(sock, 0, buff))
{
mysql_close(sock);
@@ -1111,8 +1111,9 @@ static uint getTableStructure(char *table, char* db)
if (verbose)
fprintf(stderr, "-- Retrieving table structure for table %s...\n", table);
- sprintf(insert_pat,"SET OPTION SQL_QUOTE_SHOW_CREATE=%d",
- (opt_quoted || opt_keywords));
+ my_snprintf(insert_pat, sizeof(insert_pat),
+ "SET OPTION SQL_QUOTE_SHOW_CREATE=%d",
+ (opt_quoted || opt_keywords));
if (!create_options)
strmov(strend(insert_pat), "/*!40102 ,SQL_MODE=concat(@@sql_mode, _utf8 ',NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS') */");
@@ -1131,7 +1132,7 @@ static uint getTableStructure(char *table, char* db)
char buff[20+FN_REFLEN];
MYSQL_FIELD *field;
- sprintf(buff,"show create table %s", result_table);
+ my_snprintf(buff, sizeof(buff), "show create table %s", result_table);
if (mysql_query_with_error_report(sock, 0, buff))
{
safe_exit(EX_MYSQLERR);
@@ -1177,7 +1178,8 @@ static uint getTableStructure(char *table, char* db)
check_io(sql_file);
mysql_free_result(tableRes);
}
- sprintf(insert_pat,"show fields from %s", result_table);
+ my_snprintf(insert_pat, sizeof(insert_pat), "show fields from %s",
+ result_table);
if (mysql_query_with_error_report(sock, &tableRes, insert_pat))
{
if (path)
@@ -1187,11 +1189,12 @@ static uint getTableStructure(char *table, char* db)
}
if (cFlag)
- sprintf(insert_pat, "INSERT %sINTO %s (", delayed, opt_quoted_table);
+ my_snprintf(insert_pat, sizeof(insert_pat), "INSERT %sINTO %s (",
+ delayed, opt_quoted_table);
else
{
- sprintf(insert_pat, "INSERT %sINTO %s VALUES ", delayed,
- opt_quoted_table);
+ my_snprintf(insert_pat, sizeof(insert_pat), "INSERT %sINTO %s VALUES ",
+ delayed, opt_quoted_table);
if (!extended_insert)
strcat(insert_pat,"(");
}
@@ -1218,7 +1221,8 @@ static uint getTableStructure(char *table, char* db)
"%s: Warning: Can't set SQL_QUOTE_SHOW_CREATE option (%s)\n",
my_progname, mysql_error(sock));
- sprintf(insert_pat,"show fields from %s", result_table);
+ my_snprintf(insert_pat, sizeof(insert_pat), "show fields from %s",
+ result_table);
if (mysql_query_with_error_report(sock, &tableRes, insert_pat))
{
safe_exit(EX_MYSQLERR);
@@ -1253,10 +1257,12 @@ static uint getTableStructure(char *table, char* db)
check_io(sql_file);
}
if (cFlag)
- sprintf(insert_pat, "INSERT %sINTO %s (", delayed, result_table);
+ my_snprintf(insert_pat, sizeof(insert_pat), "INSERT %sINTO %s (",
+ delayed, result_table);
else
{
- sprintf(insert_pat, "INSERT %sINTO %s VALUES ", delayed, result_table);
+ my_snprintf(insert_pat, sizeof(insert_pat), "INSERT %sINTO %s VALUES ",
+ delayed, result_table);
if (!extended_insert)
strcat(insert_pat,"(");
}
@@ -1313,7 +1319,7 @@ static uint getTableStructure(char *table, char* db)
/* Make an sql-file, if path was given iow. option -T was given */
char buff[20+FN_REFLEN];
uint keynr,primary_key;
- sprintf(buff,"show keys from %s", result_table);
+ my_snprintf(buff, sizeof(buff), "show keys from %s", result_table);
if (mysql_query_with_error_report(sock, &tableRes, buff))
{
if (mysql_errno(sock) == ER_WRONG_OBJECT)
@@ -1391,8 +1397,12 @@ static uint getTableStructure(char *table, char* db)
if (create_options)
{
char show_name_buff[FN_REFLEN];
- sprintf(buff,"show table status like %s",
- quote_for_like(table, show_name_buff));
+
+ /* Check memory for quote_for_like() */
+ DBUG_ASSERT(2*sizeof(table) < sizeof(show_name_buff));
+ my_snprintf(buff, sizeof(buff), "show table status like %s",
+ quote_for_like(table, show_name_buff));
+
if (mysql_query_with_error_report(sock, &tableRes, buff))
{
if (mysql_errno(sock) != ER_PARSE_ERROR)
@@ -1553,8 +1563,9 @@ static void dumpTable(uint numFields, char *table)
my_delete(filename, MYF(0)); /* 'INTO OUTFILE' doesn't work, if
filename wasn't deleted */
to_unix_path(filename);
- sprintf(query, "SELECT /*!40001 SQL_NO_CACHE */ * INTO OUTFILE '%s'",
- filename);
+ my_snprintf(query, QUERY_LENGTH,
+ "SELECT /*!40001 SQL_NO_CACHE */ * INTO OUTFILE '%s'",
+ filename);
end= strend(query);
if (fields_terminated || enclosed || opt_enclosed || escaped)
@@ -1566,7 +1577,7 @@ static void dumpTable(uint numFields, char *table)
end= add_load_option(end, lines_terminated, " LINES TERMINATED BY");
*end= '\0';
- sprintf(buff," FROM %s", result_table);
+ my_snprintf(buff, sizeof(buff), " FROM %s", result_table);
end= strmov(end,buff);
if (where || order_by)
{
@@ -1594,8 +1605,9 @@ static void dumpTable(uint numFields, char *table)
result_table);
check_io(md_result_file);
}
- sprintf(query, "SELECT /*!40001 SQL_NO_CACHE */ * FROM %s",
- result_table);
+ my_snprintf(query, QUERY_LENGTH,
+ "SELECT /*!40001 SQL_NO_CACHE */ * FROM %s",
+ result_table);
if (where || order_by)
{
query = alloc_query_str((ulong) (strlen(query) + 1 +
@@ -1693,8 +1705,9 @@ static void dumpTable(uint numFields, char *table)
int is_blob;
if (!(field = mysql_fetch_field(res)))
{
- sprintf(query,"%s: Not enough fields from table %s! Aborting.\n",
- my_progname, result_table);
+ my_snprintf(query, QUERY_LENGTH,
+ "%s: Not enough fields from table %s! Aborting.\n",
+ my_progname, result_table);
fputs(query,stderr);
error= EX_CONSCHECK;
goto err;
@@ -1896,12 +1909,13 @@ static void dumpTable(uint numFields, char *table)
check_io(md_result_file);
if (mysql_errno(sock))
{
- sprintf(query,"%s: Error %d: %s when dumping table %s at row: %ld\n",
- my_progname,
- mysql_errno(sock),
- mysql_error(sock),
- result_table,
- rownr);
+ my_snprintf(query, QUERY_LENGTH,
+ "%s: Error %d: %s when dumping table %s at row: %ld\n",
+ my_progname,
+ mysql_errno(sock),
+ mysql_error(sock),
+ result_table,
+ rownr);
fputs(query,stderr);
error= EX_CONSCHECK;
goto err;
@@ -2045,8 +2059,9 @@ static int init_dumping(char *database)
MYSQL_ROW row;
MYSQL_RES *dbinfo;
- sprintf(qbuf,"SHOW CREATE DATABASE IF NOT EXISTS %s",
- qdatabase);
+ my_snprintf(qbuf, sizeof(qbuf),
+ "SHOW CREATE DATABASE IF NOT EXISTS %s",
+ qdatabase);
if (mysql_query(sock, qbuf) || !(dbinfo = mysql_store_result(sock)))
{
@@ -2141,6 +2156,7 @@ static int dump_all_tables_in_db(char *database)
return 0;
} /* dump_all_tables_in_db */
+
/*
dump structure of views of database
@@ -2195,6 +2211,7 @@ static my_bool dump_all_views_in_db(char *database)
return 0;
} /* dump_all_tables_in_db */
+
/*
get_actual_table_name -- executes a SHOW TABLES LIKE '%s' to get the actual
table name from the server for the table name given on the command line.
@@ -2211,10 +2228,15 @@ static void get_actual_table_name(const char *old_table_name,
{
MYSQL_RES *tableRes;
MYSQL_ROW row;
- char query[ NAME_LEN + 50 ];
+ char query[50 + 2*NAME_LEN];
+ char show_name_buff[FN_REFLEN];
DBUG_ENTER("get_actual_table_name");
- sprintf( query, "SHOW TABLES LIKE '%s'", old_table_name);
+ /* Check memory for quote_for_like() */
+ DBUG_ASSERT(2*sizeof(old_table_name) < sizeof(show_name_buff));
+ my_snprintf(query, sizeof(query), "SHOW TABLES LIKE %s",
+ quote_for_like(old_table_name, show_name_buff));
+
if (mysql_query_with_error_report(sock, 0, query))
{
safe_exit(EX_MYSQLERR);
@@ -2464,8 +2486,10 @@ static const char *check_if_ignore_table(const char *table_name)
MYSQL_ROW row;
const char *result= 0;
- sprintf(buff,"show table status like %s",
- quote_for_like(table_name, show_name_buff));
+ /* 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",
+ quote_for_like(table_name, show_name_buff));
if (mysql_query_with_error_report(sock, &res, buff))
{
if (mysql_errno(sock) != ER_PARSE_ERROR)
@@ -2523,7 +2547,8 @@ static char *primary_key_fields(const char *table_name)
uint result_length = 0;
char *result = 0;
- sprintf(show_keys_buff, "SHOW KEYS FROM %s", table_name);
+ my_snprintf(show_keys_buff, sizeof(show_keys_buff),
+ "SHOW KEYS FROM %s", table_name);
if (mysql_query(sock, show_keys_buff) ||
!(res = mysql_store_result(sock)))
{