diff options
author | unknown <jimw@mysql.com> | 2005-11-23 17:31:44 -0800 |
---|---|---|
committer | unknown <jimw@mysql.com> | 2005-11-23 17:31:44 -0800 |
commit | 96f2ef07164b15596aa315c7016785b2c406d7c5 (patch) | |
tree | 466ebd65d61de6c5c0862536588bdcd1e9e967ce /client | |
parent | 123be6050b6489f68f94adece534b2fc7dfc09c6 (diff) | |
download | mariadb-git-96f2ef07164b15596aa315c7016785b2c406d7c5.tar.gz |
Fix values printed by mysqldump for empty blob fields when
--hex-blob is used. (Bug #13318)
client/mysqldump.c:
Don't use 0x... syntax for empty fields.
mysql-test/r/mysqldump.result:
Add new results
mysql-test/t/mysqldump.test:
Add new regression test
Diffstat (limited to 'client')
-rw-r--r-- | client/mysqldump.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/client/mysqldump.c b/client/mysqldump.c index 3458f74d8a2..b6e1be2cddd 100644 --- a/client/mysqldump.c +++ b/client/mysqldump.c @@ -1768,6 +1768,8 @@ static void dumpTable(uint numFields, char *table) for (i = 0; i < mysql_num_fields(res); i++) { int is_blob; + ulong length= lengths[i]; + if (!(field = mysql_fetch_field(res))) { my_snprintf(query, QUERY_LENGTH, @@ -1777,7 +1779,7 @@ static void dumpTable(uint numFields, char *table) error= EX_CONSCHECK; goto err; } - + /* 63 is my_charset_bin. If charsetnr is not 63, we have not a BLOB but a TEXT column. @@ -1792,7 +1794,6 @@ static void dumpTable(uint numFields, char *table) field->type == FIELD_TYPE_TINY_BLOB)) ? 1 : 0; if (extended_insert) { - ulong length = lengths[i]; if (i == 0) dynstr_set(&extended_row,"("); else @@ -1882,19 +1883,19 @@ static void dumpTable(uint numFields, char *table) { print_xml_tag1(md_result_file, "\t\t", "field name=", field->name, ""); - print_quoted_xml(md_result_file, row[i], lengths[i]); + print_quoted_xml(md_result_file, row[i], length); fputs("</field>\n", md_result_file); } - else if (opt_hex_blob && is_blob) + else if (opt_hex_blob && is_blob && length) { /* sakaik got the idea to to provide blob's in hex notation. */ - char *ptr= row[i], *end= ptr+ lengths[i]; + char *ptr= row[i], *end= ptr + length; fputs("0x", md_result_file); for (; ptr < end ; ptr++) fprintf(md_result_file, "%02X", *((uchar *)ptr)); } else - unescape(md_result_file, row[i], lengths[i]); + unescape(md_result_file, row[i], length); } else { |