summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorTom Lane2007-09-03 00:39:26 +0000
committerTom Lane2007-09-03 00:39:26 +0000
commit2abae34a2e8fde42be731b4e18d44cd08901464d (patch)
treef555c8fc5d653c24ccc407a06f46e5f1bbbf40f7 /src/test
parentfcfe801ab84c124d4103f9afb1140c9c2558cb54 (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.out33
-rw-r--r--src/test/regress/sql/guc.sql25
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');