diff --git a/plugin/trino-base-jdbc/src/test/java/io/trino/plugin/jdbc/BaseJdbcConnectorTest.java b/plugin/trino-base-jdbc/src/test/java/io/trino/plugin/jdbc/BaseJdbcConnectorTest.java index be01322f2df..59f1e8e1d02 100644 --- a/plugin/trino-base-jdbc/src/test/java/io/trino/plugin/jdbc/BaseJdbcConnectorTest.java +++ b/plugin/trino-base-jdbc/src/test/java/io/trino/plugin/jdbc/BaseJdbcConnectorTest.java @@ -146,6 +146,19 @@ protected TestTable createTableWithUnsupportedColumn() // TODO move common tests from connector-specific classes here + @Test + public void testCharTrailingSpace() + { + String schema = getSession().getSchema().orElseThrow(); + try (TestTable table = new TestTable(onRemoteDatabase(), schema + ".char_trailing_space", "(x char(10))", List.of("'test'"))) { + String tableName = table.getName(); + assertQuery("SELECT * FROM " + tableName + " WHERE x = char 'test'", "VALUES 'test'"); + assertQuery("SELECT * FROM " + tableName + " WHERE x = char 'test '", "VALUES 'test'"); + assertQuery("SELECT * FROM " + tableName + " WHERE x = char 'test '", "VALUES 'test'"); + assertQueryReturnsEmptyResult("SELECT * FROM " + tableName + " WHERE x = char ' test'"); + } + } + @Test public void testAggregationPushdown() { diff --git a/plugin/trino-clickhouse/src/test/java/io/trino/plugin/clickhouse/TestClickHouseConnectorTest.java b/plugin/trino-clickhouse/src/test/java/io/trino/plugin/clickhouse/TestClickHouseConnectorTest.java index 0e11f86d498..e2bed521d98 100644 --- a/plugin/trino-clickhouse/src/test/java/io/trino/plugin/clickhouse/TestClickHouseConnectorTest.java +++ b/plugin/trino-clickhouse/src/test/java/io/trino/plugin/clickhouse/TestClickHouseConnectorTest.java @@ -585,6 +585,14 @@ public void testDateYearOfEraPredicate() "Date must be between 1970-01-01 and 2106-02-07 in ClickHouse: -1996-09-14"); } + @Override + public void testCharTrailingSpace() + { + assertThatThrownBy(super::testCharTrailingSpace) + .hasMessageStartingWith("Failed to execute statement: CREATE TABLE tpch.char_trailing_space"); + throw new SkipException("Implement test for ClickHouse"); + } + @Override protected SqlExecutor onRemoteDatabase() { diff --git a/plugin/trino-druid/src/test/java/io/trino/plugin/druid/BaseDruidConnectorTest.java b/plugin/trino-druid/src/test/java/io/trino/plugin/druid/BaseDruidConnectorTest.java index f7943d58fca..693c265bdcb 100644 --- a/plugin/trino-druid/src/test/java/io/trino/plugin/druid/BaseDruidConnectorTest.java +++ b/plugin/trino-druid/src/test/java/io/trino/plugin/druid/BaseDruidConnectorTest.java @@ -38,6 +38,7 @@ import static io.trino.sql.planner.assertions.PlanMatchPattern.node; import static io.trino.testing.MaterializedResult.resultBuilder; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; public abstract class BaseDruidConnectorTest extends BaseJdbcConnectorTest @@ -291,4 +292,12 @@ public void testDateYearOfEraPredicate() { throw new SkipException("Druid connector does not map 'orderdate' column to date type"); } + + @Override + public void testCharTrailingSpace() + { + assertThatThrownBy(super::testCharTrailingSpace) + .hasMessageContaining("Error while executing SQL \"CREATE TABLE druid.char_trailing_space"); + throw new SkipException("Implement test for Druid"); + } } diff --git a/plugin/trino-mysql/src/test/java/io/trino/plugin/mysql/BaseMySqlConnectorTest.java b/plugin/trino-mysql/src/test/java/io/trino/plugin/mysql/BaseMySqlConnectorTest.java index a082c1e0f20..43d52114e64 100644 --- a/plugin/trino-mysql/src/test/java/io/trino/plugin/mysql/BaseMySqlConnectorTest.java +++ b/plugin/trino-mysql/src/test/java/io/trino/plugin/mysql/BaseMySqlConnectorTest.java @@ -255,21 +255,6 @@ public void testMySqlTinyint() assertUpdate("DROP TABLE mysql_test_tinyint1"); } - @Test - public void testCharTrailingSpace() - { - onRemoteDatabase().execute("CREATE TABLE tpch.char_trailing_space (x char(10))"); - assertUpdate("INSERT INTO char_trailing_space VALUES ('test')", 1); - - assertQuery("SELECT * FROM char_trailing_space WHERE x = char 'test'", "VALUES 'test'"); - assertQuery("SELECT * FROM char_trailing_space WHERE x = char 'test '", "VALUES 'test'"); - assertQuery("SELECT * FROM char_trailing_space WHERE x = char 'test '", "VALUES 'test'"); - - assertEquals(getQueryRunner().execute("SELECT * FROM char_trailing_space WHERE x = char ' test'").getRowCount(), 0); - - assertUpdate("DROP TABLE char_trailing_space"); - } - @Override protected String errorMessageForCreateTableAsSelectNegativeDate(String date) { diff --git a/plugin/trino-phoenix/src/test/java/io/trino/plugin/phoenix/TestPhoenixConnectorTest.java b/plugin/trino-phoenix/src/test/java/io/trino/plugin/phoenix/TestPhoenixConnectorTest.java index 9846fc6a559..a1080c6ea98 100644 --- a/plugin/trino-phoenix/src/test/java/io/trino/plugin/phoenix/TestPhoenixConnectorTest.java +++ b/plugin/trino-phoenix/src/test/java/io/trino/plugin/phoenix/TestPhoenixConnectorTest.java @@ -274,6 +274,14 @@ public void testVarcharCharComparison() } } + @Override + public void testCharTrailingSpace() + { + assertThatThrownBy(super::testCharTrailingSpace) + .hasMessageContaining("The table does not have a primary key. tableName=TPCH.CHAR_TRAILING_SPACE"); + throw new SkipException("Implement test for Phoenix"); + } + // Overridden because Phoenix requires a ROWID column @Override public void testCountDistinctWithStringTypes() diff --git a/plugin/trino-phoenix5/src/test/java/io/trino/plugin/phoenix5/TestPhoenixConnectorTest.java b/plugin/trino-phoenix5/src/test/java/io/trino/plugin/phoenix5/TestPhoenixConnectorTest.java index 366287acc2f..715c2d1ab2e 100644 --- a/plugin/trino-phoenix5/src/test/java/io/trino/plugin/phoenix5/TestPhoenixConnectorTest.java +++ b/plugin/trino-phoenix5/src/test/java/io/trino/plugin/phoenix5/TestPhoenixConnectorTest.java @@ -292,6 +292,14 @@ public void testVarcharCharComparison() } } + @Override + public void testCharTrailingSpace() + { + assertThatThrownBy(super::testCharTrailingSpace) + .hasMessageContaining("The table does not have a primary key. tableName=TPCH.CHAR_TRAILING_SPACE"); + throw new SkipException("Implement test for Phoenix"); + } + // Overridden because Phoenix requires a ROWID column @Override public void testCountDistinctWithStringTypes() diff --git a/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestPostgreSqlConnectorTest.java b/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestPostgreSqlConnectorTest.java index 77954a67370..9d57e901f30 100644 --- a/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestPostgreSqlConnectorTest.java +++ b/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestPostgreSqlConnectorTest.java @@ -70,7 +70,6 @@ import static java.util.stream.Collectors.joining; import static java.util.stream.IntStream.range; import static org.assertj.core.api.Assertions.assertThat; -import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; @@ -683,21 +682,6 @@ public void testCharPredicatePushdown() } } - @Test - public void testCharTrailingSpace() - { - onRemoteDatabase().execute("CREATE TABLE char_trailing_space (x char(10))"); - assertUpdate("INSERT INTO char_trailing_space VALUES ('test')", 1); - - assertQuery("SELECT * FROM char_trailing_space WHERE x = char 'test'", "VALUES 'test'"); - assertQuery("SELECT * FROM char_trailing_space WHERE x = char 'test '", "VALUES 'test'"); - assertQuery("SELECT * FROM char_trailing_space WHERE x = char 'test '", "VALUES 'test'"); - - assertEquals(getQueryRunner().execute("SELECT * FROM char_trailing_space WHERE x = char ' test'").getRowCount(), 0); - - assertUpdate("DROP TABLE char_trailing_space"); - } - @Test public void testOrPredicatePushdown() { diff --git a/plugin/trino-singlestore/src/test/java/io/trino/plugin/singlestore/TestSingleStoreConnectorTest.java b/plugin/trino-singlestore/src/test/java/io/trino/plugin/singlestore/TestSingleStoreConnectorTest.java index c5082ce0bd4..e0c67308c21 100644 --- a/plugin/trino-singlestore/src/test/java/io/trino/plugin/singlestore/TestSingleStoreConnectorTest.java +++ b/plugin/trino-singlestore/src/test/java/io/trino/plugin/singlestore/TestSingleStoreConnectorTest.java @@ -229,21 +229,6 @@ public void testSingleStoreTinyint() assertUpdate("DROP TABLE mysql_test_tinyint1"); } - @Test - public void testCharTrailingSpace() - { - onRemoteDatabase().execute("CREATE TABLE tpch.char_trailing_space (x char(10))"); - assertUpdate("INSERT INTO char_trailing_space VALUES ('test')", 1); - - assertQuery("SELECT * FROM char_trailing_space WHERE x = char 'test'", "VALUES 'test'"); - assertQuery("SELECT * FROM char_trailing_space WHERE x = char 'test '", "VALUES 'test'"); - assertQuery("SELECT * FROM char_trailing_space WHERE x = char 'test '", "VALUES 'test'"); - - assertEquals(getQueryRunner().execute("SELECT * FROM char_trailing_space WHERE x = char ' test'").getRowCount(), 0); - - assertUpdate("DROP TABLE char_trailing_space"); - } - @Override protected String errorMessageForInsertIntoNotNullColumn(String columnName) {