1 -- pg_regress should ensure that this default value applies; however
2 -- we can't rely on any specific default value of vacuum_cost_delay
5 -- SET to some nondefault value
6 SET vacuum_cost_delay TO 40;
7 SET datestyle = 'ISO, YMD';
8 SHOW vacuum_cost_delay;
10 SELECT '2006-08-13 12:34:56'::timestamptz;
12 -- SET LOCAL has no effect outside of a transaction
13 SET LOCAL vacuum_cost_delay TO 50;
14 SHOW vacuum_cost_delay;
15 SET LOCAL datestyle = 'SQL';
17 SELECT '2006-08-13 12:34:56'::timestamptz;
19 -- SET LOCAL within a transaction that commits
21 SET LOCAL vacuum_cost_delay TO 50;
22 SHOW vacuum_cost_delay;
23 SET LOCAL datestyle = 'SQL';
25 SELECT '2006-08-13 12:34:56'::timestamptz;
27 SHOW vacuum_cost_delay;
29 SELECT '2006-08-13 12:34:56'::timestamptz;
31 -- SET should be reverted after ROLLBACK
33 SET vacuum_cost_delay TO 60;
34 SHOW vacuum_cost_delay;
35 SET datestyle = 'German';
37 SELECT '2006-08-13 12:34:56'::timestamptz;
39 SHOW vacuum_cost_delay;
41 SELECT '2006-08-13 12:34:56'::timestamptz;
43 -- Some tests with subtransactions
45 SET vacuum_cost_delay TO 70;
46 SET datestyle = 'MDY';
48 SELECT '2006-08-13 12:34:56'::timestamptz;
50 SET vacuum_cost_delay TO 80;
51 SHOW vacuum_cost_delay;
52 SET datestyle = 'German, DMY';
54 SELECT '2006-08-13 12:34:56'::timestamptz;
57 SELECT '2006-08-13 12:34:56'::timestamptz;
59 SET vacuum_cost_delay TO 90;
60 SET datestyle = 'SQL, YMD';
62 SELECT '2006-08-13 12:34:56'::timestamptz;
64 SET vacuum_cost_delay TO 100;
65 SHOW vacuum_cost_delay;
66 SET datestyle = 'Postgres, MDY';
68 SELECT '2006-08-13 12:34:56'::timestamptz;
70 SHOW vacuum_cost_delay;
72 SELECT '2006-08-13 12:34:56'::timestamptz;
73 ROLLBACK TO second_sp;
74 SHOW vacuum_cost_delay;
76 SELECT '2006-08-13 12:34:56'::timestamptz;
78 SHOW vacuum_cost_delay;
80 SELECT '2006-08-13 12:34:56'::timestamptz;
82 -- SET LOCAL with Savepoints
84 SHOW vacuum_cost_delay;
86 SELECT '2006-08-13 12:34:56'::timestamptz;
88 SET LOCAL vacuum_cost_delay TO 30;
89 SHOW vacuum_cost_delay;
90 SET LOCAL datestyle = 'Postgres, MDY';
92 SELECT '2006-08-13 12:34:56'::timestamptz;
94 SHOW vacuum_cost_delay;
96 SELECT '2006-08-13 12:34:56'::timestamptz;
98 SHOW vacuum_cost_delay;
100 SELECT '2006-08-13 12:34:56'::timestamptz;
102 -- SET LOCAL persists through RELEASE (which was not true in 8.0-8.2)
104 SHOW vacuum_cost_delay;
106 SELECT '2006-08-13 12:34:56'::timestamptz;
108 SET LOCAL vacuum_cost_delay TO 30;
109 SHOW vacuum_cost_delay;
110 SET LOCAL datestyle = 'Postgres, MDY';
112 SELECT '2006-08-13 12:34:56'::timestamptz;
113 RELEASE SAVEPOINT sp;
114 SHOW vacuum_cost_delay;
116 SELECT '2006-08-13 12:34:56'::timestamptz;
118 SHOW vacuum_cost_delay;
120 SELECT '2006-08-13 12:34:56'::timestamptz;
122 -- SET followed by SET LOCAL
124 SET vacuum_cost_delay TO 40;
125 SET LOCAL vacuum_cost_delay TO 50;
126 SHOW vacuum_cost_delay;
127 SET datestyle = 'ISO, DMY';
128 SET LOCAL datestyle = 'Postgres, MDY';
130 SELECT '2006-08-13 12:34:56'::timestamptz;
132 SHOW vacuum_cost_delay;
134 SELECT '2006-08-13 12:34:56'::timestamptz;
137 -- Test RESET. We use datestyle because the reset value is forced by
138 -- pg_regress, so it doesn't depend on the installation's configuration.
140 SET datestyle = iso, ymd;
142 SELECT '2006-08-13 12:34:56'::timestamptz;
145 SELECT '2006-08-13 12:34:56'::timestamptz;
150 CREATE TEMP TABLE reset_test ( data text ) ON COMMIT DELETE ROWS;
151 SELECT relname FROM pg_class WHERE relname = 'reset_test';
153 SELECT relname FROM pg_class WHERE relname = 'reset_test';
160 DECLARE foo CURSOR WITH HOLD FOR SELECT 1;
161 PREPARE foo AS SELECT 1;
163 SET vacuum_cost_delay = 13;
164 CREATE TEMP TABLE tmp_foo (data text) ON COMMIT DELETE ROWS;
165 CREATE ROLE temp_reset_user;
166 SET SESSION AUTHORIZATION temp_reset_user;
168 SELECT relname FROM pg_listener;
169 SELECT name FROM pg_prepared_statements;
170 SELECT name FROM pg_cursors;
171 SHOW vacuum_cost_delay;
172 SELECT relname from pg_class where relname = 'tmp_foo';
173 SELECT current_user = 'temp_reset_user';
174 -- discard everything
177 SELECT relname FROM pg_listener;
178 SELECT name FROM pg_prepared_statements;
179 SELECT name FROM pg_cursors;
180 SHOW vacuum_cost_delay;
181 SELECT relname from pg_class where relname = 'tmp_foo';
182 SELECT current_user = 'temp_reset_user';
183 DROP ROLE temp_reset_user;
186 -- Tests for function-local GUC settings
189 set regex_flavor = advanced;
191 create function report_guc(text) returns text as
192 $$ select current_setting($1) $$ language sql
193 set regex_flavor = basic;
195 select report_guc('regex_flavor'), current_setting('regex_flavor');
197 -- this should draw only a warning
198 alter function report_guc(text) set search_path = no_such_schema;
200 -- with error occurring here
201 select report_guc('regex_flavor'), current_setting('regex_flavor');
203 alter function report_guc(text) reset search_path set regex_flavor = extended;
205 select report_guc('regex_flavor'), current_setting('regex_flavor');
207 alter function report_guc(text) reset all;
209 select report_guc('regex_flavor'), current_setting('regex_flavor');
211 -- SET LOCAL is restricted by a function SET option
212 create or replace function myfunc(int) returns text as $$
214 set local regex_flavor = extended;
215 return current_setting('regex_flavor');
218 set regex_flavor = basic;
220 select myfunc(0), current_setting('regex_flavor');
222 alter function myfunc(int) reset all;
224 select myfunc(0), current_setting('regex_flavor');
226 set regex_flavor = advanced;
229 create or replace function myfunc(int) returns text as $$
231 set regex_flavor = extended;
232 return current_setting('regex_flavor');
235 set regex_flavor = basic;
237 select myfunc(0), current_setting('regex_flavor');
239 set regex_flavor = advanced;
241 -- it should roll back on error, though
242 create or replace function myfunc(int) returns text as $$
244 set regex_flavor = extended;
246 return current_setting('regex_flavor');
249 set regex_flavor = basic;
252 select current_setting('regex_flavor');
253 select myfunc(1), current_setting('regex_flavor');