Обсуждение: wrong inicializied array in plpgsql
Hello
I am testing long array values. I tryed write simple function in plpgsql
for this. I found maybe a bug. Array in plpgsql without explicit init
(empty array) don't work;
CREATE OR REPLACE FUNCTION foo1() RETURNS FLOAT AS '
DECLARE f FLOAT [];
BEGIN
f[1] := 10.0;
RETURN f[1];
END' LANGUAGE plpgsql;
cyril=> select foo1();
foo1
------
(1 row)
CREATE OR REPLACE FUNCTION foo2() RETURNS FLOAT AS '
DECLARE f FLOAT [] DEFAULT ''{}'';
BEGIN
f[1] := 10.0;
RETURN f[1];
END' LANGUAGE plpgsql;
cyril=> select foo2();
foo2
------
10
(1 row)
regards
Pavel Stehule
Pavel Stehule <stehule@kix.fsv.cvut.cz> writes:
> I am testing long array values. I tryed write simple function in plpgsql
> for this. I found maybe a bug. Array in plpgsql without explicit init
> (empty array) don't work;
This isn't a bug; or at least, it's not plpgsql's fault. The array
variable is initially NULL, same as any other plpgsql variable you
didn't explicitly initialize. And assigning to an element of a NULL
array yields another NULL array.
Perhaps that behavior should be changed, but I think it would require
making unsupported assumptions about what the user wants...
regards, tom lane