diff options
author | unknown <knielsen@knielsen-hq.org> | 2012-08-24 10:34:55 +0200 |
---|---|---|
committer | unknown <knielsen@knielsen-hq.org> | 2012-08-24 10:34:55 +0200 |
commit | 4997ddfa9e4399915091a2a726f3d043927c4118 (patch) | |
tree | f0e977456b81554e03acd56307177d315fd75448 /sql/sql_base.cc | |
parent | 115a2967563d3ac734ce371260098710ba42cdf0 (diff) | |
parent | cdeabcfd436c65e0a97e74b1722d0259ba907541 (diff) | |
download | mariadb-git-4997ddfa9e4399915091a2a726f3d043927c4118.tar.gz |
Merge with latest 5.1.
Diffstat (limited to 'sql/sql_base.cc')
-rw-r--r-- | sql/sql_base.cc | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 77ba3c5099c..01ae9160b24 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -4176,22 +4176,22 @@ retry: entry->file->implicit_emptied= 0; if (mysql_bin_log.is_open()) { - char *query, *end; - uint query_buf_size= 20 + share->db.length + share->table_name.length +1; - if ((query= (char*) my_malloc(query_buf_size,MYF(MY_WME)))) + char query_buf[2*FN_REFLEN + 21]; + String query(query_buf, sizeof(query_buf), system_charset_info); + query.length(0); + if (query.ptr()) { /* this DELETE FROM is needed even with row-based binlogging */ - end = strxmov(strmov(query, "DELETE FROM `"), - share->db.str,"`.`",share->table_name.str,"`", NullS); + query.append("DELETE FROM "); + append_identifier(thd, &query, share->db.str, share->db.length); + query.append("."); + append_identifier(thd, &query, share->table_name.str, + share->table_name.length); int errcode= query_error_code(thd, TRUE); if (thd->binlog_query(THD::STMT_QUERY_TYPE, - query, (ulong)(end-query), + query.ptr(), query.length(), FALSE, FALSE, errcode)) - { - my_free(query, MYF(0)); goto err; - } - my_free(query, MYF(0)); } else { @@ -4201,7 +4201,7 @@ retry: because of MYF(MY_WME) in my_malloc() above). */ sql_print_error("When opening HEAP table, could not allocate memory " - "to write 'DELETE FROM `%s`.`%s`' to the binary log", + "to write 'DELETE FROM %`s.%`s' to the binary log", table_list->db, table_list->table_name); delete entry->triggers; closefrm(entry, 0); |