FOR-IN-EXECUTE: FOR does not replanned on each entry to the FOR loop

Поиск
Список
Период
Сортировка
От
Тема FOR-IN-EXECUTE: FOR does not replanned on each entry to the FOR loop
Дата
Msg-id 036201c890c2$032a7b30$1200a8c0@kharkov.localhost
обсуждение исходный текст
Ответы Re: FOR-IN-EXECUTE: FOR does not replanned on each entry to the FOR loop  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: FOR-IN-EXECUTE: FOR does not replanned on each entry to the FOR loop  (Euler Taveira de Oliveira <euler@timbira.com>)
Список pgsql-bugs
ID |name | parent_ID
-------------------------
1    a             NULL
2    b               1


CREATE or REPLACE FUNCTION "public"."get_relation"(
IN "par_fields" text,
IN "par_table" text,
IN "par_id" int4)
RETURNS SETOF "pg_catalog"."record" AS
$BODY$
DECLARE v_parent_ID integer;
DECLARE v_row record;
BEGIN

v_parent_ID:= par_id;

--WHILE (v_parent_ID IS NOT NULL) LOOP
-- EXECUTE 'SELECT parent_ID, name FROM akh_build WHERE ID = ' ||
quote_literal(v_parent_ID) INTO v_row;
-- return next v_row;
-- v_parent_ID= v_row.parent_ID;
--END LOOP;

FOR v_row IN EXECUTE 'SELECT parent_ID, name FROM akh_build WHERE ID = ' ||
quote_literal(v_parent_ID) LOOP
 return next v_row;
 v_parent_ID= v_row.parent_ID;
END LOOP;

return;

END;
$BODY$
LANGUAGE 'plpgsql' STRICT STABLE;

select * from get_relation( '', '', 2 ) as ( a int, b varchar )

FOR and WHILE results differ
WHILE returns two rows
but FOR returns only one.
and it seems that FOR does not replanned on each entry to the FOR loop
While docs says:
38.6.4. Looping Through Query Results
....
This is like the previous form, except that the source query is specified as
a string expression, which is evaluated and replanned on each entry to the
FOR loop

В списке pgsql-bugs по дате отправления:

Предыдущее
От:
Дата:
Сообщение: Documentation commenting does not work
Следующее
От: Alvaro Herrera
Дата:
Сообщение: Re: Problem identifying constraints which should not be inherited