diff options
Diffstat (limited to 'src/test/modules/commit_ts')
-rw-r--r-- | src/test/modules/commit_ts/.gitignore | 4 | ||||
-rw-r--r-- | src/test/modules/commit_ts/Makefile | 15 | ||||
-rw-r--r-- | src/test/modules/commit_ts/commit_ts.conf | 1 | ||||
-rw-r--r-- | src/test/modules/commit_ts/expected/commit_timestamp.out | 39 | ||||
-rw-r--r-- | src/test/modules/commit_ts/expected/commit_timestamp_1.out | 34 | ||||
-rw-r--r-- | src/test/modules/commit_ts/sql/commit_timestamp.sql | 24 |
6 files changed, 117 insertions, 0 deletions
diff --git a/src/test/modules/commit_ts/.gitignore b/src/test/modules/commit_ts/.gitignore new file mode 100644 index 00000000000..5dcb3ff9723 --- /dev/null +++ b/src/test/modules/commit_ts/.gitignore @@ -0,0 +1,4 @@ +# Generated subdirectories +/log/ +/results/ +/tmp_check/ diff --git a/src/test/modules/commit_ts/Makefile b/src/test/modules/commit_ts/Makefile new file mode 100644 index 00000000000..b3cb3151107 --- /dev/null +++ b/src/test/modules/commit_ts/Makefile @@ -0,0 +1,15 @@ +# src/test/modules/commit_ts/Makefile + +REGRESS = commit_timestamp +REGRESS_OPTS = --temp-config=$(top_srcdir)/src/test/modules/commit_ts/commit_ts.conf + +ifdef USE_PGXS +PG_CONFIG = pg_config +PGXS := $(shell $(PG_CONFIG) --pgxs) +include $(PGXS) +else +subdir = src/test/modules/commit_ts +top_builddir = ../../../.. +include $(top_builddir)/src/Makefile.global +include $(top_srcdir)/contrib/contrib-global.mk +endif diff --git a/src/test/modules/commit_ts/commit_ts.conf b/src/test/modules/commit_ts/commit_ts.conf new file mode 100644 index 00000000000..d221a600504 --- /dev/null +++ b/src/test/modules/commit_ts/commit_ts.conf @@ -0,0 +1 @@ +track_commit_timestamp = on
\ No newline at end of file diff --git a/src/test/modules/commit_ts/expected/commit_timestamp.out b/src/test/modules/commit_ts/expected/commit_timestamp.out new file mode 100644 index 00000000000..e40e28cdfb8 --- /dev/null +++ b/src/test/modules/commit_ts/expected/commit_timestamp.out @@ -0,0 +1,39 @@ +-- +-- Commit Timestamp +-- +SHOW track_commit_timestamp; + track_commit_timestamp +------------------------ + on +(1 row) + +CREATE TABLE committs_test(id serial, ts timestamptz default now()); +INSERT INTO committs_test DEFAULT VALUES; +INSERT INTO committs_test DEFAULT VALUES; +INSERT INTO committs_test DEFAULT VALUES; +SELECT id, + pg_xact_commit_timestamp(xmin) >= ts, + pg_xact_commit_timestamp(xmin) < now(), + pg_xact_commit_timestamp(xmin) - ts < '60s' -- 60s should give a lot of reserve +FROM committs_test +ORDER BY id; + id | ?column? | ?column? | ?column? +----+----------+----------+---------- + 1 | t | t | t + 2 | t | t | t + 3 | t | t | t +(3 rows) + +DROP TABLE committs_test; +SELECT pg_xact_commit_timestamp('0'::xid); +ERROR: cannot retrieve commit timestamp for transaction 0 +SELECT pg_xact_commit_timestamp('1'::xid); +ERROR: cannot retrieve commit timestamp for transaction 1 +SELECT pg_xact_commit_timestamp('2'::xid); +ERROR: cannot retrieve commit timestamp for transaction 2 +SELECT x.xid::text::bigint > 0, x.timestamp > '-infinity'::timestamptz, x.timestamp < now() FROM pg_last_committed_xact() x; + ?column? | ?column? | ?column? +----------+----------+---------- + t | t | t +(1 row) + diff --git a/src/test/modules/commit_ts/expected/commit_timestamp_1.out b/src/test/modules/commit_ts/expected/commit_timestamp_1.out new file mode 100644 index 00000000000..51f89c20bd0 --- /dev/null +++ b/src/test/modules/commit_ts/expected/commit_timestamp_1.out @@ -0,0 +1,34 @@ +-- +-- Commit Timestamp +-- +SHOW track_commit_timestamp; + track_commit_timestamp +------------------------ + off +(1 row) + +CREATE TABLE committs_test(id serial, ts timestamptz default now()); +INSERT INTO committs_test DEFAULT VALUES; +INSERT INTO committs_test DEFAULT VALUES; +INSERT INTO committs_test DEFAULT VALUES; +SELECT id, + pg_xact_commit_timestamp(xmin) >= ts, + pg_xact_commit_timestamp(xmin) < now(), + pg_xact_commit_timestamp(xmin) - ts < '60s' -- 60s should give a lot of reserve +FROM committs_test +ORDER BY id; +ERROR: could not get commit timestamp data +HINT: Make sure the configuration parameter "track_commit_timestamp" is set. +DROP TABLE committs_test; +SELECT pg_xact_commit_timestamp('0'::xid); +ERROR: could not get commit timestamp data +HINT: Make sure the configuration parameter "track_commit_timestamp" is set. +SELECT pg_xact_commit_timestamp('1'::xid); +ERROR: could not get commit timestamp data +HINT: Make sure the configuration parameter "track_commit_timestamp" is set. +SELECT pg_xact_commit_timestamp('2'::xid); +ERROR: could not get commit timestamp data +HINT: Make sure the configuration parameter "track_commit_timestamp" is set. +SELECT x.xid::text::bigint > 0, x.timestamp > '-infinity'::timestamptz, x.timestamp < now() FROM pg_last_committed_xact() x; +ERROR: could not get commit timestamp data +HINT: Make sure the configuration parameter "track_commit_timestamp" is set. diff --git a/src/test/modules/commit_ts/sql/commit_timestamp.sql b/src/test/modules/commit_ts/sql/commit_timestamp.sql new file mode 100644 index 00000000000..9beb78a91d2 --- /dev/null +++ b/src/test/modules/commit_ts/sql/commit_timestamp.sql @@ -0,0 +1,24 @@ +-- +-- Commit Timestamp +-- +SHOW track_commit_timestamp; +CREATE TABLE committs_test(id serial, ts timestamptz default now()); + +INSERT INTO committs_test DEFAULT VALUES; +INSERT INTO committs_test DEFAULT VALUES; +INSERT INTO committs_test DEFAULT VALUES; + +SELECT id, + pg_xact_commit_timestamp(xmin) >= ts, + pg_xact_commit_timestamp(xmin) < now(), + pg_xact_commit_timestamp(xmin) - ts < '60s' -- 60s should give a lot of reserve +FROM committs_test +ORDER BY id; + +DROP TABLE committs_test; + +SELECT pg_xact_commit_timestamp('0'::xid); +SELECT pg_xact_commit_timestamp('1'::xid); +SELECT pg_xact_commit_timestamp('2'::xid); + +SELECT x.xid::text::bigint > 0, x.timestamp > '-infinity'::timestamptz, x.timestamp < now() FROM pg_last_committed_xact() x; |