Skip to content

Commit 492eaef

Browse files
author
Michael Meskes
committed
Do not check nan values for infinity. Some system are not able to handle this.
By Zoltán Böszörményi
1 parent 3d4a2ce commit 492eaef

File tree

3 files changed

+11
-11
lines changed

3 files changed

+11
-11
lines changed

src/interfaces/ecpg/ecpglib/execute.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.93 2010/02/04 09:41:34 meskes Exp $ */
1+
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.94 2010/02/16 18:41:23 meskes Exp $ */
22

33
/*
44
* The aim is to get a simpler inteface to the database routines.
@@ -468,31 +468,31 @@ ecpg_store_result(const PGresult *results, int act_field,
468468
static void
469469
sprintf_double_value(char *ptr, double value, const char *delim)
470470
{
471-
if (isinf(value))
471+
if (isnan(value))
472+
sprintf(ptr, "%s%s", "NaN", delim);
473+
else if (isinf(value))
472474
{
473475
if (value < 0)
474476
sprintf(ptr, "%s%s", "-Infinity", delim);
475477
else
476478
sprintf(ptr, "%s%s", "Infinity", delim);
477479
}
478-
else if (isnan(value))
479-
sprintf(ptr, "%s%s", "NaN", delim);
480480
else
481481
sprintf(ptr, "%.14g%s", value, delim);
482482
}
483483

484484
static void
485485
sprintf_float_value(char *ptr, float value, const char *delim)
486486
{
487-
if (isinf(value))
487+
if (isnan(value))
488+
sprintf(ptr, "%s%s", "NaN", delim);
489+
else if (isinf(value))
488490
{
489491
if (value < 0)
490492
sprintf(ptr, "%s%s", "-Infinity", delim);
491493
else
492494
sprintf(ptr, "%s%s", "Infinity", delim);
493495
}
494-
else if (isnan(value))
495-
sprintf(ptr, "%s%s", "NaN", delim);
496496
else
497497
sprintf(ptr, "%.14g%s", value, delim);
498498
}

src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,10 +104,10 @@ if (sqlca.sqlcode < 0) sqlprint ( );}
104104

105105
if (sqlca.sqlcode)
106106
break;
107-
if (isinf(d))
108-
printf("%d %sInf '%s'\n", id, (d < 0 ? "-" : "+"), val);
109107
if (isnan(d))
110108
printf("%d NaN '%s'\n", id, val);
109+
else if (isinf(d))
110+
printf("%d %sInf '%s'\n", id, (d < 0 ? "-" : "+"), val);
111111

112112
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into nantest1 ( id , d ) values ( $1 + 3 , $2 )",
113113
ECPGt_int,&(id),(long)1,(long)1,sizeof(int),

src/interfaces/ecpg/test/pgtypeslib/nan_test.pgc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@ main(void)
3737
exec sql fetch from cur into :id, :d, :val;
3838
if (sqlca.sqlcode)
3939
break;
40-
if (isinf(d))
41-
printf("%d %sInf '%s'\n", id, (d < 0 ? "-" : "+"), val);
4240
if (isnan(d))
4341
printf("%d NaN '%s'\n", id, val);
42+
else if (isinf(d))
43+
printf("%d %sInf '%s'\n", id, (d < 0 ? "-" : "+"), val);
4444

4545
exec sql insert into nantest1 (id, d) values (:id + 3, :d);
4646
exec sql insert into nantest1 (id, d) values (:id + 6, :val);

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy