summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <ram@gw.mysql.r18.ru>2003-12-10 18:41:12 +0400
committerunknown <ram@gw.mysql.r18.ru>2003-12-10 18:41:12 +0400
commite2a8abd5b8231e329b274c30a8f00389de735265 (patch)
treee899777af16ae89291ccd90206273ec8c7fe3de4
parentc49c88a514a5ec7da6e74775f5f6527ed0d6fc3a (diff)
parent7b3d8cc93f3eaede9fc93e2cc8a2b2327b82584d (diff)
downloadmariadb-git-e2a8abd5b8231e329b274c30a8f00389de735265.tar.gz
Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-4.0
into gw.mysql.r18.ru:/usr/home/ram/work/4.0.b2005
-rw-r--r--client/mysqldump.c34
-rw-r--r--mysql-test/t/mysqldump.test19
2 files changed, 48 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
diff --git a/mysql-test/t/mysqldump.test b/mysql-test/t/mysqldump.test
index c98fd4050f2..87363855db0 100644
--- a/mysql-test/t/mysqldump.test
+++ b/mysql-test/t/mysqldump.test
@@ -8,3 +8,22 @@ CREATE TABLE t1(a int);
INSERT INTO t1 VALUES (1), (2);
--exec $MYSQL_DUMP -X test 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;