summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorram@gw.mysql.r18.ru <>2003-12-09 17:33:29 +0400
committerram@gw.mysql.r18.ru <>2003-12-09 17:33:29 +0400
commitab1c17b9436d07ba9c92b4a24303d10a22b4528a (patch)
tree3e4208cc5344f68b109b7e5760fb3664b3b813d7 /client
parent56e49fd735c97e98bc50235e50bc456e99824c83 (diff)
downloadmariadb-git-ab1c17b9436d07ba9c92b4a24303d10a22b4528a.tar.gz
Fix for the bugs:
#2005 Long decimal comparion bug. #2055 mysqldump should replace "-inf" numeric field values with "NULL"
Diffstat (limited to 'client')
-rw-r--r--client/mysqldump.c34
1 files changed, 29 insertions, 5 deletions
diff --git a/client/mysqldump.c b/client/mysqldump.c
index 40f88021c89..7092503fa25 100644
--- a/client/mysqldump.c
+++ b/client/mysqldump.c
@@ -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