diff options
author | Tom Lane | 2007-09-03 00:39:26 +0000 |
---|---|---|
committer | Tom Lane | 2007-09-03 00:39:26 +0000 |
commit | 2abae34a2e8fde42be731b4e18d44cd08901464d (patch) | |
tree | f555c8fc5d653c24ccc407a06f46e5f1bbbf40f7 /src/test | |
parent | fcfe801ab84c124d4103f9afb1140c9c2558cb54 (diff) |
Implement function-local GUC parameter settings, as per recent discussion.
There are still some loose ends: I didn't do anything about the SET FROM
CURRENT idea yet, and it's not real clear whether we are happy with the
interaction of SET LOCAL with function-local settings. The documentation
is a bit spartan, too.
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/regress/expected/guc.out | 33 | ||||
-rw-r--r-- | src/test/regress/sql/guc.sql | 25 |
2 files changed, 58 insertions, 0 deletions
diff --git a/src/test/regress/expected/guc.out b/src/test/regress/expected/guc.out index d8ad5667ab7..2276cff4e0c 100644 --- a/src/test/regress/expected/guc.out +++ b/src/test/regress/expected/guc.out @@ -525,3 +525,36 @@ SELECT current_user = 'temp_reset_user'; (1 row) DROP ROLE temp_reset_user; +-- +-- Tests for function-local GUC settings +-- +set regex_flavor = advanced; +create function report_guc(text) returns text as +$$ select current_setting($1) $$ language sql +set regex_flavor = basic; +select report_guc('regex_flavor'), current_setting('regex_flavor'); + report_guc | current_setting +------------+----------------- + basic | advanced +(1 row) + +-- this should draw only a warning +alter function report_guc(text) set search_path = no_such_schema; +NOTICE: schema "no_such_schema" does not exist +-- with error occurring here +select report_guc('regex_flavor'), current_setting('regex_flavor'); +ERROR: schema "no_such_schema" does not exist +alter function report_guc(text) reset search_path set regex_flavor = extended; +select report_guc('regex_flavor'), current_setting('regex_flavor'); + report_guc | current_setting +------------+----------------- + extended | advanced +(1 row) + +alter function report_guc(text) reset all; +select report_guc('regex_flavor'), current_setting('regex_flavor'); + report_guc | current_setting +------------+----------------- + advanced | advanced +(1 row) + diff --git a/src/test/regress/sql/guc.sql b/src/test/regress/sql/guc.sql index a25a13820d7..ffaddec7e98 100644 --- a/src/test/regress/sql/guc.sql +++ b/src/test/regress/sql/guc.sql @@ -162,3 +162,28 @@ SELECT relname from pg_class where relname = 'tmp_foo'; SELECT current_user = 'temp_reset_user'; DROP ROLE temp_reset_user; +-- +-- Tests for function-local GUC settings +-- + +set regex_flavor = advanced; + +create function report_guc(text) returns text as +$$ select current_setting($1) $$ language sql +set regex_flavor = basic; + +select report_guc('regex_flavor'), current_setting('regex_flavor'); + +-- this should draw only a warning +alter function report_guc(text) set search_path = no_such_schema; + +-- with error occurring here +select report_guc('regex_flavor'), current_setting('regex_flavor'); + +alter function report_guc(text) reset search_path set regex_flavor = extended; + +select report_guc('regex_flavor'), current_setting('regex_flavor'); + +alter function report_guc(text) reset all; + +select report_guc('regex_flavor'), current_setting('regex_flavor'); |