1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

Fix for the bugs:

#2005 Long decimal comparion bug.                                               
#2055 mysqldump should replace "-inf" numeric field values with "NULL"
This commit is contained in:
ram@gw.mysql.r18.ru
2003-12-09 17:33:29 +04:00
parent 56e49fd735
commit ab1c17b943
2 changed files with 48 additions and 5 deletions

View File

@ -1067,10 +1067,22 @@ static void dumpTable(uint numFields, char *table)
}
else
{
/* change any strings ("inf","nan",..) into NULL */
/* change any strings ("inf", "-inf", "nan") into NULL */
char *ptr = row[i];
dynstr_append(&extended_row,
(!isalpha(*ptr)) ? ptr : "NULL");
if (isalpha(*ptr) || (*ptr == '-' && *(ptr+1) == 'i'))
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
@ -1098,13 +1110,25 @@ static void dumpTable(uint numFields, char *table)
}
else
{
/* change any strings ("inf","nan",..) into NULL */
/* change any strings ("inf", "-inf", "nan") into NULL */
char *ptr = row[i];
if (opt_xml)
fprintf(md_result_file, "\t\t<field name=\"%s\">%s</field>\n",
field->name,!isalpha(*ptr) ?ptr: "NULL");
else if (isalpha(*ptr) || (*ptr == '-' && *(ptr+1) == 'i'))
fputs("NULL", md_result_file);
else
fputs((!isalpha(*ptr)) ? ptr : "NULL", md_result_file);
{
if (field->type == FIELD_TYPE_DECIMAL)
{
/* add " signs around */
fputs("\"", md_result_file);
fputs(ptr, md_result_file);
fputs("\"", md_result_file);
}
else
fputs(ptr, md_result_file);
}
}
}
else