diff options
| author | Neil Conway <neilc@samurai.com> | 2005-06-14 06:43:15 +0000 |
|---|---|---|
| committer | Neil Conway <neilc@samurai.com> | 2005-06-14 06:43:15 +0000 |
| commit | d6636543c4becc4ba9989af8e5b490e1ee2e7c0e (patch) | |
| tree | 93479621c179876cee82edb2c79293c975b0a8c4 /src/test/regress/sql/plpgsql.sql | |
| parent | bd6bf50b032a6d095c7f1513aa209d632b264a2f (diff) | |
| download | postgresql-d6636543c4becc4ba9989af8e5b490e1ee2e7c0e.tar.gz | |
Allow the parameters to PL/PgSQL's RAISE statement to be expressions,
instead of just scalar variables. Add regression tests and update the
documentation. Along the way, remove some redundant error checking
code from exec_stmt_perform().
Original patch from Pavel Stehule, reworked by Neil Conway.
Diffstat (limited to 'src/test/regress/sql/plpgsql.sql')
| -rw-r--r-- | src/test/regress/sql/plpgsql.sql | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/src/test/regress/sql/plpgsql.sql b/src/test/regress/sql/plpgsql.sql index 9dc00f2f1e..375eef8959 100644 --- a/src/test/regress/sql/plpgsql.sql +++ b/src/test/regress/sql/plpgsql.sql @@ -2055,15 +2055,15 @@ drop type eitype cascade; -- SQLSTATE and SQLERRM test -- --- should fail: SQLSTATE and SQLERRM are only in defined EXCEPTION --- blocks -create function excpt_test() returns void as $$ +create function excpt_test1() returns void as $$ begin raise notice '% %', sqlstate, sqlerrm; end; $$ language plpgsql; +-- should fail: SQLSTATE and SQLERRM are only in defined EXCEPTION +-- blocks +select excpt_test1(); --- should fail -create function excpt_test() returns void as $$ +create function excpt_test2() returns void as $$ begin begin begin @@ -2071,8 +2071,10 @@ begin end; end; end; $$ language plpgsql; +-- should fail +select excpt_test2(); -create function excpt_test() returns void as $$ +create function excpt_test3() returns void as $$ begin begin raise exception 'user exception'; @@ -2092,5 +2094,21 @@ begin end; end; $$ language plpgsql; -select excpt_test(); -drop function excpt_test(); +select excpt_test3(); +drop function excpt_test1(); +drop function excpt_test2(); +drop function excpt_test3(); + +-- parameters of raise stmt can be expressions +create function raise_exprs() returns void as $$ +declare + a integer[] = '{10,20,30}'; + c varchar = 'xyz'; + i integer; +begin + i := 2; + raise notice '%; %; %; %; %; %', a, a[i], c, (select c || 'abc'), row(10,'aaa',NULL,30), NULL; +end;$$ language plpgsql; + +select raise_exprs(); +drop function raise_exprs(); |
