C 求两个float4[]数组的和,而不是int[]数组(代码更改)

C 求两个float4[]数组的和,而不是int[]数组(代码更改),c,postgresql,C,Postgresql,我想知道,要将两个float4[]数组而不是两个int[]数组求和,需要对以下代码进行哪些更改 我尝试了一些事情,但没有成功 致: 以及: sumContent[i] = DatumGetFloat4(arrayContent1[i]) + DatumGetFloat4(arrayContent2[i]); 但它只给我0和奇怪的负数作为c函数的输出: create or replace function sumar(float4[],float4[]) returns float4[] a

我想知道,要将两个float4[]数组而不是两个int[]数组求和,需要对以下代码进行哪些更改

我尝试了一些事情,但没有成功

致:

以及:

sumContent[i] =  DatumGetFloat4(arrayContent1[i]) +  DatumGetFloat4(arrayContent2[i]);
但它只给我0和奇怪的负数作为c函数的输出:

create or replace function sumar(float4[],float4[])
returns float4[]
as 'example.so', 'sumar'
Language C strict;
这条线

sumContent[i] =  Float4GetDatum(arrayContent1[i]) +  Float4GetDatum(arrayContent2[i]);
这肯定是胡说八道-你不能用这句话来求两个基准的和,你应该使用反向宏:

sumContent[i] = Float4GetDatum( DatumGetFloat4(arrayContent1[i]) +  DatumGetFloat4(arrayContent2[i]));
下一个建议-使用elogNOTICE,函数上的一些文本开始确保,所以SQL真正使用您的函数

create or replace function sumar(float4[],float4[])
returns float4[]
as 'example.so', 'sumar'
Language C strict;
sumContent[i] =  Float4GetDatum(arrayContent1[i]) +  Float4GetDatum(arrayContent2[i]);
sumContent[i] = Float4GetDatum( DatumGetFloat4(arrayContent1[i]) +  DatumGetFloat4(arrayContent2[i]));