pgjdbc/pgjdbc GitHub issues and pull requests (mirror)
help / color / mirror / Atom feedFrom: vlsi (@vlsi) <[email protected]>
To: pgjdbc/pgjdbc <[email protected]>
Subject: [pgjdbc/pgjdbc] PR #4128: Update GitHub Actions and restore CI on release/42.5.x
Date: Tue, 02 Jun 2026 06:21:42 +0000
Message-ID: <[email protected]> (raw)
## Why
CI on `release/42.5.x` was fully red, and the actions maintenance alone did not fix it. jcenter's shutdown broke the Gradle plugin classpath; the source-distribution job pulled PostgreSQL 18 (via the Docker `latest` tag) and hit the removed `RULE` privilege; and ubuntu-24.04 runners dropped `postgresql-12`, which the GSS jobs install.
## What
GitHub Actions maintenance, adapted from `release/42.6.x`:
- update `actions/checkout` to v4
- update Gradle wrapper validation to `gradle/actions/wrapper-validation@v4`
- switch workflow Docker Compose invocations to v2 (`docker compose`)
- remove PostgreSQL 8.4 and 9.0 from the workflow matrices
- remove the self-hosted runner from the CI matrix
Fixes that bring CI back to green on `release/42.5.x`:
- **build**: bump `vlsi-release-plugins` 1.82 → 1.83. 1.82 pulls `org.ajoberstar.grgit:grgit-core:4.0.1`, which vanished with jcenter, so Gradle could not resolve the plugin classpath and every job failed before any task ran. 1.83 uses grgit 4.1.1 from Maven Central.
- **fix(jdbc)**: request the `RULE` privilege only below PostgreSQL 18. PG 18 removed it, so `has_table_privilege` rejected the `getTables` query when `hideUnprivilegedObjects` is enabled. Backported from master (74d8c239d, d98b56bec).
- **ci**: install the default `postgresql` package and point the GSS harness at `/usr/lib/postgresql/16/bin`. ubuntu-24.04 runners no longer ship `postgresql-12`.
## How to verify
- CI is green (13/13).
- Locally on JDK 11, as in CI: `autostyleCheck checkstyleAll jandex`, `--no-parallel --no-daemon -PenableCheckerframework classes`, and `sourceDistribution -Prelease` all pass.
- `DatabaseMetaDataHideUnprivilegedObjectsTest` passes against PostgreSQL 18.4 started via Docker, confirming the `RULE` fix.
## Notes
History follows Conventional Commits: the original actions change is split into five focused `ci:` commits, plus `build:`, `fix(jdbc):`, and a final `ci:` commit.
diff --git a/.github/workflows/buildcache.yml b/.github/workflows/buildcache.yml
index 7d4fee8db9..683d9806e6 100644
--- a/.github/workflows/buildcache.yml
+++ b/.github/workflows/buildcache.yml
@@ -48,7 +48,7 @@ jobs:
name: '${{ matrix.os }}, ${{ matrix.jdk }} seed build cache'
runs-on: ${{ matrix.os }}-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
fetch-depth: 50
- name: 'Set up JDK ${{ matrix.jdk }}'
diff --git a/.github/workflows/debezium.yml b/.github/workflows/debezium.yml
index 6e8cced75b..86b9dbfaa5 100644
--- a/.github/workflows/debezium.yml
+++ b/.github/workflows/debezium.yml
@@ -16,7 +16,7 @@ jobs:
ACTIONS_STEP_DEBUG: true
ACTIONS_RUNNER_DEBUG: true
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
fetch-depth: 50
- name: 'Set up JDK 11'
diff --git a/.github/workflows/fedora-copr-build.yml b/.github/workflows/fedora-copr-build.yml
index 916c884d6b..5b4fb55366 100644
--- a/.github/workflows/fedora-copr-build.yml
+++ b/.github/workflows/fedora-copr-build.yml
@@ -16,7 +16,7 @@ jobs:
steps:
- name: Check out proper version of sources
- uses: actions/checkout@v1
+ uses: actions/checkout@v4
- name: Submit the build
env:
diff --git a/.github/workflows/gradle-wrapper-validation.yml b/.github/workflows/gradle-wrapper-validation.yml
index c80a7e5278..757c8d8781 100644
--- a/.github/workflows/gradle-wrapper-validation.yml
+++ b/.github/workflows/gradle-wrapper-validation.yml
@@ -9,5 +9,5 @@ jobs:
name: "Validation"
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
- - uses: gradle/wrapper-validation-action@v1
+ - uses: actions/checkout@v4
+ - uses: gradle/actions/wrapper-validation@v4
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 8d1579aa53..a93f71cc6b 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -41,7 +41,7 @@ jobs:
ACTIONS_STEP_DEBUG: true
ACTIONS_RUNNER_DEBUG: true
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
fetch-depth: 50
- name: 'Set up JDK 8'
@@ -62,7 +62,7 @@ jobs:
name: 'CheckerFramework'
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
fetch-depth: 50
- name: 'Set up JDK 11'
@@ -84,12 +84,12 @@ jobs:
name: 'Source distribution (JDK 11)'
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
fetch-depth: 50
- name: Start PostgreSQL
working-directory: docker/postgres-server
- run: docker-compose up -d && docker-compose logs
+ run: docker compose up -d && docker compose logs
- name: 'Set up JDK 11'
uses: actions/setup-java@v3
with:
@@ -118,7 +118,7 @@ jobs:
env:
MATRIX_JOBS: 7
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
fetch-depth: 50
- id: set-matrix
@@ -137,7 +137,7 @@ jobs:
ACTIONS_RUNNER_DEBUG: true
TZ: ${{ matrix.tz }}
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
fetch-depth: 50
- name: Start PostgreSQL PGV=${{ matrix.pg_version }} TZ=${{ matrix.server_tz }} XA=${{ matrix.xa }} SSL=${{ matrix.ssl }} SCRAM=${{ matrix.scram }} CREATE_REPLICAS=${{ matrix.replication }}
@@ -151,12 +151,12 @@ jobs:
CREATE_REPLICAS: ${{ matrix.replication }}
# The below run command is long, however, it is intentional, and it makes the output nicer in GitHub UI
run: |
- echo 'Starting PostgreSQL via docker-compose down; PGV=${{ matrix.pg_version }} TZ=${{ matrix.server_tz }} XA=${{ matrix.xa }} SSL=${{ matrix.ssl }} SCRAM=${{ matrix.scram }} CREATE_REPLICAS=${{ matrix.replication }} docker-compose up'
+ echo 'Starting PostgreSQL via docker compose down; PGV=${{ matrix.pg_version }} TZ=${{ matrix.server_tz }} XA=${{ matrix.xa }} SSL=${{ matrix.ssl }} SCRAM=${{ matrix.scram }} CREATE_REPLICAS=${{ matrix.replication }} docker compose up'
- docker-compose down -v --rmi local || true
+ docker compose down -v --rmi local || true
sed -i -r '/- (543[3-4]):\1/d' docker-compose.yml
- docker-compose up -d
- docker-compose logs
+ docker compose up -d
+ docker compose logs
- name: 'Get test node ARCH'
run: echo "arch_name=$(uname -i)" >> $GITHUB_OUTPUT
id: get_arch_name
@@ -201,7 +201,7 @@ jobs:
if: ${{ matrix.gss == 'yes' }}
run: |
sudo apt -y update
- sudo apt -y install krb5-kdc krb5-admin-server libkrb5-dev postgresql-12
+ sudo apt -y install krb5-kdc krb5-admin-server libkrb5-dev postgresql
- name: 'Update hosts for GSS tests'
if: ${{ matrix.gss == 'yes' }}
run: |
@@ -238,5 +238,5 @@ jobs:
if: ${{ always() }}
working-directory: docker/postgres-server
run: |
- docker-compose ps
- docker-compose down -v --rmi local
+ docker compose ps
+ docker compose down -v --rmi local
diff --git a/.github/workflows/matrix.js b/.github/workflows/matrix.js
index 5974e5b52c..bfb9b91598 100644
--- a/.github/workflows/matrix.js
+++ b/.github/workflows/matrix.js
@@ -46,8 +46,6 @@ matrix.addAxis({
title: x => 'PG ' + x,
// Strings allow versions like 18-ea
values: [
- '8.4',
- '9.0',
'9.1',
'9.2',
'9.3',
@@ -90,7 +88,6 @@ matrix.addAxis({
// We use docker-compose for launching PostgreSQL
// 'windows-latest',
// 'macos-latest',
- ...(process.env.GITHUB_REPOSITORY === 'pgjdbc/pgjdbc' ? ['self-hosted'] : [])
]
});
@@ -203,14 +200,9 @@ matrix.exclude(row => row.scram.value === 'yes' && isLessThan(row.pg_version, '1
matrix.exclude(row => row.replication.value === 'yes' && isLessThan(row.pg_version, '9.6'));
//org.postgresql.test.jdbc2.ArrayTest fails using simple mode for versions less than 9.0 with malformed Array literal
matrix.exclude( row => row.query_mode.value == 'simple' && isLessThan(row.pg_version, '9.1'));
-//matrix.exclude({query_mode: {value: 'simple'}, pg_version: '8.4'});
// Microsoft Java has no distribution for 8
matrix.exclude({java_distribution: 'microsoft', java_version: '8'});
-matrix.exclude({gss: {value: 'yes'}, os: ['windows-latest', 'macos-latest', 'self-hosted']})
-if (process.env.GITHUB_REPOSITORY === 'pgjdbc/pgjdbc') {
- // PG images below 9.3 are x86_64 only
- matrix.exclude(row => row.os === 'self-hosted' && isLessThan(row.pg_version, '9.3'));
-}
+matrix.exclude({gss: {value: 'yes'}, os: ['windows-latest', 'macos-latest']})
// The most rare features should be generated the first
// For instance, we have a lot of PostgreSQL versions, so we generate the minimal the first
@@ -231,9 +223,6 @@ matrix.generateRow({ssl: {value: 'yes'}});
// Ensure at least one Windows and at least one Linux job is present (macOS is almost the same as Linux)
// matrix.generateRow({os: 'windows-latest'});
matrix.generateRow({os: 'ubuntu-latest'});
-if (process.env.GITHUB_REPOSITORY === 'pgjdbc/pgjdbc') {
- matrix.generateRow({os: 'self-hosted'});
-}
const include = matrix.generateRows(process.env.MATRIX_JOBS || 5);
if (include.length === 0) {
throw new Error('Matrix list is empty');
diff --git a/.github/workflows/nightlysnapshot.yml b/.github/workflows/nightlysnapshot.yml
index 89bf8f2a46..7b58912939 100644
--- a/.github/workflows/nightlysnapshot.yml
+++ b/.github/workflows/nightlysnapshot.yml
@@ -37,7 +37,7 @@ jobs:
ACTIONS_STEP_DEBUG: true
ACTIONS_RUNNER_DEBUG: true
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
fetch-depth: 50
- name: 'Set up JDK 8'
diff --git a/.github/workflows/omni.yml b/.github/workflows/omni.yml
index 31e78be203..a817ae56d9 100644
--- a/.github/workflows/omni.yml
+++ b/.github/workflows/omni.yml
@@ -13,7 +13,7 @@ on:
required: false
default: "*"
matrix_pg_version:
- description: PostgreSQL Server Version (8.4, 9.0, 9.1, ...)
+ description: PostgreSQL Server Version (9.1, 9.2, ...)
required: false
default: "*"
matrix_query_mode:
@@ -80,8 +80,6 @@ jobs:
];
const PG_VERSIONS = [
- '8.4',
- '9.0',
'9.1',
'9.2',
'9.3',
@@ -293,13 +291,13 @@ jobs:
env:
MATRIX_JSON: ${{ toJSON(matrix) }}
run: echo "${MATRIX_JSON}"
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
fetch-depth: 50
- name: Start PostgreSQL
working-directory: docker/postgres-server
- run: docker-compose up -d && docker-compose logs
+ run: docker compose up -d && docker compose logs
env:
PGV: ${{ matrix.pg_version }}
@@ -340,7 +338,7 @@ jobs:
# Server is not online so dump some logs for debugging
docker ps
cd docker/postgres-server
- docker-compose logs
+ docker compose logs
fi
psql -c 'SELECT version()'
@@ -373,12 +371,12 @@ jobs:
runs-on: ubuntu-latest
continue-on-error: true
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
fetch-depth: 50
- name: Compile and start PostgreSQL
working-directory: docker/postgres-head
- run: docker-compose up -d && docker-compose logs
+ run: docker compose up -d && docker compose logs
- name: Set up JDK
uses: actions/setup-java@v3
with:
@@ -398,7 +396,7 @@ jobs:
# Server is not online so dump some logs for debugging
docker ps
cd docker/postgres-head
- docker-compose logs
+ docker compose logs
fi
psql -c 'SELECT version()'
- name: Prepare local properties
diff --git a/gradle.properties b/gradle.properties
index e29a893ee0..b6a8df0274 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -34,7 +34,7 @@ com.github.burrunan.s3-build-cache.version=1.1
com.github.johnrengelman.shadow.version=5.1.0
com.github.lburgazzoli.karaf.version=0.5.4
com.github.spotbugs.version=2.0.0
-com.github.vlsi.vlsi-release-plugins.version=1.82
+com.github.vlsi.vlsi-release-plugins.version=1.83
de.thetaphi.forbiddenapis.version=3.3
kotlin.version=1.3.70
me.champeau.jmh.version=0.6.6
diff --git a/pgjdbc/src/main/java/org/postgresql/core/ServerVersion.java b/pgjdbc/src/main/java/org/postgresql/core/ServerVersion.java
index b06e8c7dd2..10e710ccd8 100644
--- a/pgjdbc/src/main/java/org/postgresql/core/ServerVersion.java
+++ b/pgjdbc/src/main/java/org/postgresql/core/ServerVersion.java
@@ -32,7 +32,9 @@ public enum ServerVersion implements Version {
v13("13"),
v14("14"),
v15("15"),
- v16("16")
+ v16("16"),
+ v17("17"),
+ v18("18")
;
private final int version;
@@ -51,6 +53,11 @@ public int getVersionNum() {
return version;
}
+ @Override
+ public int getMajorVersionNumber() {
+ return version / 10000;
+ }
+
/**
* <p>Attempt to parse the server version string into an XXYYZZ form version number into a
* {@link Version}.</p>
@@ -68,6 +75,11 @@ public int getVersionNum() {
return versionNum;
}
+ @Override
+ public int getMajorVersionNumber() {
+ return versionNum / 10000;
+ }
+
@Override
public boolean equals(@Nullable Object obj) {
if (obj instanceof Version) {
diff --git a/pgjdbc/src/main/java/org/postgresql/core/Version.java b/pgjdbc/src/main/java/org/postgresql/core/Version.java
index 639226a172..d192531633 100644
--- a/pgjdbc/src/main/java/org/postgresql/core/Version.java
+++ b/pgjdbc/src/main/java/org/postgresql/core/Version.java
@@ -14,4 +14,5 @@ public interface Version {
*/
int getVersionNum();
+ int getMajorVersionNumber();
}
diff --git a/pgjdbc/src/main/java/org/postgresql/jdbc/PgDatabaseMetaData.java b/pgjdbc/src/main/java/org/postgresql/jdbc/PgDatabaseMetaData.java
index 3588f464c9..485032bac0 100644
--- a/pgjdbc/src/main/java/org/postgresql/jdbc/PgDatabaseMetaData.java
+++ b/pgjdbc/src/main/java/org/postgresql/jdbc/PgDatabaseMetaData.java
@@ -1318,8 +1318,13 @@ public ResultSet getTables(@Nullable String catalog, @Nullable String schemaPatt
select += " AND n.nspname LIKE " + escapeQuotes(schemaPattern);
}
if (connection.getHideUnprivilegedObjects()) {
+ // as of https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=fefa76f70fdc75c91f80bddce2df7a8825205...
+ // The RULE privilege has been removed
+ String privileges = connection.getServerMajorVersion() < ServerVersion.v18.getMajorVersionNumber()
+ ? " 'SELECT, INSERT, UPDATE, DELETE, RULE, REFERENCES, TRIGGER')"
+ : " 'SELECT, INSERT, UPDATE, DELETE, REFERENCES, TRIGGER')";
select += " AND has_table_privilege(c.oid, "
- + " 'SELECT, INSERT, UPDATE, DELETE, RULE, REFERENCES, TRIGGER')";
+ + privileges;
}
orderby = " ORDER BY TABLE_TYPE,TABLE_SCHEM,TABLE_NAME ";
diff --git a/test-gss/src/main/groovy/TestPostgres.groovy b/test-gss/src/main/groovy/TestPostgres.groovy
index e3d01740c3..c721d469e8 100644
--- a/test-gss/src/main/groovy/TestPostgres.groovy
+++ b/test-gss/src/main/groovy/TestPostgres.groovy
@@ -47,7 +47,7 @@ class TestPostgres {
if (isMac)
postgres = new Postgres()
else
- postgres = new Postgres('/usr/lib/postgresql/12/bin/', '/tmp/pggss')
+ postgres = new Postgres('/usr/lib/postgresql/16/bin/', '/tmp/pggss')
/*
make sure we can connect
*/
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: github://pgjdbc/pgjdbc
Cc: [email protected], [email protected]
Subject: Re: [pgjdbc/pgjdbc] PR #4128: Update GitHub Actions and restore CI on release/42.5.x
In-Reply-To: <<[email protected]>>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox