float-fix2.diff
text/plain
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 | + | − |
|---|---|---|
| backend/access/nbtree/nbtcompare.c | 7 | 1 |
| backend/utils/adt/float.c | 13 | 3 |
Index: backend/access/nbtree/nbtcompare.c
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/src/backend/access/nbtree/nbtcompare.c,v
retrieving revision 1.39
diff -c -r1.39 nbtcompare.c
*** backend/access/nbtree/nbtcompare.c 2000/07/12 02:36:48 1.39
--- backend/access/nbtree/nbtcompare.c 2000/08/21 16:22:23
***************
*** 105,111 ****
float8 a = PG_GETARG_FLOAT8(0);
float8 b = PG_GETARG_FLOAT8(1);
! if (a > b)
PG_RETURN_INT32(1);
else if (a == b)
PG_RETURN_INT32(0);
--- 105,117 ----
float8 a = PG_GETARG_FLOAT8(0);
float8 b = PG_GETARG_FLOAT8(1);
! if (isnan(a))
! { if (isnan(b))
! PG_RETURN_INT32(0);
! else
! PG_RETURN_INT32(1);
! }
! else if (a > b)
PG_RETURN_INT32(1);
else if (a == b)
PG_RETURN_INT32(0);
Index: backend/utils/adt/float.c
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/src/backend/utils/adt/float.c,v
retrieving revision 1.68
diff -c -r1.68 float.c
*** backend/utils/adt/float.c 2000/08/07 00:51:14 1.68
--- backend/utils/adt/float.c 2000/08/21 16:22:24
***************
*** 248,253 ****
--- 248,255 ----
val = NAN;
else if (strcasecmp(num, "Infinity") == 0)
val = HUGE_VAL;
+ else if (strcasecmp(num, "-Infinity") == 0)
+ val = -HUGE_VAL;
else
elog(ERROR, "Bad float8 input format '%s'", num);
}
***************
*** 272,283 ****
{
float8 num = PG_GETARG_FLOAT8(0);
char *ascii = (char *) palloc(MAXDOUBLEWIDTH + 1);
if (isnan(num))
PG_RETURN_CSTRING(strcpy(ascii, "NaN"));
! if (isinf(num))
! PG_RETURN_CSTRING(strcpy(ascii, "Infinity"));
!
sprintf(ascii, "%.*g", DBL_DIG, num);
PG_RETURN_CSTRING(ascii);
}
--- 274,291 ----
{
float8 num = PG_GETARG_FLOAT8(0);
char *ascii = (char *) palloc(MAXDOUBLEWIDTH + 1);
+ int inf;
if (isnan(num))
PG_RETURN_CSTRING(strcpy(ascii, "NaN"));
! inf = isinf(num);
! if (inf != 0)
! {
! if (inf < 0)
! PG_RETURN_CSTRING(strcpy(ascii, "-Infinity"));
! else
! PG_RETURN_CSTRING(strcpy(ascii, "Infinity"));
! }
sprintf(ascii, "%.*g", DBL_DIG, num);
PG_RETURN_CSTRING(ascii);
}
***************
*** 614,619 ****
--- 622,628 ----
float8 arg1 = PG_GETARG_FLOAT8(0);
float8 arg2 = PG_GETARG_FLOAT8(1);
+ if (isnan(arg2)) PG_RETURN_BOOL(1);
PG_RETURN_BOOL(arg1 < arg2);
}
***************
*** 632,637 ****
--- 641,647 ----
float8 arg1 = PG_GETARG_FLOAT8(0);
float8 arg2 = PG_GETARG_FLOAT8(1);
+ if (isnan(arg2)) PG_RETURN_BOOL(1);
PG_RETURN_BOOL(arg1 > arg2);
}