summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorBruce Momjian2006-02-12 06:03:38 +0000
committerBruce Momjian2006-02-12 06:03:38 +0000
commit025ffe586f9a8b4ab05b5e5b34a8b6200f369cf4 (patch)
treec3cb0f6f90f570c437b6e4c6b3b3789e7a0e4e53 /src/test
parent18cbc7aefc8265a4f8347be8dfefeb40f7b19656 (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.out20
-rw-r--r--src/test/regress/sql/plpgsql.sql22
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;