diff options
author | Tom Lane | 2006-02-12 06:37:05 +0000 |
---|---|---|
committer | Tom Lane | 2006-02-12 06:37:05 +0000 |
commit | 15c72174f35d75d31efa35968e39f1bb09f5a9aa (patch) | |
tree | 49ee41492e1bb19caf04c8e153161a43688f21ea /src/test | |
parent | 58634caa0ff693f1ab82e7af1a579fba841e9df8 (diff) |
Apply code-reviewed version of for-scalar-list patch: mostly, fixing
it to report reasonable errors in error cases.
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/regress/expected/plpgsql.out | 45 | ||||
-rw-r--r-- | src/test/regress/sql/plpgsql.sql | 23 |
2 files changed, 53 insertions, 15 deletions
diff --git a/src/test/regress/expected/plpgsql.out b/src/test/regress/expected/plpgsql.out index 3bcafcfb4d0..1a4307dce28 100644 --- a/src/test/regress/expected/plpgsql.out +++ b/src/test/regress/expected/plpgsql.out @@ -2722,22 +2722,53 @@ $$ 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 $$ +create function for_vect() returns void as $proc$ <<lbl>>declare a integer; b varchar; c varchar; r record; begin - -- old fori - for i in 1 .. 10 loop + -- fori + for i in 1 .. 3 loop raise notice '%', i; end loop; - for a in select 1 from generate_series(1,4) loop + -- fore with record var + for r in select gs as aa, 'BB' as bb, 'CC' as cc from generate_series(1,4) gs loop + raise notice '% % %', r.aa, r.bb, r.cc; + end loop; + -- fore with single scalar + for a in select gs from generate_series(1,4) gs loop raise notice '%', a; end loop; - for a,b,c in select generate_series, 'BB','CC' from generate_series(1,4) loop + -- fore with multiple scalars + for a,b,c in select gs, 'BB','CC' from generate_series(1,4) gs 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 + for lbl.a, lbl.b, lbl.c in execute $$select gs, 'bb','cc' from generate_series(1,4) gs$$ loop raise notice '% % %', a, b, c; end loop; end; -$$ language plpgsql; +$proc$ language plpgsql; +select for_vect(); +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: 1 BB CC +NOTICE: 2 BB CC +NOTICE: 3 BB CC +NOTICE: 4 BB CC +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: 4 +NOTICE: 1 BB CC +NOTICE: 2 BB CC +NOTICE: 3 BB CC +NOTICE: 4 BB CC +NOTICE: 1 bb cc +NOTICE: 2 bb cc +NOTICE: 3 bb cc +NOTICE: 4 bb cc + for_vect +---------- + +(1 row) + diff --git a/src/test/regress/sql/plpgsql.sql b/src/test/regress/sql/plpgsql.sql index 63b8bef14eb..5e8db475720 100644 --- a/src/test/regress/sql/plpgsql.sql +++ b/src/test/regress/sql/plpgsql.sql @@ -2281,24 +2281,31 @@ begin end; $$ language plpgsql; - -- using list of scalars in fori and fore stmts -create function for_vect() returns void as $$ +create function for_vect() returns void as $proc$ <<lbl>>declare a integer; b varchar; c varchar; r record; begin - -- old fori - for i in 1 .. 10 loop + -- fori + for i in 1 .. 3 loop raise notice '%', i; end loop; - for a in select 1 from generate_series(1,4) loop + -- fore with record var + for r in select gs as aa, 'BB' as bb, 'CC' as cc from generate_series(1,4) gs loop + raise notice '% % %', r.aa, r.bb, r.cc; + end loop; + -- fore with single scalar + for a in select gs from generate_series(1,4) gs loop raise notice '%', a; end loop; - for a,b,c in select generate_series, 'BB','CC' from generate_series(1,4) loop + -- fore with multiple scalars + for a,b,c in select gs, 'BB','CC' from generate_series(1,4) gs 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 + for lbl.a, lbl.b, lbl.c in execute $$select gs, 'bb','cc' from generate_series(1,4) gs$$ loop raise notice '% % %', a, b, c; end loop; end; -$$ language plpgsql; +$proc$ language plpgsql; + +select for_vect(); |