diff options
| author | Bruce Momjian | 2006-02-12 06:03:38 +0000 |
|---|---|---|
| committer | Bruce Momjian | 2006-02-12 06:03:38 +0000 |
| commit | 025ffe586f9a8b4ab05b5e5b34a8b6200f369cf4 (patch) | |
| tree | c3cb0f6f90f570c437b6e4c6b3b3789e7a0e4e53 /src/test | |
| parent | 18cbc7aefc8265a4f8347be8dfefeb40f7b19656 (diff) | |
Allow PL/pgSQL FOR statement to return values to scalars as well as
records and row types.
Pavel Stehule
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/regress/expected/plpgsql.out | 20 | ||||
| -rw-r--r-- | src/test/regress/sql/plpgsql.sql | 22 |
2 files changed, 42 insertions, 0 deletions
diff --git a/src/test/regress/expected/plpgsql.out b/src/test/regress/expected/plpgsql.out index aef73e1eee7..3bcafcfb4d0 100644 --- a/src/test/regress/expected/plpgsql.out +++ b/src/test/regress/expected/plpgsql.out @@ -2721,3 +2721,23 @@ end; $$ language plpgsql; ERROR: end label "outer_label" specified for unlabelled block CONTEXT: compile of PL/pgSQL function "end_label4" near line 5 +-- using list of scalars in fori and fore stmts +create function for_vect() returns void as $$ +<<lbl>>declare a integer; b varchar; c varchar; r record; +begin + -- old fori + for i in 1 .. 10 loop + raise notice '%', i; + end loop; + for a in select 1 from generate_series(1,4) loop + raise notice '%', a; + end loop; + for a,b,c in select generate_series, 'BB','CC' from generate_series(1,4) loop + raise notice '% % %', a, b, c; + end loop; + -- using qualified names in fors, fore is enabled, disabled only for fori + for lbl.a, lbl.b, lbl.c in execute E'select generate_series, \'bb\',\'cc\' from generate_series(1,4)' loop + raise notice '% % %', a, b, c; + end loop; +end; +$$ language plpgsql; diff --git a/src/test/regress/sql/plpgsql.sql b/src/test/regress/sql/plpgsql.sql index fdb2f46ff89..63b8bef14eb 100644 --- a/src/test/regress/sql/plpgsql.sql +++ b/src/test/regress/sql/plpgsql.sql @@ -2280,3 +2280,25 @@ begin end loop outer_label; end; $$ language plpgsql; + + +-- using list of scalars in fori and fore stmts +create function for_vect() returns void as $$ +<<lbl>>declare a integer; b varchar; c varchar; r record; +begin + -- old fori + for i in 1 .. 10 loop + raise notice '%', i; + end loop; + for a in select 1 from generate_series(1,4) loop + raise notice '%', a; + end loop; + for a,b,c in select generate_series, 'BB','CC' from generate_series(1,4) loop + raise notice '% % %', a, b, c; + end loop; + -- using qualified names in fors, fore is enabled, disabled only for fori + for lbl.a, lbl.b, lbl.c in execute E'select generate_series, \'bb\',\'cc\' from generate_series(1,4)' loop + raise notice '% % %', a, b, c; + end loop; +end; +$$ language plpgsql; |
