pg85-ecpg-fix-nan-inf-11-ctxdiff.patch
text/x-patch
Filename: pg85-ecpg-fix-nan-inf-11-ctxdiff.patch
Type: text/x-patch
Part: 0
Message:
Re: NaN/Inf fix for ECPG
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: context
| File | + | − |
|---|---|---|
| src/interfaces/ecpg/ecpglib/execute.c | 6 | 6 |
| src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c | 2 | 2 |
| src/interfaces/ecpg/test/pgtypeslib/nan_test.pgc | 2 | 2 |
diff -dcrpN pgsql.orig/src/interfaces/ecpg/ecpglib/execute.c pgsql/src/interfaces/ecpg/ecpglib/execute.c
*** pgsql.orig/src/interfaces/ecpg/ecpglib/execute.c 2010-02-04 11:10:03.000000000 +0100
--- pgsql/src/interfaces/ecpg/ecpglib/execute.c 2010-02-16 12:19:38.000000000 +0100
*************** ecpg_store_result(const PGresult *result
*** 468,482 ****
static void
sprintf_double_value(char *ptr, double value, const char *delim)
{
! if (isinf(value))
{
if (value < 0)
sprintf(ptr, "%s%s", "-Infinity", delim);
else
sprintf(ptr, "%s%s", "Infinity", delim);
}
- else if (isnan(value))
- sprintf(ptr, "%s%s", "NaN", delim);
else
sprintf(ptr, "%.14g%s", value, delim);
}
--- 468,482 ----
static void
sprintf_double_value(char *ptr, double value, const char *delim)
{
! if (isnan(value))
! sprintf(ptr, "%s%s", "NaN", delim);
! else if (isinf(value))
{
if (value < 0)
sprintf(ptr, "%s%s", "-Infinity", delim);
else
sprintf(ptr, "%s%s", "Infinity", delim);
}
else
sprintf(ptr, "%.14g%s", value, delim);
}
*************** sprintf_double_value(char *ptr, double v
*** 484,498 ****
static void
sprintf_float_value(char *ptr, float value, const char *delim)
{
! if (isinf(value))
{
if (value < 0)
sprintf(ptr, "%s%s", "-Infinity", delim);
else
sprintf(ptr, "%s%s", "Infinity", delim);
}
- else if (isnan(value))
- sprintf(ptr, "%s%s", "NaN", delim);
else
sprintf(ptr, "%.14g%s", value, delim);
}
--- 484,498 ----
static void
sprintf_float_value(char *ptr, float value, const char *delim)
{
! if (isnan(value))
! sprintf(ptr, "%s%s", "NaN", delim);
! else if (isinf(value))
{
if (value < 0)
sprintf(ptr, "%s%s", "-Infinity", delim);
else
sprintf(ptr, "%s%s", "Infinity", delim);
}
else
sprintf(ptr, "%.14g%s", value, delim);
}
diff -dcrpN pgsql.orig/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c pgsql/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c
*** pgsql.orig/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c 2010-02-09 11:43:57.000000000 +0100
--- pgsql/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c 2010-02-16 12:10:55.000000000 +0100
*************** if (sqlca.sqlcode < 0) sqlprint ( );}
*** 104,113 ****
if (sqlca.sqlcode)
break;
- if (isinf(d))
- printf("%d %sInf '%s'\n", id, (d < 0 ? "-" : "+"), val);
if (isnan(d))
printf("%d NaN '%s'\n", id, val);
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into nantest1 ( id , d ) values ( $1 + 3 , $2 )",
ECPGt_int,&(id),(long)1,(long)1,sizeof(int),
--- 104,113 ----
if (sqlca.sqlcode)
break;
if (isnan(d))
printf("%d NaN '%s'\n", id, val);
+ else if (isinf(d))
+ printf("%d %sInf '%s'\n", id, (d < 0 ? "-" : "+"), val);
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into nantest1 ( id , d ) values ( $1 + 3 , $2 )",
ECPGt_int,&(id),(long)1,(long)1,sizeof(int),
diff -dcrpN pgsql.orig/src/interfaces/ecpg/test/pgtypeslib/nan_test.pgc pgsql/src/interfaces/ecpg/test/pgtypeslib/nan_test.pgc
*** pgsql.orig/src/interfaces/ecpg/test/pgtypeslib/nan_test.pgc 2010-02-09 11:43:57.000000000 +0100
--- pgsql/src/interfaces/ecpg/test/pgtypeslib/nan_test.pgc 2010-02-16 12:04:59.000000000 +0100
*************** main(void)
*** 37,46 ****
exec sql fetch from cur into :id, :d, :val;
if (sqlca.sqlcode)
break;
- if (isinf(d))
- printf("%d %sInf '%s'\n", id, (d < 0 ? "-" : "+"), val);
if (isnan(d))
printf("%d NaN '%s'\n", id, val);
exec sql insert into nantest1 (id, d) values (:id + 3, :d);
exec sql insert into nantest1 (id, d) values (:id + 6, :val);
--- 37,46 ----
exec sql fetch from cur into :id, :d, :val;
if (sqlca.sqlcode)
break;
if (isnan(d))
printf("%d NaN '%s'\n", id, val);
+ else if (isinf(d))
+ printf("%d %sInf '%s'\n", id, (d < 0 ? "-" : "+"), val);
exec sql insert into nantest1 (id, d) values (:id + 3, :d);
exec sql insert into nantest1 (id, d) values (:id + 6, :val);