This is an automated email from the ASF dual-hosted git repository.
MartijnVisser pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/flink-connector-jdbc.git
The following commit(s) were added to refs/heads/main by this push:
new cfd909a8 [FLINK-40733][connector-jdbc] Re-enable the Trino tests
cfd909a8 is described below
commit cfd909a81516344f54c9d641f087cb500db7ad92
Author: Purushottam Sinha <[email protected]>
AuthorDate: Tue Oct 27 20:07:42 2026 +0530
[FLINK-40733][connector-jdbc] Re-enable the Trino tests
The Trino container did not start on Linux CI because its catalog file was
a 0600 temp file bind mounted into a container that reads it as uid 1000.
Copy the file into the container instead.
The primary key tests create their tables directly in the Postgres database
behind Trino, so they only needed the Postgres driver on the test classpath
and dropTable() instead of deleteTable() for cleanup.
Generated-by: Claude Code (Claude Opus 5.5)
---
flink-connector-jdbc-trino/pom.xml | 7 +++++++
.../trino/database/dialect/TrinoDialectTest.java | 3 ---
.../trino/table/TrinoDynamicTableSinkITCase.java | 21 +++++++--------------
.../trino/table/TrinoDynamicTableSourceITCase.java | 3 ---
.../jdbc/trino/testutils/TrinoDatabase.java | 16 ++++++----------
5 files changed, 20 insertions(+), 30 deletions(-)
diff --git a/flink-connector-jdbc-trino/pom.xml
b/flink-connector-jdbc-trino/pom.xml
index 67650ecb..33f8c135 100644
--- a/flink-connector-jdbc-trino/pom.xml
+++ b/flink-connector-jdbc-trino/pom.xml
@@ -117,6 +117,13 @@ under the License.
<artifactId>testcontainers-postgresql</artifactId>
<scope>test</scope>
</dependency>
+ <!-- The sink tests create tables with a primary key in the Postgres
database behind Trino -->
+ <dependency>
+ <groupId>org.postgresql</groupId>
+ <artifactId>postgresql</artifactId>
+ <version>${postgres.version}</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
diff --git
a/flink-connector-jdbc-trino/src/test/java/org/apache/flink/connector/jdbc/trino/database/dialect/TrinoDialectTest.java
b/flink-connector-jdbc-trino/src/test/java/org/apache/flink/connector/jdbc/trino/database/dialect/TrinoDialectTest.java
index 336c22c4..95bbca27 100644
---
a/flink-connector-jdbc-trino/src/test/java/org/apache/flink/connector/jdbc/trino/database/dialect/TrinoDialectTest.java
+++
b/flink-connector-jdbc-trino/src/test/java/org/apache/flink/connector/jdbc/trino/database/dialect/TrinoDialectTest.java
@@ -21,13 +21,10 @@ package
org.apache.flink.connector.jdbc.trino.database.dialect;
import org.apache.flink.connector.jdbc.core.database.dialect.JdbcDialectTest;
import org.apache.flink.connector.jdbc.trino.TrinoTestBase;
-import org.junit.jupiter.api.Disabled;
-
import java.util.Arrays;
import java.util.List;
/** The Oracle params for {@link JdbcDialectTest}. */
-@Disabled("Not working on jenkins as container not start.")
class TrinoDialectTest extends JdbcDialectTest implements TrinoTestBase {
@Override
diff --git
a/flink-connector-jdbc-trino/src/test/java/org/apache/flink/connector/jdbc/trino/table/TrinoDynamicTableSinkITCase.java
b/flink-connector-jdbc-trino/src/test/java/org/apache/flink/connector/jdbc/trino/table/TrinoDynamicTableSinkITCase.java
index bc552811..ff03332c 100644
---
a/flink-connector-jdbc-trino/src/test/java/org/apache/flink/connector/jdbc/trino/table/TrinoDynamicTableSinkITCase.java
+++
b/flink-connector-jdbc-trino/src/test/java/org/apache/flink/connector/jdbc/trino/table/TrinoDynamicTableSinkITCase.java
@@ -24,7 +24,6 @@ import org.apache.flink.connector.jdbc.testutils.TableManaged;
import org.apache.flink.connector.jdbc.trino.TrinoTestBase;
import org.apache.flink.connector.jdbc.trino.database.dialect.TrinoDialect;
-import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import java.sql.Connection;
@@ -32,19 +31,16 @@ import java.util.Arrays;
import java.util.List;
/** The Table Sink ITCase for {@link TrinoDialect}. */
-@Disabled("Not working on jenkins as container not start.")
class TrinoDynamicTableSinkITCase extends JdbcDynamicTableSinkITCase
implements TrinoTestBase {
+ // Trino cannot declare a primary key, so the tests using
upsertOutputTable or
+ // userOutputTable create them in the Postgres database behind Trino.
@Override
public List<TableManaged> getManagedTables() {
return Arrays.asList(
- // upsertOutputTable,
- appendOutputTable, batchOutputTable, realOutputTable,
checkpointOutputTable
- // userOutputTable
- );
+ appendOutputTable, batchOutputTable, realOutputTable,
checkpointOutputTable);
}
- @Disabled("Trino dont allow create tables with PK")
@Test
@Override
protected void testUpsert() throws Exception {
@@ -54,12 +50,11 @@ class TrinoDynamicTableSinkITCase extends
JdbcDynamicTableSinkITCase implements
upsertOutputTable.createTable(conn);
super.testUpsert();
} finally {
- upsertOutputTable.deleteTable(conn);
+ upsertOutputTable.dropTable(conn);
}
}
}
- @Disabled("Trino dont allow create tables with PK")
@Test
@Override
protected void testReadingFromChangelogSource() throws Exception {
@@ -68,12 +63,11 @@ class TrinoDynamicTableSinkITCase extends
JdbcDynamicTableSinkITCase implements
userOutputTable.createTable(conn);
super.testReadingFromChangelogSource();
} finally {
- userOutputTable.deleteTable(conn);
+ userOutputTable.dropTable(conn);
}
}
}
- @Disabled("Trino dont allow create tables with PK")
@Test
@Override
protected void testChangelogReducedWithinOneBuffer() throws Exception {
@@ -82,12 +76,11 @@ class TrinoDynamicTableSinkITCase extends
JdbcDynamicTableSinkITCase implements
userOutputTable.createTable(conn);
super.testChangelogReducedWithinOneBuffer();
} finally {
- userOutputTable.deleteTable(conn);
+ userOutputTable.dropTable(conn);
}
}
}
- @Disabled("Trino dont allow create tables with PK")
@Test
@Override
protected void testChangelogWithSinkParallelismAboveOne() throws Exception
{
@@ -96,7 +89,7 @@ class TrinoDynamicTableSinkITCase extends
JdbcDynamicTableSinkITCase implements
userOutputTable.createTable(conn);
super.testChangelogWithSinkParallelismAboveOne();
} finally {
- userOutputTable.deleteTable(conn);
+ userOutputTable.dropTable(conn);
}
}
}
diff --git
a/flink-connector-jdbc-trino/src/test/java/org/apache/flink/connector/jdbc/trino/table/TrinoDynamicTableSourceITCase.java
b/flink-connector-jdbc-trino/src/test/java/org/apache/flink/connector/jdbc/trino/table/TrinoDynamicTableSourceITCase.java
index 3c7df607..d94bedc4 100644
---
a/flink-connector-jdbc-trino/src/test/java/org/apache/flink/connector/jdbc/trino/table/TrinoDynamicTableSourceITCase.java
+++
b/flink-connector-jdbc-trino/src/test/java/org/apache/flink/connector/jdbc/trino/table/TrinoDynamicTableSourceITCase.java
@@ -25,8 +25,6 @@ import
org.apache.flink.connector.jdbc.trino.database.dialect.TrinoDialect;
import org.apache.flink.table.api.DataTypes;
import org.apache.flink.types.Row;
-import org.junit.jupiter.api.Disabled;
-
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
@@ -40,7 +38,6 @@ import static
org.apache.flink.connector.jdbc.testutils.tables.TableBuilder.fiel
import static
org.apache.flink.connector.jdbc.testutils.tables.TableBuilder.tableRow;
/** The Table Source ITCase for {@link TrinoDialect}. */
-@Disabled("Not working on jenkins as container not start.")
class TrinoDynamicTableSourceITCase extends JdbcDynamicTableSourceITCase
implements TrinoTestBase {
@Override
diff --git
a/flink-connector-jdbc-trino/src/test/java/org/apache/flink/connector/jdbc/trino/testutils/TrinoDatabase.java
b/flink-connector-jdbc-trino/src/test/java/org/apache/flink/connector/jdbc/trino/testutils/TrinoDatabase.java
index f56d3d48..962e926b 100644
---
a/flink-connector-jdbc-trino/src/test/java/org/apache/flink/connector/jdbc/trino/testutils/TrinoDatabase.java
+++
b/flink-connector-jdbc-trino/src/test/java/org/apache/flink/connector/jdbc/trino/testutils/TrinoDatabase.java
@@ -26,15 +26,12 @@ import
org.apache.flink.connector.jdbc.testutils.DatabaseResource;
import org.apache.flink.connector.jdbc.testutils.resources.DockerResource;
import org.apache.flink.util.FlinkRuntimeException;
-import org.testcontainers.containers.BindMode;
import org.testcontainers.containers.Network;
import org.testcontainers.containers.PostgreSQLContainer;
import org.testcontainers.containers.TrinoContainer;
import org.testcontainers.containers.wait.strategy.Wait;
+import org.testcontainers.images.builder.Transferable;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
import java.util.Arrays;
/** A Trino database for testing. */
@@ -90,7 +87,6 @@ public class TrinoDatabase extends DatabaseExtension
implements TrinoImages, Pos
try {
CONTAINER_DB.start();
- Path tempFile = Files.createTempFile(null, null);
String postgresContent =
"connector.name=postgresql\n"
+ String.format(
@@ -100,14 +96,14 @@ public class TrinoDatabase extends DatabaseExtension
implements TrinoImages, Pos
"connection-user=%s\n",
CONTAINER_DB.getUsername())
+ String.format(
"connection-password=%s\n",
CONTAINER_DB.getPassword());
- Files.write(tempFile,
postgresContent.getBytes(StandardCharsets.UTF_8));
+ // Copied rather than bind mounted: Trino runs as uid 1000
and cannot read a
+ // 0600 temp file owned by another build user on Linux.
CONTAINER
.withDatabaseName("postgres/public")
- .withFileSystemBind(
- tempFile.toFile().getAbsolutePath(),
- "/etc/trino/catalog/postgres.properties",
- BindMode.READ_WRITE)
+ .withCopyToContainer(
+ Transferable.of(postgresContent),
+ "/etc/trino/catalog/postgres.properties")
.waitingFor(Wait.forHttp("/ui/login.html").forStatusCode(200));
CONTAINER.start();
} catch (Exception e) {