| 658 | */ |
| 659 | PG_FUNCTION_INFO_V1(array_add); |
| 660 | Datum |
| 661 | array_add(PG_FUNCTION_ARGS){ |
| 662 | // special handling for madlib.sum() |
| 663 | if (PG_ARGISNULL(0) && PG_ARGISNULL(1)) { PG_RETURN_NULL(); } |
| 664 | if (PG_ARGISNULL(0)) { |
| 665 | PG_RETURN_ARRAYTYPE_P(PG_GETARG_ARRAYTYPE_P(1)); |
| 666 | } |
| 667 | if (PG_ARGISNULL(1)) { |
| 668 | PG_RETURN_ARRAYTYPE_P(PG_GETARG_ARRAYTYPE_P(0)); |
| 669 | } |
| 670 | |
| 671 | ArrayType *v1 = PG_GETARG_ARRAYTYPE_P(0); |
| 672 | ArrayType *v2 = PG_GETARG_ARRAYTYPE_P(1); |
| 673 | |
| 674 | ArrayType *res = General_2Array_to_Array(v1, v2, element_add); |
| 675 | |
| 676 | PG_FREE_IF_COPY(v1, 0); |
| 677 | PG_FREE_IF_COPY(v2, 1); |
| 678 | |
| 679 | PG_RETURN_ARRAYTYPE_P(res); |
| 680 | } |
| 681 | |
| 682 | /* |
| 683 | * This function returns the element-wise difference of two arrays. |
nothing calls this directly
no test coverage detected