Re: BUG #14289: Potential bug: "invalid attribute number" when dblink result is assigned in PL/PGSQL
От | Tom Lane |
---|---|
Тема | Re: BUG #14289: Potential bug: "invalid attribute number" when dblink result is assigned in PL/PGSQL |
Дата | |
Msg-id | 19568.1471546317@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | BUG #14289: Potential bug: "invalid attribute number" when dblink result is assigned in PL/PGSQL (m.overmeyer@yahoo.ca) |
Список | pgsql-bugs |
m.overmeyer@yahoo.ca writes: > I believe I may have found a bug in PL/PGSQL or dblink. So you did. Fixed, thanks. For the archives' sake, the test case looked like ------ create extension dblink; create table test_table ( username text primary key ); INSERT INTO test_table VALUES ('test_user'); CREATE OR REPLACE FUNCTION test_assignment(primary_key_attnums int2vector) RETURNS text AS $BODY$ DECLARE results text; BEGIN -- This doesn't work: results := dblink_build_sql_delete('test_table', primary_key_attnums, 1, ARRAY['test_user']::text[]); -- But this one (use value instead of parameter) does work: --results := dblink_build_sql_delete('test_table', '1'::int2vector, 1, ARRAY['test_user']::text[]); --And so does this one: -- SELECT dblink_build_sql_delete('test_table', primary_key_attnums, 1, ARRAY['test_user']::text[]) INTO results; return results; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; SELECT test_assignment('1'::int2vector); ----- and the problem was that plpgsql thought it could convert the int2vector argument into an "expanded array". But int2vector doesn't allow toasting so a fortiori it can't handle being expanded. regards, tom lane
В списке pgsql-bugs по дате отправления: