From 2f55cb433c84b820636ed4409b7d89df8059b4ac Mon Sep 17 00:00:00 2001 From: Nikolay Antonov Date: Sat, 18 Apr 2026 22:57:24 +0500 Subject: [PATCH 1/6] Reduce `pxf/cbdb-testcontainer-ubuntu` image size 4.52G -> 3.34G --- .../src/main/resources/testcontainers/pxf-cbdb/Dockerfile | 6 +++--- .../testcontainers/pxf-cbdb/script/build_cloudberry.sh | 3 +++ .../resources/testcontainers/pxf-cbdb/script/build_pxf.sh | 8 -------- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/automation/src/main/resources/testcontainers/pxf-cbdb/Dockerfile b/automation/src/main/resources/testcontainers/pxf-cbdb/Dockerfile index d0633320..19ef014a 100644 --- a/automation/src/main/resources/testcontainers/pxf-cbdb/Dockerfile +++ b/automation/src/main/resources/testcontainers/pxf-cbdb/Dockerfile @@ -42,9 +42,9 @@ RUN curl -fsSL "https://services.gradle.org/distributions/gradle-${GRADLE_VERSIO -o /tmp/gradle.zip && \ sudo unzip -q /tmp/gradle.zip -d /opt && \ sudo ln -s "/opt/gradle-${GRADLE_VERSION}/bin/gradle" /usr/local/bin/gradle && \ - rm /tmp/gradle.zip -RUN cd /tmp && gradle init && gradle wrapper --gradle-version ${GRADLE_VERSION} && ./gradlew javaToolchains -RUN rm -rf /tmp/gradle /tmp/gradlew /tmp/gradlew.bat /tmp/.gradle + rm /tmp/gradle.zip && \ + cd /tmp && gradle init && gradle wrapper --gradle-version ${GRADLE_VERSION} && ./gradlew javaToolchains &&\ + rm -rf /tmp/gradle /tmp/gradlew /tmp/gradlew.bat /tmp/.gradle ENV GRADLE_HOME="/opt/gradle-${GRADLE_VERSION}" # Go toolchain for building pxf_regress inside the container diff --git a/automation/src/main/resources/testcontainers/pxf-cbdb/script/build_cloudberry.sh b/automation/src/main/resources/testcontainers/pxf-cbdb/script/build_cloudberry.sh index 7ad3204a..ef65c287 100755 --- a/automation/src/main/resources/testcontainers/pxf-cbdb/script/build_cloudberry.sh +++ b/automation/src/main/resources/testcontainers/pxf-cbdb/script/build_cloudberry.sh @@ -209,3 +209,6 @@ make install -C ~/workspace/cloudberry/contrib /usr/local/cloudberry-db/bin/postgres --gp-version /usr/local/cloudberry-db/bin/postgres --version ldd /usr/local/cloudberry-db/bin/postgres + +# cleanup build tree (reduce image size) +make clean \ No newline at end of file diff --git a/automation/src/main/resources/testcontainers/pxf-cbdb/script/build_pxf.sh b/automation/src/main/resources/testcontainers/pxf-cbdb/script/build_pxf.sh index bc7bbc22..350cc91f 100755 --- a/automation/src/main/resources/testcontainers/pxf-cbdb/script/build_pxf.sh +++ b/automation/src/main/resources/testcontainers/pxf-cbdb/script/build_pxf.sh @@ -33,14 +33,6 @@ export GPHOME=/usr/local/cloudberry-db source /usr/local/cloudberry-db/cloudberry-env.sh export PATH=$GPHOME/bin:$PATH -# Install Java 11 JDK and Maven -if command -v apt-get >/dev/null 2>&1; then - sudo apt update - sudo apt install -y openjdk-11-jdk-headless maven -elif command -v dnf >/dev/null 2>&1; then - sudo dnf install -y java-11-openjdk-devel maven -fi - cd /home/gpadmin/workspace/cloudberry-pxf # Ensure gpadmin owns the source directory From 978b2a68774cddcc5006aad1e8704c82b7c60d51 Mon Sep 17 00:00:00 2001 From: Nikolay Antonov Date: Sat, 18 Apr 2026 22:57:50 +0500 Subject: [PATCH 2/6] Fix cleanup step in `install-jdbc-drivers` --- server/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/Makefile b/server/Makefile index e6d05e61..7450ab4b 100644 --- a/server/Makefile +++ b/server/Makefile @@ -109,7 +109,7 @@ install-jdbc-drivers: stage-jdbc-drivers echo "ERROR: PXF_HOME is not set"; exit 2; \ fi mkdir -p "$(PXF_HOME)"/lib - rm -f "$(PXF_HOME)"/lib/clickhouse-jdbc-*.jar + rm -f "$(PXF_HOME)"/lib/*.jar cp -R build/stage/lib/. "$(PXF_HOME)"/lib/ clean: prepare-gradle-wrapper From 1c7b24ef8b0e222c7c601cc888de68914c8014d7 Mon Sep 17 00:00:00 2001 From: Nikolay Antonov Date: Sat, 18 Apr 2026 23:00:34 +0500 Subject: [PATCH 3/6] Always specify user/password for PostgreSQL JDBC tests. * use user/password for JDBC properties * use USER/PASS in external table LOCATION clause. --- .../applications/CloudberryApplication.java | 8 ++++++ .../PXFCloudberryContainer.java | 5 ++++ .../automation/features/jdbc/JdbcTest.java | 25 +++++++++++++++++++ 3 files changed, 38 insertions(+) diff --git a/automation/src/main/java/org/apache/cloudberry/pxf/automation/applications/CloudberryApplication.java b/automation/src/main/java/org/apache/cloudberry/pxf/automation/applications/CloudberryApplication.java index 5150a6fd..0929572c 100644 --- a/automation/src/main/java/org/apache/cloudberry/pxf/automation/applications/CloudberryApplication.java +++ b/automation/src/main/java/org/apache/cloudberry/pxf/automation/applications/CloudberryApplication.java @@ -49,6 +49,7 @@ public class CloudberryApplication implements AutoCloseable { private final PXFCloudberryContainer container; private final String jdbcUrl; private final String userName; + private final String password; private Connection connection; private Statement statement; @@ -56,12 +57,14 @@ public CloudberryApplication(PXFCloudberryContainer container) { this.container = container; this.jdbcUrl = getCloudberryMappedJdbcUrl(); this.userName = container.getCloudberryUser(); + this.password = container.getCloudberryPassword(); } public CloudberryApplication(PXFCloudberryContainer container, String dbName) { this.container = container; this.jdbcUrl = getCloudberryMappedJdbcUrl(dbName); this.userName = container.getCloudberryUser(); + this.password = container.getCloudberryPassword(); } public void connect() throws Exception { @@ -71,6 +74,7 @@ public void connect() throws Exception { Properties props = new Properties(); if (userName != null) { props.setProperty("user", userName); + props.setProperty("password", password); } Exception lastException = null; @@ -276,6 +280,10 @@ public String getUserName() { return userName; } + public String getPassword() { + return password; + } + public PXFCloudberryContainer getContainer() { return container; } diff --git a/automation/src/main/java/org/apache/cloudberry/pxf/automation/testcontainers/PXFCloudberryContainer.java b/automation/src/main/java/org/apache/cloudberry/pxf/automation/testcontainers/PXFCloudberryContainer.java index b5bbb4cc..5382c794 100644 --- a/automation/src/main/java/org/apache/cloudberry/pxf/automation/testcontainers/PXFCloudberryContainer.java +++ b/automation/src/main/java/org/apache/cloudberry/pxf/automation/testcontainers/PXFCloudberryContainer.java @@ -64,6 +64,7 @@ public class PXFCloudberryContainer extends GenericContainer Date: Sun, 19 Apr 2026 12:51:01 +0500 Subject: [PATCH 5/6] Fix user parameters parsing: treat all params as Key=Value pairs. Where values can have '=' character inside. --- .../pxf/automation/structures/tables/pxf/ForeignTable.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/automation/src/main/java/org/apache/cloudberry/pxf/automation/structures/tables/pxf/ForeignTable.java b/automation/src/main/java/org/apache/cloudberry/pxf/automation/structures/tables/pxf/ForeignTable.java index c01874f1..5448fe46 100644 --- a/automation/src/main/java/org/apache/cloudberry/pxf/automation/structures/tables/pxf/ForeignTable.java +++ b/automation/src/main/java/org/apache/cloudberry/pxf/automation/structures/tables/pxf/ForeignTable.java @@ -113,7 +113,7 @@ protected String createOptions() { if (params != null) { for (String param : params) { // parse parameter, each one is KEY=VALUE - String[] paramPair = param.split("="); + String[] paramPair = param.split("=", 2); appendOption(joiner, paramPair[0], paramPair[1]); } } From 8660bcbaf355913f75f6d315dce09bfb6f505231 Mon Sep 17 00:00:00 2001 From: Nikolay Antonov Date: Mon, 20 Apr 2026 11:59:32 +0500 Subject: [PATCH 6/6] review --- server/Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/server/Makefile b/server/Makefile index 7450ab4b..bfd0ee34 100644 --- a/server/Makefile +++ b/server/Makefile @@ -109,7 +109,6 @@ install-jdbc-drivers: stage-jdbc-drivers echo "ERROR: PXF_HOME is not set"; exit 2; \ fi mkdir -p "$(PXF_HOME)"/lib - rm -f "$(PXF_HOME)"/lib/*.jar cp -R build/stage/lib/. "$(PXF_HOME)"/lib/ clean: prepare-gradle-wrapper