Обсуждение: 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