| 479 | */ |
| 480 | PG_FUNCTION_INFO_V1(array_sum); |
| 481 | Datum |
| 482 | array_sum(PG_FUNCTION_ARGS){ |
| 483 | if (PG_ARGISNULL(0)) { PG_RETURN_NULL(); } |
| 484 | |
| 485 | ArrayType *v = PG_GETARG_ARRAYTYPE_P(0); |
| 486 | Oid element_type = ARR_ELEMTYPE(v); |
| 487 | |
| 488 | Datum res = General_Array_to_Element(v, Float8GetDatum(0), 0.0, |
| 489 | element_sum, noop_finalize); |
| 490 | |
| 491 | PG_FREE_IF_COPY(v, 0); |
| 492 | |
| 493 | return float8_datum_cast(DatumGetFloat8(res), element_type); |
| 494 | } |
| 495 | |
| 496 | |
| 497 | /* |
nothing calls this directly
no test coverage detected