From 4d46aa6cd4ed3c704a6e488b6808473d95c53b8f Mon Sep 17 00:00:00 2001 From: Alex Jo Date: Fri, 19 Jan 2024 09:56:07 -0500 Subject: [PATCH] Fix Databricks 13.3 timestamp compatibility test --- .../product/deltalake/TestDeltaLakeInsertCompatibility.java | 5 ++++- .../tests/product/deltalake/util/DatabricksVersion.java | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/testing/trino-product-tests/src/main/java/io/trino/tests/product/deltalake/TestDeltaLakeInsertCompatibility.java b/testing/trino-product-tests/src/main/java/io/trino/tests/product/deltalake/TestDeltaLakeInsertCompatibility.java index 4fa678d210b1..f69ada434f6c 100644 --- a/testing/trino-product-tests/src/main/java/io/trino/tests/product/deltalake/TestDeltaLakeInsertCompatibility.java +++ b/testing/trino-product-tests/src/main/java/io/trino/tests/product/deltalake/TestDeltaLakeInsertCompatibility.java @@ -38,6 +38,7 @@ import static io.trino.tests.product.TestGroups.DELTA_LAKE_OSS; import static io.trino.tests.product.TestGroups.PROFILE_SPECIFIC_TESTS; import static io.trino.tests.product.deltalake.util.DatabricksVersion.DATABRICKS_104_RUNTIME_VERSION; +import static io.trino.tests.product.deltalake.util.DatabricksVersion.DATABRICKS_133_RUNTIME_VERSION; import static io.trino.tests.product.deltalake.util.DeltaLakeTestUtils.DATABRICKS_COMMUNICATION_FAILURE_ISSUE; import static io.trino.tests.product.deltalake.util.DeltaLakeTestUtils.DATABRICKS_COMMUNICATION_FAILURE_MATCH; import static io.trino.tests.product.deltalake.util.DeltaLakeTestUtils.dropDeltaTableWithRetry; @@ -159,9 +160,11 @@ public void testTimestampInsertCompatibility() "(3, TIMESTAMP '2023-03-04 01:02:03.999')," + "(4, TIMESTAMP '9999-12-31 23:59:59.999')"); + // Databricks returns incorrect results before version 13.3 + Optional expected = databricksRuntimeVersion.map(version -> version.isAtLeast(DATABRICKS_133_RUNTIME_VERSION) ? "0001-01-01 00:00:00.000" : "0001-01-03 00:00:00.000"); assertThat(onDelta().executeQuery("SELECT id, date_format(ts, \"yyyy-MM-dd HH:mm:ss.SSS\") FROM default." + tableName)) .containsOnly( - row(1, databricksRuntimeVersion.isPresent() ? "0001-01-03 00:00:00.000" : "0001-01-01 00:00:00.000"), // Databricks returns incorrect results + row(1, expected.orElse("0001-01-01 00:00:00.000")), row(2, "2023-01-02 01:02:03.999"), row(3, "2023-03-04 01:02:03.999"), row(4, "9999-12-31 23:59:59.999")); diff --git a/testing/trino-product-tests/src/main/java/io/trino/tests/product/deltalake/util/DatabricksVersion.java b/testing/trino-product-tests/src/main/java/io/trino/tests/product/deltalake/util/DatabricksVersion.java index 52063a7fb479..d10e40494d5e 100644 --- a/testing/trino-product-tests/src/main/java/io/trino/tests/product/deltalake/util/DatabricksVersion.java +++ b/testing/trino-product-tests/src/main/java/io/trino/tests/product/deltalake/util/DatabricksVersion.java @@ -21,6 +21,7 @@ public record DatabricksVersion(int majorVersion, int minorVersion) implements Comparable { + public static final DatabricksVersion DATABRICKS_133_RUNTIME_VERSION = new DatabricksVersion(13, 3); public static final DatabricksVersion DATABRICKS_122_RUNTIME_VERSION = new DatabricksVersion(12, 2); public static final DatabricksVersion DATABRICKS_113_RUNTIME_VERSION = new DatabricksVersion(11, 3); public static final DatabricksVersion DATABRICKS_104_RUNTIME_VERSION = new DatabricksVersion(10, 4);