BUG #1370: Problem with arrays in PL/PGSQL
От | David Bowen |
---|---|
Тема | BUG #1370: Problem with arrays in PL/PGSQL |
Дата | |
Msg-id | 200501030311.j033B5bM021078@developer.pgadmin.org обсуждение исходный текст |
Ответы |
Re: BUG #1370: Problem with arrays in PL/PGSQL
|
Список | pgsql-bugs |
The following bug has been logged online: Bug reference: 1370 Logged by: David Bowen Email address: dmb0317@frontiernet.net PostgreSQL version: 8.0 Operating system: Fedora Core 2/Athlon 950 processor Description: Problem with arrays in PL/PGSQL Details: PostgreSQL 8.0.0rc2 test=# \d scores Table "public.scores" Column | Type | Modifiers ---------------+---------+----------- contestant_id | integer | category | integer | score | integer | test=# select * from scores; contestant_id | category | score ---------------+----------+------- 1 | 1 | 70 1 | 2 | 73 1 | 3 | 69 2 | 1 | 72 2 | 2 | 70 2 | 3 | 73 3 | 1 | 66 3 | 2 | 75 3 | 3 | 72 (9 rows) test=# \i /home1/dmb/crosstab CREATE FUNCTION test=# select crosstab(1); ERROR: array value must start with "{" or dimension information CONTEXT: PL/pgSQL function "crosstab" line 5 at block variables initialization $ cat /home1/dmb/crosstab CREATE OR REPLACE FUNCTION crosstab (integer) RETURNS integer[] AS ' DECLARE contestant ALIAS FOR $1; row scores%ROWTYPE; s integer[3]:= (-1,-1,-1); BEGIN FOR row IN SELECT * FROM scores where contestant_id = contestant LOOP s[row.category] := row.score; END LOOP; RETURN s; END; ' LANGUAGE 'PLPGSQL'; Changing s integer[3]:= (-1,-1,-1); to s integer[3]:= {-1,-1,-1}; test=# \i /home1/dmb/crosstab CREATE FUNCTION test=# select crosstab(1); ERROR: syntax error at or near "{" at character 9 QUERY: SELECT {-1,-1,-1} CONTEXT: PL/pgSQL function "crosstab" line 5 at block variables initialization LINE 1: SELECT {-1,-1,-1} ^ Changing to s integer[3]; test=# \i /home1/dmb/crosstab CREATE FUNCTION test=# select crosstab(1); crosstab ---------- (1 row) gdb shows exec_assign_value returning at line 3137 because oldarrayisnull is TRUE, so s never gets assigned. If you need additional information, ask and ye shall receive.
В списке pgsql-bugs по дате отправления: