Add PGXS "make installcheck" support

This enables running PG's standard testsuite with a PG server configured
for decoderbufs.

Example on Debian:

```
$ sudo apt install postgresql-14-decoderbufs
$ pg_virtualenv -o shared_preload_libraries=decoderbufs -o wal_level=logical
Creating new PostgreSQL cluster 14/regress ...
$ make installcheck
/usr/lib/postgresql/14/lib/pgxs/src/makefiles/../../src/test/regress/pg_regress --inputdir=./ --bindir='/usr/lib/postgresql/14/bin'    --dbname=contrib_regression decoderbufs
(using postmaster on localhost, port 5433)
============== dropping database "contrib_regression" ==============
HINWEIS:  Datenbank »contrib_regression« existiert nicht, wird übersprungen
DROP DATABASE
============== creating database "contrib_regression" ==============
CREATE DATABASE
ALTER DATABASE
============== running regression test queries        ==============
test decoderbufs                  ... ok           30 ms

=====================
 All 1 tests passed.
=====================

$ exit
Dropping cluster 14/regress ...
```
pull/28/head
Christoph Berg 2022-01-10 15:14:54 +01:00
parent c9b00aa8c0
commit 3b0f40ac76
3 changed files with 35 additions and 0 deletions

View File

@ -1,5 +1,6 @@
MODULE_big = decoderbufs
EXTENSION = decoderbufs
REGRESS = decoderbufs
PROTOBUF_C_CFLAGS = $(shell pkg-config --cflags 'libprotobuf-c >= 1.0.0')
PROTOBUF_C_LDFLAGS = $(shell pkg-config --libs 'libprotobuf-c >= 1.0.0')

27
expected/decoderbufs.out Normal file
View File

@ -0,0 +1,27 @@
select slot_name from pg_create_logical_replication_slot('decoderbufs_demo', 'decoderbufs');
INFO: Exiting startup callback
slot_name
------------------
decoderbufs_demo
(1 row)
create table foo (id int primary key, data text);
insert into foo values (1, 'Important stuff');
select regexp_replace(data, '(txid|commit_time)\[\d+\]', '\1[***]', 'g') as data
from pg_logical_slot_peek_changes('decoderbufs_demo', NULL, NULL, 'debug-mode', '1');
NOTICE: Decoderbufs DEBUG MODE is ON.
INFO: Exiting startup callback
data
------------------------------------------------------------
txid[***], commit_time[***], op[3]
txid[***], commit_time[***], op[4]
txid[***], commit_time[***], op[3]
txid[***], commit_time[***], table[public.foo], op[0] +
NEW TUPLE: +
column_name[id], column_type[23], datum[1] +
column_name[data], column_type[25], datum[Important stuff]+
+
txid[***], commit_time[***], op[4]
(5 rows)

7
sql/decoderbufs.sql Normal file
View File

@ -0,0 +1,7 @@
select slot_name from pg_create_logical_replication_slot('decoderbufs_demo', 'decoderbufs');
create table foo (id int primary key, data text);
insert into foo values (1, 'Important stuff');
select regexp_replace(data, '(txid|commit_time)\[\d+\]', '\1[***]', 'g') as data
from pg_logical_slot_peek_changes('decoderbufs_demo', NULL, NULL, 'debug-mode', '1');