Skip to content
Snippets Groups Projects
Commit 492eaefb authored by Michael Meskes's avatar Michael Meskes
Browse files

Do not check nan values for infinity. Some system are not able to handle this.

By Zoltán Böszörményi
parent 3d4a2cea
No related branches found
No related tags found
No related merge requests found
/* $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, ...@@ -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) ...@@ -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 ( );} ...@@ -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) ...@@ -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);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment