diff --git a/docs/src/main/sphinx/connector/hive.md b/docs/src/main/sphinx/connector/hive.md index 066c712aee3a..4e421a39a123 100644 --- a/docs/src/main/sphinx/connector/hive.md +++ b/docs/src/main/sphinx/connector/hive.md @@ -284,6 +284,9 @@ Hive connector documentation. * - `hive.partition-projection-enabled` - Enables Athena partition projection support - `true` +* - `hive.s3-glacier-filter` + - Filter S3 objects based on their storage class and restored status if applicable + - `true` * - `hive.max-partition-drops-per-query` - Maximum number of partitions to drop in a single query. - 100,000 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 83a80e5b4f95..b9dba4bf7a79 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 @@ -172,7 +172,7 @@ public class HiveConfig private boolean partitionProjectionEnabled = true; - private S3StorageClassFilter s3StorageClassFilter = S3StorageClassFilter.READ_ALL; + private S3GlacierFilter s3GlacierFilter = S3GlacierFilter.READ_ALL; private int metadataParallelism = 8; @@ -1255,16 +1255,17 @@ public HiveConfig setPartitionProjectionEnabled(boolean enabledAthenaPartitionPr return this; } - public S3StorageClassFilter getS3StorageClassFilter() + public S3GlacierFilter getS3GlacierFilter() { - return s3StorageClassFilter; + return s3GlacierFilter; } - @Config("hive.s3.storage-class-filter") + @LegacyConfig("hive.s3.storage-class-filter") + @Config("hive.s3-glacier-filter") @ConfigDescription("Filter based on storage class of S3 object") - public HiveConfig setS3StorageClassFilter(S3StorageClassFilter s3StorageClassFilter) + public HiveConfig setS3GlacierFilter(S3GlacierFilter s3GlacierFilter) { - this.s3StorageClassFilter = s3StorageClassFilter; + this.s3GlacierFilter = s3GlacierFilter; return this; } diff --git a/plugin/trino-hive/src/main/java/io/trino/plugin/hive/S3StorageClassFilter.java b/plugin/trino-hive/src/main/java/io/trino/plugin/hive/S3GlacierFilter.java similarity index 89% rename from plugin/trino-hive/src/main/java/io/trino/plugin/hive/S3StorageClassFilter.java rename to plugin/trino-hive/src/main/java/io/trino/plugin/hive/S3GlacierFilter.java index c31536481291..9126c20fbab0 100644 --- a/plugin/trino-hive/src/main/java/io/trino/plugin/hive/S3StorageClassFilter.java +++ b/plugin/trino-hive/src/main/java/io/trino/plugin/hive/S3GlacierFilter.java @@ -19,7 +19,7 @@ import static com.google.common.base.Predicates.alwaysTrue; -public enum S3StorageClassFilter { +public enum S3GlacierFilter { READ_ALL, READ_NON_GLACIER, READ_NON_GLACIER_AND_RESTORED; @@ -52,8 +52,8 @@ public Predicate toFileEntryPredicate() { return switch (this) { case READ_ALL -> alwaysTrue(); - case READ_NON_GLACIER -> S3StorageClassFilter::isNotGlacierObject; - case READ_NON_GLACIER_AND_RESTORED -> S3StorageClassFilter::isCompletedRestoredObject; + case READ_NON_GLACIER -> S3GlacierFilter::isNotGlacierObject; + case READ_NON_GLACIER_AND_RESTORED -> S3GlacierFilter::isCompletedRestoredObject; }; } } diff --git a/plugin/trino-hive/src/main/java/io/trino/plugin/hive/fs/CachingDirectoryLister.java b/plugin/trino-hive/src/main/java/io/trino/plugin/hive/fs/CachingDirectoryLister.java index 976e7464ab12..a5d1b1c81887 100644 --- a/plugin/trino-hive/src/main/java/io/trino/plugin/hive/fs/CachingDirectoryLister.java +++ b/plugin/trino-hive/src/main/java/io/trino/plugin/hive/fs/CachingDirectoryLister.java @@ -62,7 +62,7 @@ public CachingDirectoryLister(HiveConfig hiveClientConfig) hiveClientConfig.getFileStatusCacheExpireAfterWrite(), hiveClientConfig.getFileStatusCacheMaxRetainedSize(), hiveClientConfig.getFileStatusCacheTables(), - hiveClientConfig.getS3StorageClassFilter().toFileEntryPredicate()); + hiveClientConfig.getS3GlacierFilter().toFileEntryPredicate()); } public CachingDirectoryLister( 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 2dff32272cfc..fb28e24c4685 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 @@ -117,7 +117,7 @@ public void testDefaults() .setHudiCatalogName(null) .setAutoPurge(false) .setPartitionProjectionEnabled(true) - .setS3StorageClassFilter(S3StorageClassFilter.READ_ALL) + .setS3GlacierFilter(S3GlacierFilter.READ_ALL) .setMetadataParallelism(8)); } @@ -203,7 +203,7 @@ public void testExplicitPropertyMappings() .put("hive.hudi-catalog-name", "hudi") .put("hive.auto-purge", "true") .put("hive.partition-projection-enabled", "false") - .put("hive.s3.storage-class-filter", "READ_NON_GLACIER_AND_RESTORED") + .put("hive.s3-glacier-filter", "READ_NON_GLACIER_AND_RESTORED") .put("hive.metadata.parallelism", "10") .buildOrThrow(); @@ -286,7 +286,7 @@ public void testExplicitPropertyMappings() .setHudiCatalogName("hudi") .setAutoPurge(true) .setPartitionProjectionEnabled(false) - .setS3StorageClassFilter(S3StorageClassFilter.READ_NON_GLACIER_AND_RESTORED) + .setS3GlacierFilter(S3GlacierFilter.READ_NON_GLACIER_AND_RESTORED) .setMetadataParallelism(10); assertFullMapping(properties, expected);