Skip to content

Commit 08fdaf0

Browse files
committed
Make CI work with multiple Pg versions, really necessary to
test the various differences in backends for an extension like this.
1 parent 6bb9f52 commit 08fdaf0

File tree

5 files changed

+46
-22
lines changed

5 files changed

+46
-22
lines changed

.github/workflows/ci.yml

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,51 @@ jobs:
1111
runs-on: ubuntu-20.04
1212

1313
env:
14-
PG_VERSION: 14
14+
PGVER: 10
1515
OS_NAME: focal-pgdg
16+
OS_PGVER: 14
17+
18+
19+
name: "CI"
20+
strategy:
21+
matrix:
22+
ci:
23+
- { PGVER: 9.5 }
24+
- { PGVER: 9.6 }
25+
- { PGVER: 10 }
26+
- { PGVER: 11 }
27+
- { PGVER: 12 }
28+
- { PGVER: 13 }
29+
- { PGVER: 14 }
1630

1731
steps:
1832

1933
- name: 'Check Out'
2034
uses: actions/checkout@v2
2135

22-
- name: 'Install'
36+
- name: 'Uninstall PostgreSQL'
37+
run: |
38+
sudo apt-get -y -f --ignore-missing --purge remove postgresql postgresql-common postgresql-$OS_PGVER
39+
sudo apt-get -y autoremove
40+
sudo rm -rf /var/lib/postgresql
41+
42+
- name: 'Install PostgreSQL'
2343
run: |
44+
export PGVER=${{ matrix.ci.PGVER }}
45+
export PGDATA=/var/lib/postgresql/$PGVER/main
46+
export PGETC=/etc/postgresql/$PGVER/main
47+
export PGBIN=/usr/lib/postgresql/$PGVER/bin
2448
curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
25-
sudo add-apt-repository "deb http://apt.postgresql.org/pub/repos/apt/ $OS_NAME main $PG_VERSION"
26-
sudo apt-get -y install libcurl4-gnutls-dev postgresql-server-dev-$PG_VERSION
27-
sudo cp ./ci/pg_hba.conf /etc/postgresql/$PG_VERSION/main/pg_hba.conf
28-
sudo systemctl start postgresql.service
49+
sudo add-apt-repository "deb http://apt.postgresql.org/pub/repos/apt/ $OS_NAME main $PGVER"
50+
sudo apt-get -y install libcurl4-gnutls-dev postgresql-server-dev-$PGVER postgresql-client-$PGVER postgresql-$PGVER
51+
sudo su postgres -c "$PGBIN/pg_ctl --pgdata $PGDATA stop"
52+
# sudo $PGBIN/pg_ctlcluster $PGVER main stop
53+
sudo cp ./ci/pg_hba.conf $PGETC/pg_hba.conf
54+
sudo su postgres -c "$PGBIN/pg_ctl --pgdata $PGDATA start -o '-c config_file=$PGETC/postgresql.conf'"
2955
3056
- name: 'Build & Test'
3157
run: |
32-
export PATH=/usr/lib/postgresql/$PG_VERSION/bin/:$PATH
33-
make
58+
export PATH=/usr/lib/postgresql/$PGVER/bin/:$PATH
59+
make DEBUG=1 all
3460
sudo make install
3561
PGUSER=postgres make installcheck || (cat regression.diffs && /bin/false)

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ LIBS += $(shell $(CURL_CONFIG) --libs)
2121
SHLIB_LINK := $(LIBS)
2222

2323
ifdef DEBUG
24-
COPT += -O0
24+
COPT += -O0 -Werror
2525
endif
2626

2727
PGXS := $(shell $(PG_CONFIG) --pgxs)

expected/http.out

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -180,22 +180,20 @@ BEGIN
180180
SELECT status FROM http_get('https://httpbin.org/status/555');
181181
EXCEPTION
182182
WHEN OTHERS THEN
183-
RAISE EXCEPTION 'Failed to connect';
183+
RAISE WARNING 'Failed to connect';
184184
END;
185185
$$;
186-
ERROR: Failed to connect
187-
CONTEXT: PL/pgSQL function inline_code_block line 6 at RAISE
186+
WARNING: Failed to connect
188187
-- Still an error
189188
DO $$
190189
BEGIN
191190
SELECT status FROM http_get('https://httpbin.org/status/555');
192191
EXCEPTION
193192
WHEN OTHERS THEN
194-
RAISE EXCEPTION 'Failed to connect';
193+
RAISE WARNING 'Failed to connect';
195194
END;
196195
$$;
197-
ERROR: Failed to connect
198-
CONTEXT: PL/pgSQL function inline_code_block line 6 at RAISE
196+
WARNING: Failed to connect
199197
-- Reset options
200198
SELECT http_reset_curlopt();
201199
http_reset_curlopt

http.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@
8080
# define table_close(rel, lock) heap_close((rel), (lock))
8181
#endif
8282

83-
#ifndef PG_GETARG_JSONB_P
83+
#if PG_VERSION_NUM < 110000
8484
#define PG_GETARG_JSONB_P(x) DatumGetJsonb(PG_GETARG_DATUM(x))
8585
#endif
8686

@@ -597,16 +597,15 @@ static Oid
597597
get_extension_schema(Oid ext_oid)
598598
{
599599
Oid result;
600-
Relation rel;
601600
SysScanDesc scandesc;
602601
HeapTuple tuple;
603602
ScanKeyData entry[1];
604-
rel = table_open(ExtensionRelationId, AccessShareLock);
605603
#if PG_VERSION_NUM >= 120000
606604
Oid pg_extension_oid = Anum_pg_extension_oid;
607605
#else
608606
Oid pg_extension_oid = ObjectIdAttributeNumber;
609607
#endif
608+
Relation rel = table_open(ExtensionRelationId, AccessShareLock);
610609

611610
ScanKeyInit(&entry[0],
612611
pg_extension_oid,
@@ -642,18 +641,19 @@ typname_get_tupledesc(const char *extname, const char *typname)
642641
{
643642
Oid extoid = get_extension_oid(extname, true);
644643
Oid extschemaoid;
644+
Oid typoid;
645645

646646
if ( ! OidIsValid(extoid) )
647647
elog(ERROR, "could not lookup '%s' extension oid", extname);
648648

649649
extschemaoid = get_extension_schema(extoid);
650650

651651
#if PG_VERSION_NUM >= 120000
652-
Oid typoid = GetSysCacheOid2(TYPENAMENSP, Anum_pg_type_oid,
652+
typoid = GetSysCacheOid2(TYPENAMENSP, Anum_pg_type_oid,
653653
PointerGetDatum(typname),
654654
ObjectIdGetDatum(extschemaoid));
655655
#else
656-
Oid typoid = GetSysCacheOid2(TYPENAMENSP,
656+
typoid = GetSysCacheOid2(TYPENAMENSP,
657657
PointerGetDatum(typname),
658658
ObjectIdGetDatum(extschemaoid));
659659
#endif

sql/http.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ BEGIN
112112
SELECT status FROM http_get('https://httpbin.org/status/555');
113113
EXCEPTION
114114
WHEN OTHERS THEN
115-
RAISE EXCEPTION 'Failed to connect';
115+
RAISE WARNING 'Failed to connect';
116116
END;
117117
$$;
118118
-- Still an error
@@ -121,7 +121,7 @@ BEGIN
121121
SELECT status FROM http_get('https://httpbin.org/status/555');
122122
EXCEPTION
123123
WHEN OTHERS THEN
124-
RAISE EXCEPTION 'Failed to connect';
124+
RAISE WARNING 'Failed to connect';
125125
END;
126126
$$;
127127
-- Reset options

0 commit comments

Comments
 (0)