mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
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
This commit is contained in:
@ -1768,6 +1768,8 @@ static void dumpTable(uint numFields, char *table)
|
|||||||
for (i = 0; i < mysql_num_fields(res); i++)
|
for (i = 0; i < mysql_num_fields(res); i++)
|
||||||
{
|
{
|
||||||
int is_blob;
|
int is_blob;
|
||||||
|
ulong length= lengths[i];
|
||||||
|
|
||||||
if (!(field = mysql_fetch_field(res)))
|
if (!(field = mysql_fetch_field(res)))
|
||||||
{
|
{
|
||||||
my_snprintf(query, QUERY_LENGTH,
|
my_snprintf(query, QUERY_LENGTH,
|
||||||
@ -1792,7 +1794,6 @@ static void dumpTable(uint numFields, char *table)
|
|||||||
field->type == FIELD_TYPE_TINY_BLOB)) ? 1 : 0;
|
field->type == FIELD_TYPE_TINY_BLOB)) ? 1 : 0;
|
||||||
if (extended_insert)
|
if (extended_insert)
|
||||||
{
|
{
|
||||||
ulong length = lengths[i];
|
|
||||||
if (i == 0)
|
if (i == 0)
|
||||||
dynstr_set(&extended_row,"(");
|
dynstr_set(&extended_row,"(");
|
||||||
else
|
else
|
||||||
@ -1882,19 +1883,19 @@ static void dumpTable(uint numFields, char *table)
|
|||||||
{
|
{
|
||||||
print_xml_tag1(md_result_file, "\t\t", "field name=",
|
print_xml_tag1(md_result_file, "\t\t", "field name=",
|
||||||
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);
|
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. */
|
/* 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);
|
fputs("0x", md_result_file);
|
||||||
for (; ptr < end ; ptr++)
|
for (; ptr < end ; ptr++)
|
||||||
fprintf(md_result_file, "%02X", *((uchar *)ptr));
|
fprintf(md_result_file, "%02X", *((uchar *)ptr));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
unescape(md_result_file, row[i], lengths[i]);
|
unescape(md_result_file, row[i], length);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1493,3 +1493,66 @@ insert into t2 (a, b) values (NULL, NULL),(10, NULL),(NULL, "twenty"),(30, "thir
|
|||||||
</database>
|
</database>
|
||||||
</mysqldump>
|
</mysqldump>
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
create table t1 (a binary(1), b blob);
|
||||||
|
insert into t1 values ('','');
|
||||||
|
|
||||||
|
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||||
|
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||||
|
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||||
|
/*!40101 SET NAMES utf8 */;
|
||||||
|
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||||
|
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||||
|
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||||
|
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||||
|
DROP TABLE IF EXISTS `t1`;
|
||||||
|
CREATE TABLE `t1` (
|
||||||
|
`a` binary(1) default NULL,
|
||||||
|
`b` blob
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||||
|
|
||||||
|
|
||||||
|
/*!40000 ALTER TABLE `t1` DISABLE KEYS */;
|
||||||
|
LOCK TABLES `t1` WRITE;
|
||||||
|
INSERT INTO `t1` VALUES ('','');
|
||||||
|
UNLOCK TABLES;
|
||||||
|
/*!40000 ALTER TABLE `t1` ENABLE KEYS */;
|
||||||
|
|
||||||
|
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||||
|
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||||
|
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||||
|
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||||
|
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||||
|
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||||
|
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||||
|
|
||||||
|
|
||||||
|
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||||
|
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||||
|
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||||
|
/*!40101 SET NAMES utf8 */;
|
||||||
|
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||||
|
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||||
|
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||||
|
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||||
|
DROP TABLE IF EXISTS `t1`;
|
||||||
|
CREATE TABLE `t1` (
|
||||||
|
`a` binary(1) default NULL,
|
||||||
|
`b` blob
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||||
|
|
||||||
|
|
||||||
|
/*!40000 ALTER TABLE `t1` DISABLE KEYS */;
|
||||||
|
LOCK TABLES `t1` WRITE;
|
||||||
|
INSERT INTO `t1` VALUES ('','');
|
||||||
|
UNLOCK TABLES;
|
||||||
|
/*!40000 ALTER TABLE `t1` ENABLE KEYS */;
|
||||||
|
|
||||||
|
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||||
|
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||||
|
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||||
|
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||||
|
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||||
|
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||||
|
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||||
|
|
||||||
|
drop table t1;
|
||||||
|
@ -635,4 +635,13 @@ insert into t2 (a, b) values (NULL, NULL),(10, NULL),(NULL, "twenty"),(30, "thir
|
|||||||
--exec $MYSQL_DUMP --skip-comments --xml --no-create-info test
|
--exec $MYSQL_DUMP --skip-comments --xml --no-create-info test
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #13318: Bad result with empty field and --hex-blob
|
||||||
|
#
|
||||||
|
create table t1 (a binary(1), b blob);
|
||||||
|
insert into t1 values ('','');
|
||||||
|
--exec $MYSQL_DUMP --skip-comments --skip-extended-insert --hex-blob test t1
|
||||||
|
--exec $MYSQL_DUMP --skip-comments --hex-blob test t1
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
Reference in New Issue
Block a user