diff options
author | unknown <gluh@gluh.mysql.r18.ru> | 2005-03-17 16:51:07 +0300 |
---|---|---|
committer | unknown <gluh@gluh.mysql.r18.ru> | 2005-03-17 16:51:07 +0300 |
commit | 17791f95002b2f9c8cb31eed64c36f019b2edda9 (patch) | |
tree | 7107fca24e8d8dd39be0300a9e1e64d7ad8921a2 /client | |
parent | 621abfacfe316df9ce06c9d046ec11f23e543ea7 (diff) | |
parent | 3e4ae65a144d8f7a63ee5f8c4d1ec65f94f35b58 (diff) | |
download | mariadb-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.c | 95 |
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))) { |