diff --git a/plugin/trino-clickhouse/src/test/java/io/trino/plugin/clickhouse/BaseClickHouseConnectorSmokeTest.java b/plugin/trino-clickhouse/src/test/java/io/trino/plugin/clickhouse/BaseClickHouseConnectorSmokeTest.java index 15171d829be1..d484ac9cb9a0 100644 --- a/plugin/trino-clickhouse/src/test/java/io/trino/plugin/clickhouse/BaseClickHouseConnectorSmokeTest.java +++ b/plugin/trino-clickhouse/src/test/java/io/trino/plugin/clickhouse/BaseClickHouseConnectorSmokeTest.java @@ -28,6 +28,8 @@ protected boolean hasBehavior(TestingConnectorBehavior connectorBehavior) switch (connectorBehavior) { case SUPPORTS_DELETE: return false; + case SUPPORTS_TRUNCATE: + return true; default: return super.hasBehavior(connectorBehavior); diff --git a/plugin/trino-delta-lake/src/test/java/io/trino/plugin/deltalake/BaseDeltaLakeConnectorSmokeTest.java b/plugin/trino-delta-lake/src/test/java/io/trino/plugin/deltalake/BaseDeltaLakeConnectorSmokeTest.java index 41f22d500a29..52313b14e5a0 100644 --- a/plugin/trino-delta-lake/src/test/java/io/trino/plugin/deltalake/BaseDeltaLakeConnectorSmokeTest.java +++ b/plugin/trino-delta-lake/src/test/java/io/trino/plugin/deltalake/BaseDeltaLakeConnectorSmokeTest.java @@ -194,6 +194,9 @@ protected QueryRunner createQueryRunner() protected boolean hasBehavior(TestingConnectorBehavior connectorBehavior) { switch (connectorBehavior) { + case SUPPORTS_TRUNCATE: + return false; + case SUPPORTS_CREATE_MATERIALIZED_VIEW: return false; diff --git a/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/BaseIcebergConnectorSmokeTest.java b/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/BaseIcebergConnectorSmokeTest.java index b4cdeb015cea..34fc69d7e519 100644 --- a/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/BaseIcebergConnectorSmokeTest.java +++ b/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/BaseIcebergConnectorSmokeTest.java @@ -69,6 +69,9 @@ public BaseIcebergConnectorSmokeTest(FileFormat format) protected boolean hasBehavior(TestingConnectorBehavior connectorBehavior) { switch (connectorBehavior) { + case SUPPORTS_TRUNCATE: + return false; + case SUPPORTS_TOPN_PUSHDOWN: return false; diff --git a/plugin/trino-kudu/src/test/java/io/trino/plugin/kudu/BaseKuduConnectorSmokeTest.java b/plugin/trino-kudu/src/test/java/io/trino/plugin/kudu/BaseKuduConnectorSmokeTest.java index 71eefdc47440..e603bf9a4632 100644 --- a/plugin/trino-kudu/src/test/java/io/trino/plugin/kudu/BaseKuduConnectorSmokeTest.java +++ b/plugin/trino-kudu/src/test/java/io/trino/plugin/kudu/BaseKuduConnectorSmokeTest.java @@ -47,6 +47,9 @@ protected QueryRunner createQueryRunner() protected boolean hasBehavior(TestingConnectorBehavior connectorBehavior) { switch (connectorBehavior) { + case SUPPORTS_TRUNCATE: + return false; + case SUPPORTS_TOPN_PUSHDOWN: return false; diff --git a/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/BaseMongoConnectorSmokeTest.java b/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/BaseMongoConnectorSmokeTest.java index 9b5a780e239a..f084161a8602 100644 --- a/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/BaseMongoConnectorSmokeTest.java +++ b/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/BaseMongoConnectorSmokeTest.java @@ -26,6 +26,7 @@ protected boolean hasBehavior(TestingConnectorBehavior connectorBehavior) switch (connectorBehavior) { case SUPPORTS_UPDATE: case SUPPORTS_MERGE: + case SUPPORTS_TRUNCATE: return false; case SUPPORTS_RENAME_SCHEMA: diff --git a/testing/trino-testing/src/main/java/io/trino/testing/BaseConnectorSmokeTest.java b/testing/trino-testing/src/main/java/io/trino/testing/BaseConnectorSmokeTest.java index 53b970f0476c..1e8b77bef954 100644 --- a/testing/trino-testing/src/main/java/io/trino/testing/BaseConnectorSmokeTest.java +++ b/testing/trino-testing/src/main/java/io/trino/testing/BaseConnectorSmokeTest.java @@ -39,6 +39,7 @@ import static io.trino.testing.TestingConnectorBehavior.SUPPORTS_RENAME_TABLE; import static io.trino.testing.TestingConnectorBehavior.SUPPORTS_RENAME_TABLE_ACROSS_SCHEMAS; import static io.trino.testing.TestingConnectorBehavior.SUPPORTS_ROW_LEVEL_DELETE; +import static io.trino.testing.TestingConnectorBehavior.SUPPORTS_TRUNCATE; import static io.trino.testing.TestingConnectorBehavior.SUPPORTS_UPDATE; import static io.trino.testing.TestingNames.randomNameSuffix; import static io.trino.tpch.TpchTable.NATION; @@ -247,6 +248,23 @@ public void testRowLevelDelete() } } + @Test + public void testTruncateTable() + { + if (!hasBehavior(SUPPORTS_TRUNCATE)) { + assertQueryFails("TRUNCATE TABLE nation", "This connector does not support truncating tables"); + return; + } + + skipTestUnless(hasBehavior(SUPPORTS_CREATE_TABLE)); + + try (TestTable table = new TestTable(getQueryRunner()::execute, "test_truncate", "AS SELECT * FROM region")) { + assertUpdate("TRUNCATE TABLE " + table.getName()); + assertThat(query("TABLE " + table.getName())) + .returnsEmptyResult(); + } + } + @Test public void testUpdate() {