Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
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

+7-7
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

+2-2
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

+2-2
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)