mirror of
https://github.com/postgres/postgres.git
synced 2025-06-06 00:02:36 -04:00
Do not check nan values for infinity. Some system are not able to handle this.
By Zoltán Böszörményi
This commit is contained in:
parent
3d4a2cea57
commit
492eaefb90
@ -1,4 +1,4 @@
|
|||||||
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.93 2010/02/04 09:41:34 meskes Exp $ */
|
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.94 2010/02/16 18:41:23 meskes Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The aim is to get a simpler inteface to the database routines.
|
* The aim is to get a simpler inteface to the database routines.
|
||||||
@ -468,15 +468,15 @@ ecpg_store_result(const PGresult *results, int act_field,
|
|||||||
static void
|
static void
|
||||||
sprintf_double_value(char *ptr, double value, const char *delim)
|
sprintf_double_value(char *ptr, double value, const char *delim)
|
||||||
{
|
{
|
||||||
if (isinf(value))
|
if (isnan(value))
|
||||||
|
sprintf(ptr, "%s%s", "NaN", delim);
|
||||||
|
else if (isinf(value))
|
||||||
{
|
{
|
||||||
if (value < 0)
|
if (value < 0)
|
||||||
sprintf(ptr, "%s%s", "-Infinity", delim);
|
sprintf(ptr, "%s%s", "-Infinity", delim);
|
||||||
else
|
else
|
||||||
sprintf(ptr, "%s%s", "Infinity", delim);
|
sprintf(ptr, "%s%s", "Infinity", delim);
|
||||||
}
|
}
|
||||||
else if (isnan(value))
|
|
||||||
sprintf(ptr, "%s%s", "NaN", delim);
|
|
||||||
else
|
else
|
||||||
sprintf(ptr, "%.14g%s", value, delim);
|
sprintf(ptr, "%.14g%s", value, delim);
|
||||||
}
|
}
|
||||||
@ -484,15 +484,15 @@ sprintf_double_value(char *ptr, double value, const char *delim)
|
|||||||
static void
|
static void
|
||||||
sprintf_float_value(char *ptr, float value, const char *delim)
|
sprintf_float_value(char *ptr, float value, const char *delim)
|
||||||
{
|
{
|
||||||
if (isinf(value))
|
if (isnan(value))
|
||||||
|
sprintf(ptr, "%s%s", "NaN", delim);
|
||||||
|
else if (isinf(value))
|
||||||
{
|
{
|
||||||
if (value < 0)
|
if (value < 0)
|
||||||
sprintf(ptr, "%s%s", "-Infinity", delim);
|
sprintf(ptr, "%s%s", "-Infinity", delim);
|
||||||
else
|
else
|
||||||
sprintf(ptr, "%s%s", "Infinity", delim);
|
sprintf(ptr, "%s%s", "Infinity", delim);
|
||||||
}
|
}
|
||||||
else if (isnan(value))
|
|
||||||
sprintf(ptr, "%s%s", "NaN", delim);
|
|
||||||
else
|
else
|
||||||
sprintf(ptr, "%.14g%s", value, delim);
|
sprintf(ptr, "%.14g%s", value, delim);
|
||||||
}
|
}
|
||||||
|
@ -104,10 +104,10 @@ if (sqlca.sqlcode < 0) sqlprint ( );}
|
|||||||
|
|
||||||
if (sqlca.sqlcode)
|
if (sqlca.sqlcode)
|
||||||
break;
|
break;
|
||||||
if (isinf(d))
|
|
||||||
printf("%d %sInf '%s'\n", id, (d < 0 ? "-" : "+"), val);
|
|
||||||
if (isnan(d))
|
if (isnan(d))
|
||||||
printf("%d NaN '%s'\n", id, val);
|
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 )",
|
{ 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),
|
ECPGt_int,&(id),(long)1,(long)1,sizeof(int),
|
||||||
|
@ -37,10 +37,10 @@ main(void)
|
|||||||
exec sql fetch from cur into :id, :d, :val;
|
exec sql fetch from cur into :id, :d, :val;
|
||||||
if (sqlca.sqlcode)
|
if (sqlca.sqlcode)
|
||||||
break;
|
break;
|
||||||
if (isinf(d))
|
|
||||||
printf("%d %sInf '%s'\n", id, (d < 0 ? "-" : "+"), val);
|
|
||||||
if (isnan(d))
|
if (isnan(d))
|
||||||
printf("%d NaN '%s'\n", id, val);
|
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 + 3, :d);
|
||||||
exec sql insert into nantest1 (id, d) values (:id + 6, :val);
|
exec sql insert into nantest1 (id, d) values (:id + 6, :val);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user