diff --git a/docs/src/main/sphinx/connector/hive.rst b/docs/src/main/sphinx/connector/hive.rst index bfe8bf118c9e..dcc1ce039da8 100644 --- a/docs/src/main/sphinx/connector/hive.rst +++ b/docs/src/main/sphinx/connector/hive.rst @@ -399,6 +399,11 @@ Property Name Description Set to ``false`` to disable statistics. Disabling statistics means that :doc:`/optimizer/cost-based-optimizations` can not make smart decisions about the query plan. + +``hive.auto-purge`` Set the default value for the auto_purge table property for ``false`` + managed tables. + See the :ref:`hive_table_properties` for more information + on auto_purge. ================================================== ============================================================ ============ ORC format configuration properties diff --git a/plugin/trino-hive/src/main/java/io/trino/plugin/hive/HiveConfig.java b/plugin/trino-hive/src/main/java/io/trino/plugin/hive/HiveConfig.java index a02601910034..bfebe40ca195 100644 --- a/plugin/trino-hive/src/main/java/io/trino/plugin/hive/HiveConfig.java +++ b/plugin/trino-hive/src/main/java/io/trino/plugin/hive/HiveConfig.java @@ -168,6 +168,7 @@ public class HiveConfig private boolean sizeBasedSplitWeightsEnabled = true; private double minimumAssignedSplitWeight = 0.05; + private boolean autoPurge; public boolean isSingleStatementWritesOnly() { @@ -1195,4 +1196,16 @@ public HiveConfig setDeltaLakeCatalogName(String deltaLakeCatalogName) this.deltaLakeCatalogName = Optional.ofNullable(deltaLakeCatalogName); return this; } + + public boolean isAutoPurge() + { + return this.autoPurge; + } + + @Config("hive.auto-purge") + public HiveConfig setAutoPurge(boolean autoPurge) + { + this.autoPurge = autoPurge; + return this; + } } diff --git a/plugin/trino-hive/src/main/java/io/trino/plugin/hive/HiveTableProperties.java b/plugin/trino-hive/src/main/java/io/trino/plugin/hive/HiveTableProperties.java index b98a188b5a39..0a9a0346476a 100644 --- a/plugin/trino-hive/src/main/java/io/trino/plugin/hive/HiveTableProperties.java +++ b/plugin/trino-hive/src/main/java/io/trino/plugin/hive/HiveTableProperties.java @@ -155,7 +155,7 @@ public HiveTableProperties( stringProperty(CSV_QUOTE, "CSV quote character", null, false), stringProperty(CSV_ESCAPE, "CSV escape character", null, false), booleanProperty(TRANSACTIONAL, "Table is transactional", null, false), - booleanProperty(AUTO_PURGE, "Skip trash when table or partition is deleted", null, false)); + booleanProperty(AUTO_PURGE, "Skip trash when table or partition is deleted", config.isAutoPurge(), false)); } public List> getTableProperties() diff --git a/plugin/trino-hive/src/test/java/io/trino/plugin/hive/TestHiveConfig.java b/plugin/trino-hive/src/test/java/io/trino/plugin/hive/TestHiveConfig.java index f1a10dd473ad..11df8a35151b 100644 --- a/plugin/trino-hive/src/test/java/io/trino/plugin/hive/TestHiveConfig.java +++ b/plugin/trino-hive/src/test/java/io/trino/plugin/hive/TestHiveConfig.java @@ -111,7 +111,8 @@ public void testDefaults() .setIcebergCatalogName(null) .setSizeBasedSplitWeightsEnabled(true) .setMinimumAssignedSplitWeight(0.05) - .setDeltaLakeCatalogName(null)); + .setDeltaLakeCatalogName(null) + .setAutoPurge(false)); } @Test @@ -194,6 +195,7 @@ public void testExplicitPropertyMappings() .put("hive.size-based-split-weights-enabled", "false") .put("hive.minimum-assigned-split-weight", "1.0") .put("hive.delta-lake-catalog-name", "delta") + .put("hive.auto-purge", "true") .buildOrThrow(); HiveConfig expected = new HiveConfig() @@ -272,7 +274,8 @@ public void testExplicitPropertyMappings() .setIcebergCatalogName("iceberg") .setSizeBasedSplitWeightsEnabled(false) .setMinimumAssignedSplitWeight(1.0) - .setDeltaLakeCatalogName("delta"); + .setDeltaLakeCatalogName("delta") + .setAutoPurge(true); assertFullMapping(properties, expected); }