aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2006-08-04 00:00:14 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2006-08-04 00:00:14 +0000
commitc82264291e111efa716d60d61fadd23b4cd0d189 (patch)
tree6c885dd3b1173587c3ade42aa50974e0714eb95d
parent7946f77220bb960e7ba5ed2a9dfb84ac3f926b2f (diff)
downloadpostgresql-c82264291e111efa716d60d61fadd23b4cd0d189.tar.gz
postgresql-c82264291e111efa716d60d61fadd23b4cd0d189.zip
Add some basic tests of GUC behavior.
Joachim Wieland
-rw-r--r--src/test/regress/expected/guc.out150
-rw-r--r--src/test/regress/parallel_schedule4
-rw-r--r--src/test/regress/serial_schedule5
-rw-r--r--src/test/regress/sql/guc.sql67
4 files changed, 222 insertions, 4 deletions
diff --git a/src/test/regress/expected/guc.out b/src/test/regress/expected/guc.out
new file mode 100644
index 00000000000..fb6d0d774df
--- /dev/null
+++ b/src/test/regress/expected/guc.out
@@ -0,0 +1,150 @@
+-- SET vacuum_cost_delay to some value
+SET vacuum_cost_delay TO 400;
+SHOW vacuum_cost_delay;
+ vacuum_cost_delay
+-------------------
+ 400ms
+(1 row)
+
+-- SET LOCAL has no effect outside of a transaction
+SET LOCAL vacuum_cost_delay TO 500;
+SHOW vacuum_cost_delay;
+ vacuum_cost_delay
+-------------------
+ 400ms
+(1 row)
+
+-- SET LOCAL within a transaction that commits
+BEGIN;
+SET LOCAL vacuum_cost_delay TO 500;
+SHOW vacuum_cost_delay;
+ vacuum_cost_delay
+-------------------
+ 500ms
+(1 row)
+
+COMMIT;
+SHOW vacuum_cost_delay;
+ vacuum_cost_delay
+-------------------
+ 400ms
+(1 row)
+
+-- SET should be reverted after ROLLBACK
+BEGIN;
+SET vacuum_cost_delay TO 600;
+SHOW vacuum_cost_delay;
+ vacuum_cost_delay
+-------------------
+ 600ms
+(1 row)
+
+ROLLBACK;
+SHOW vacuum_cost_delay;
+ vacuum_cost_delay
+-------------------
+ 400ms
+(1 row)
+
+-- Some tests with subtransactions
+BEGIN;
+SET vacuum_cost_delay TO 700;
+SAVEPOINT first_sp;
+SET vacuum_cost_delay TO 800;
+ROLLBACK TO first_sp;
+SHOW vacuum_cost_delay;
+ vacuum_cost_delay
+-------------------
+ 700ms
+(1 row)
+
+SAVEPOINT second_sp;
+SET vacuum_cost_delay TO 900;
+SAVEPOINT third_sp;
+SET vacuum_cost_delay TO 1000;
+SHOW vacuum_cost_delay;
+ vacuum_cost_delay
+-------------------
+ 1s
+(1 row)
+
+ROLLBACK TO third_sp;
+SHOW vacuum_cost_delay;
+ vacuum_cost_delay
+-------------------
+ 900ms
+(1 row)
+
+ROLLBACK TO second_sp;
+SHOW vacuum_cost_delay;
+ vacuum_cost_delay
+-------------------
+ 700ms
+(1 row)
+
+ROLLBACK;
+-- SET LOCAL with Savepoints
+BEGIN;
+SHOW vacuum_cost_delay;
+ vacuum_cost_delay
+-------------------
+ 400ms
+(1 row)
+
+SAVEPOINT sp;
+SET LOCAL vacuum_cost_delay TO 300;
+SHOW vacuum_cost_delay;
+ vacuum_cost_delay
+-------------------
+ 300ms
+(1 row)
+
+ROLLBACK TO sp;
+SHOW vacuum_cost_delay;
+ vacuum_cost_delay
+-------------------
+ 400ms
+(1 row)
+
+ROLLBACK;
+-- SET followed by SET LOCAL
+BEGIN;
+SET vacuum_cost_delay TO 400;
+SET LOCAL vacuum_cost_delay TO 500;
+SHOW vacuum_cost_delay;
+ vacuum_cost_delay
+-------------------
+ 500ms
+(1 row)
+
+COMMIT;
+SHOW vacuum_cost_delay;
+ vacuum_cost_delay
+-------------------
+ 400ms
+(1 row)
+
+--
+-- Test RESET. We use datestyle because the reset value is forced by
+-- pg_regress, so it doesn't depend on the installation's configuration.
+--
+SHOW datestyle;
+ DateStyle
+---------------
+ Postgres, MDY
+(1 row)
+
+SET datestyle = iso, ymd;
+SHOW datestyle;
+ DateStyle
+-----------
+ ISO, YMD
+(1 row)
+
+RESET datestyle;
+SHOW datestyle;
+ DateStyle
+---------------
+ Postgres, MDY
+(1 row)
+
diff --git a/src/test/regress/parallel_schedule b/src/test/regress/parallel_schedule
index 85a1bbe9f34..83f556a5a25 100644
--- a/src/test/regress/parallel_schedule
+++ b/src/test/regress/parallel_schedule
@@ -1,6 +1,6 @@
# ----------
# The first group of parallel test
-# $PostgreSQL: pgsql/src/test/regress/parallel_schedule,v 1.32 2006/03/11 04:38:41 momjian Exp $
+# $PostgreSQL: pgsql/src/test/regress/parallel_schedule,v 1.33 2006/08/04 00:00:13 tgl Exp $
# ----------
test: boolean char name varchar text int2 int4 int8 oid float4 float8 bit numeric
@@ -69,7 +69,7 @@ test: misc
# ----------
# The fifth group of parallel test
# ----------
-test: select_views portals_p2 rules foreign_key cluster dependency
+test: select_views portals_p2 rules foreign_key cluster dependency guc
# ----------
# The sixth group of parallel test
diff --git a/src/test/regress/serial_schedule b/src/test/regress/serial_schedule
index 3342dc2ba1f..ec051c04551 100644
--- a/src/test/regress/serial_schedule
+++ b/src/test/regress/serial_schedule
@@ -1,4 +1,4 @@
-# $PostgreSQL: pgsql/src/test/regress/serial_schedule,v 1.30 2006/01/22 05:20:34 neilc Exp $
+# $PostgreSQL: pgsql/src/test/regress/serial_schedule,v 1.31 2006/08/04 00:00:13 tgl Exp $
# This should probably be in an order similar to parallel_schedule.
test: boolean
test: char
@@ -84,6 +84,8 @@ test: portals_p2
test: rules
test: foreign_key
test: cluster
+test: dependency
+test: guc
test: limit
test: plpgsql
test: copy2
@@ -100,4 +102,3 @@ test: polymorphism
test: rowtypes
test: stats
test: tablespace
-test: dependency
diff --git a/src/test/regress/sql/guc.sql b/src/test/regress/sql/guc.sql
new file mode 100644
index 00000000000..420f3f4386b
--- /dev/null
+++ b/src/test/regress/sql/guc.sql
@@ -0,0 +1,67 @@
+-- SET vacuum_cost_delay to some value
+SET vacuum_cost_delay TO 400;
+SHOW vacuum_cost_delay;
+
+-- SET LOCAL has no effect outside of a transaction
+SET LOCAL vacuum_cost_delay TO 500;
+SHOW vacuum_cost_delay;
+
+-- SET LOCAL within a transaction that commits
+BEGIN;
+SET LOCAL vacuum_cost_delay TO 500;
+SHOW vacuum_cost_delay;
+COMMIT;
+SHOW vacuum_cost_delay;
+
+-- SET should be reverted after ROLLBACK
+BEGIN;
+SET vacuum_cost_delay TO 600;
+SHOW vacuum_cost_delay;
+ROLLBACK;
+SHOW vacuum_cost_delay;
+
+-- Some tests with subtransactions
+BEGIN;
+SET vacuum_cost_delay TO 700;
+SAVEPOINT first_sp;
+SET vacuum_cost_delay TO 800;
+ROLLBACK TO first_sp;
+SHOW vacuum_cost_delay;
+SAVEPOINT second_sp;
+SET vacuum_cost_delay TO 900;
+SAVEPOINT third_sp;
+SET vacuum_cost_delay TO 1000;
+SHOW vacuum_cost_delay;
+ROLLBACK TO third_sp;
+SHOW vacuum_cost_delay;
+ROLLBACK TO second_sp;
+SHOW vacuum_cost_delay;
+ROLLBACK;
+
+-- SET LOCAL with Savepoints
+BEGIN;
+SHOW vacuum_cost_delay;
+SAVEPOINT sp;
+SET LOCAL vacuum_cost_delay TO 300;
+SHOW vacuum_cost_delay;
+ROLLBACK TO sp;
+SHOW vacuum_cost_delay;
+ROLLBACK;
+
+-- SET followed by SET LOCAL
+BEGIN;
+SET vacuum_cost_delay TO 400;
+SET LOCAL vacuum_cost_delay TO 500;
+SHOW vacuum_cost_delay;
+COMMIT;
+SHOW vacuum_cost_delay;
+
+--
+-- Test RESET. We use datestyle because the reset value is forced by
+-- pg_regress, so it doesn't depend on the installation's configuration.
+--
+SHOW datestyle;
+SET datestyle = iso, ymd;
+SHOW datestyle;
+RESET datestyle;
+SHOW datestyle;