Commit 7b3d8cc9 authored by unknown's avatar unknown

Fix for the bugs:

#2005 Long decimal comparion bug.                                               
#2055 mysqldump should replace "-inf" numeric field values with "NULL"

parent 9a1cb59c
...@@ -1067,10 +1067,22 @@ static void dumpTable(uint numFields, char *table) ...@@ -1067,10 +1067,22 @@ static void dumpTable(uint numFields, char *table)
} }
else else
{ {
/* change any strings ("inf","nan",..) into NULL */ /* change any strings ("inf", "-inf", "nan") into NULL */
char *ptr = row[i]; char *ptr = row[i];
dynstr_append(&extended_row, if (isalpha(*ptr) || (*ptr == '-' && *(ptr+1) == 'i'))
(!isalpha(*ptr)) ? ptr : "NULL"); dynstr_append(&extended_row, "NULL");
else
{
if (field->type == FIELD_TYPE_DECIMAL)
{
/* add " signs around */
dynstr_append(&extended_row, "\"");
dynstr_append(&extended_row, ptr);
dynstr_append(&extended_row, "\"");
}
else
dynstr_append(&extended_row, ptr);
}
} }
} }
else else
...@@ -1098,13 +1110,25 @@ static void dumpTable(uint numFields, char *table) ...@@ -1098,13 +1110,25 @@ static void dumpTable(uint numFields, char *table)
} }
else else
{ {
/* change any strings ("inf","nan",..) into NULL */ /* change any strings ("inf", "-inf", "nan") into NULL */
char *ptr = row[i]; char *ptr = row[i];
if (opt_xml) if (opt_xml)
fprintf(md_result_file, "\t\t<field name=\"%s\">%s</field>\n", fprintf(md_result_file, "\t\t<field name=\"%s\">%s</field>\n",
field->name,!isalpha(*ptr) ?ptr: "NULL"); field->name,!isalpha(*ptr) ?ptr: "NULL");
else if (isalpha(*ptr) || (*ptr == '-' && *(ptr+1) == 'i'))
fputs("NULL", md_result_file);
else
{
if (field->type == FIELD_TYPE_DECIMAL)
{
/* add " signs around */
fputs("\"", md_result_file);
fputs(ptr, md_result_file);
fputs("\"", md_result_file);
}
else else
fputs((!isalpha(*ptr)) ? ptr : "NULL", md_result_file); fputs(ptr, md_result_file);
}
} }
} }
else else
......
...@@ -8,3 +8,22 @@ CREATE TABLE t1(a int); ...@@ -8,3 +8,22 @@ CREATE TABLE t1(a int);
INSERT INTO t1 VALUES (1), (2); INSERT INTO t1 VALUES (1), (2);
--exec $MYSQL_DUMP -X test t1 --exec $MYSQL_DUMP -X test t1
DROP TABLE t1; DROP TABLE t1;
#
# Bug #2005
#
CREATE TABLE t1 (a decimal(240, 20));
INSERT INTO t1 VALUES ("1234567890123456789012345678901234567890"),
("0987654321098765432109876543210987654321");
--exec $MYSQL_DUMP test t1
DROP TABLE t1;
#
# Bug #2055
#
CREATE TABLE t1 (a double);
INSERT INTO t1 VALUES (-9e999999);
--exec $MYSQL_DUMP test t1
DROP TABLE t1;
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment