diff options
author | unknown <ram@gw.mysql.r18.ru> | 2003-12-10 18:41:12 +0400 |
---|---|---|
committer | unknown <ram@gw.mysql.r18.ru> | 2003-12-10 18:41:12 +0400 |
commit | e2a8abd5b8231e329b274c30a8f00389de735265 (patch) | |
tree | e899777af16ae89291ccd90206273ec8c7fe3de4 | |
parent | c49c88a514a5ec7da6e74775f5f6527ed0d6fc3a (diff) | |
parent | 7b3d8cc93f3eaede9fc93e2cc8a2b2327b82584d (diff) | |
download | mariadb-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.c | 34 | ||||
-rw-r--r-- | mysql-test/t/mysqldump.test | 19 |
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; |