| 4423 | |
| 4424 | |
| 4425 | Datum |
| 4426 | numeric_float8(PG_FUNCTION_ARGS) |
| 4427 | { |
| 4428 | Numeric num = PG_GETARG_NUMERIC(0); |
| 4429 | char *tmp; |
| 4430 | Datum result; |
| 4431 | |
| 4432 | if (NUMERIC_IS_SPECIAL(num)) |
| 4433 | { |
| 4434 | if (NUMERIC_IS_PINF(num)) |
| 4435 | PG_RETURN_FLOAT8(get_float8_infinity()); |
| 4436 | else if (NUMERIC_IS_NINF(num)) |
| 4437 | PG_RETURN_FLOAT8(-get_float8_infinity()); |
| 4438 | else |
| 4439 | PG_RETURN_FLOAT8(get_float8_nan()); |
| 4440 | } |
| 4441 | |
| 4442 | tmp = DatumGetCString(DirectFunctionCall1(numeric_out, |
| 4443 | NumericGetDatum(num))); |
| 4444 | |
| 4445 | result = DirectFunctionCall1(float8in, CStringGetDatum(tmp)); |
| 4446 | |
| 4447 | pfree(tmp); |
| 4448 | |
| 4449 | PG_RETURN_DATUM(result); |
| 4450 | } |
| 4451 | |
| 4452 | /* |
| 4453 | * GPDB: wrap of new api numericvar_to_double_no_overflow. |
nothing calls this directly
no test coverage detected