This is an automated email from the ASF dual-hosted git repository.
szehon-ho pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iceberg.git
The following commit(s) were added to refs/heads/main by this push:
new 4a1513f1f2 API, AWS, BigQuery, Core, Flink, Hive, Nessie, ORC,
Parquet, Spark: Use Locale.ROOT instead of Locale.ENGLISH for case conversion
(#17442)
4a1513f1f2 is described below
commit 4a1513f1f220cc6adcd96093b64d6ab43e0808f1
Author: Uros Bojanic <[email protected]>
AuthorDate: Sat Aug 1 04:45:02 2026 +0200
API, AWS, BigQuery, Core, Flink, Hive, Nessie, ORC, Parquet, Spark: Use
Locale.ROOT instead of Locale.ENGLISH for case conversion (#17442)
---
api/src/main/java/org/apache/iceberg/DistributionMode.java | 2 +-
api/src/main/java/org/apache/iceberg/FileFormat.java | 2 +-
api/src/main/java/org/apache/iceberg/RewriteJobOrder.java | 2 +-
api/src/main/java/org/apache/iceberg/SnapshotRefType.java | 2 +-
api/src/main/java/org/apache/iceberg/SortDirection.java | 2 +-
api/src/main/java/org/apache/iceberg/actions/DeleteOrphanFiles.java | 2 +-
api/src/main/java/org/apache/iceberg/expressions/Expression.java | 2 +-
api/src/main/java/org/apache/iceberg/metrics/MetricsContext.java | 2 +-
api/src/main/java/org/apache/iceberg/transforms/Transforms.java | 2 +-
api/src/main/java/org/apache/iceberg/types/CheckCompatibility.java | 2 +-
api/src/main/java/org/apache/iceberg/types/EdgeAlgorithm.java | 4 ++--
.../java/org/apache/iceberg/aws/glue/TestGlueCatalogTable.java | 2 +-
.../org/apache/iceberg/aws/dynamodb/DynamoDbTableOperations.java | 2 +-
.../main/java/org/apache/iceberg/aws/glue/GlueTableOperations.java | 2 +-
.../java/org/apache/iceberg/aws/glue/IcebergToGlueConverter.java | 2 +-
aws/src/main/java/org/apache/iceberg/aws/s3/S3RequestUtil.java | 2 +-
.../apache/iceberg/gcp/bigquery/BigQueryMetastoreClientImpl.java | 2 +-
core/src/main/java/org/apache/iceberg/CatalogUtil.java | 2 +-
core/src/main/java/org/apache/iceberg/ContentFileParser.java | 5 ++---
core/src/main/java/org/apache/iceberg/IsolationLevel.java | 2 +-
core/src/main/java/org/apache/iceberg/MetricsModes.java | 2 +-
core/src/main/java/org/apache/iceberg/SnapshotRefParser.java | 2 +-
core/src/main/java/org/apache/iceberg/SortOrderParser.java | 2 +-
core/src/main/java/org/apache/iceberg/TableMetadataParser.java | 2 +-
core/src/main/java/org/apache/iceberg/avro/Avro.java | 2 +-
.../main/java/org/apache/iceberg/expressions/ExpressionParser.java | 2 +-
.../src/main/java/org/apache/iceberg/metrics/TimerResultParser.java | 4 ++--
.../java/org/apache/iceberg/rest/requests/ReportMetricsRequest.java | 2 +-
.../apache/iceberg/rest/requests/ReportMetricsRequestParser.java | 2 +-
.../main/java/org/apache/iceberg/view/ViewRepresentationParser.java | 4 ++--
.../src/main/java/org/apache/iceberg/flink/FlinkCatalogFactory.java | 2 +-
.../src/main/java/org/apache/iceberg/flink/FlinkCatalogFactory.java | 2 +-
.../src/main/java/org/apache/iceberg/flink/FlinkCatalogFactory.java | 2 +-
.../main/java/org/apache/iceberg/hive/HMSTablePropertyHelper.java | 4 ++--
nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java | 2 +-
.../main/java/org/apache/iceberg/nessie/NessieIcebergClient.java | 6 +++---
orc/src/main/java/org/apache/iceberg/orc/ORC.java | 4 ++--
parquet/src/main/java/org/apache/iceberg/parquet/Parquet.java | 2 +-
.../catalyst/parser/extensions/IcebergSqlExtensionsAstBuilder.scala | 6 +++---
.../test/java/org/apache/iceberg/spark/extensions/TestTagDDL.java | 2 +-
.../catalyst/parser/extensions/IcebergSqlExtensionsAstBuilder.scala | 6 +++---
.../test/java/org/apache/iceberg/spark/extensions/TestTagDDL.java | 2 +-
.../catalyst/parser/extensions/IcebergSqlExtensionsAstBuilder.scala | 6 +++---
.../test/java/org/apache/iceberg/spark/extensions/TestTagDDL.java | 2 +-
44 files changed, 58 insertions(+), 59 deletions(-)
diff --git a/api/src/main/java/org/apache/iceberg/DistributionMode.java
b/api/src/main/java/org/apache/iceberg/DistributionMode.java
index a7625675e1..27c04b5af0 100644
--- a/api/src/main/java/org/apache/iceberg/DistributionMode.java
+++ b/api/src/main/java/org/apache/iceberg/DistributionMode.java
@@ -54,7 +54,7 @@ public enum DistributionMode {
public static DistributionMode fromName(String modeName) {
Preconditions.checkArgument(null != modeName, "Invalid distribution mode:
null");
try {
- return DistributionMode.valueOf(modeName.toUpperCase(Locale.ENGLISH));
+ return DistributionMode.valueOf(modeName.toUpperCase(Locale.ROOT));
} catch (IllegalArgumentException e) {
throw new IllegalArgumentException(String.format("Invalid distribution
mode: %s", modeName));
}
diff --git a/api/src/main/java/org/apache/iceberg/FileFormat.java
b/api/src/main/java/org/apache/iceberg/FileFormat.java
index 064fc1465f..539da2290f 100644
--- a/api/src/main/java/org/apache/iceberg/FileFormat.java
+++ b/api/src/main/java/org/apache/iceberg/FileFormat.java
@@ -78,7 +78,7 @@ public enum FileFormat {
public static FileFormat fromString(String fileFormat) {
Preconditions.checkArgument(null != fileFormat, "Invalid file format:
null");
try {
- return FileFormat.valueOf(fileFormat.toUpperCase(Locale.ENGLISH));
+ return FileFormat.valueOf(fileFormat.toUpperCase(Locale.ROOT));
} catch (IllegalArgumentException e) {
throw new IllegalArgumentException(String.format("Invalid file format:
%s", fileFormat), e);
}
diff --git a/api/src/main/java/org/apache/iceberg/RewriteJobOrder.java
b/api/src/main/java/org/apache/iceberg/RewriteJobOrder.java
index 7038f127af..85867c3199 100644
--- a/api/src/main/java/org/apache/iceberg/RewriteJobOrder.java
+++ b/api/src/main/java/org/apache/iceberg/RewriteJobOrder.java
@@ -59,7 +59,7 @@ public enum RewriteJobOrder {
// Replace the hyphen in order name with underscore to map to the enum
value. For example:
// bytes-asc to BYTES_ASC
try {
- return RewriteJobOrder.valueOf(orderName.replaceFirst("-",
"_").toUpperCase(Locale.ENGLISH));
+ return RewriteJobOrder.valueOf(orderName.replaceFirst("-",
"_").toUpperCase(Locale.ROOT));
} catch (IllegalArgumentException e) {
throw new IllegalArgumentException(
String.format("Invalid rewrite job order name: %s", orderName), e);
diff --git a/api/src/main/java/org/apache/iceberg/SnapshotRefType.java
b/api/src/main/java/org/apache/iceberg/SnapshotRefType.java
index 361d40e7aa..ce9b3449c4 100644
--- a/api/src/main/java/org/apache/iceberg/SnapshotRefType.java
+++ b/api/src/main/java/org/apache/iceberg/SnapshotRefType.java
@@ -28,7 +28,7 @@ public enum SnapshotRefType {
public static SnapshotRefType fromString(String snapshotRefType) {
Preconditions.checkArgument(null != snapshotRefType, "Invalid snapshot ref
type: null");
try {
- return
SnapshotRefType.valueOf(snapshotRefType.toUpperCase(Locale.ENGLISH));
+ return SnapshotRefType.valueOf(snapshotRefType.toUpperCase(Locale.ROOT));
} catch (IllegalArgumentException e) {
throw new IllegalArgumentException(
String.format("Invalid snapshot ref type: %s", snapshotRefType), e);
diff --git a/api/src/main/java/org/apache/iceberg/SortDirection.java
b/api/src/main/java/org/apache/iceberg/SortDirection.java
index d76fe199f9..b92ea4597c 100644
--- a/api/src/main/java/org/apache/iceberg/SortDirection.java
+++ b/api/src/main/java/org/apache/iceberg/SortDirection.java
@@ -28,7 +28,7 @@ public enum SortDirection {
public static SortDirection fromString(String directionAsString) {
Preconditions.checkArgument(null != directionAsString, "Invalid sort
direction: null");
try {
- return
SortDirection.valueOf(directionAsString.toUpperCase(Locale.ENGLISH));
+ return SortDirection.valueOf(directionAsString.toUpperCase(Locale.ROOT));
} catch (IllegalArgumentException e) {
throw new IllegalArgumentException(
String.format("Invalid sort direction: %s", directionAsString), e);
diff --git
a/api/src/main/java/org/apache/iceberg/actions/DeleteOrphanFiles.java
b/api/src/main/java/org/apache/iceberg/actions/DeleteOrphanFiles.java
index ab12a3b7c1..c5766f981d 100644
--- a/api/src/main/java/org/apache/iceberg/actions/DeleteOrphanFiles.java
+++ b/api/src/main/java/org/apache/iceberg/actions/DeleteOrphanFiles.java
@@ -163,7 +163,7 @@ public interface DeleteOrphanFiles extends
Action<DeleteOrphanFiles, DeleteOrpha
public static PrefixMismatchMode fromString(String modeAsString) {
Preconditions.checkArgument(modeAsString != null, "Invalid mode: null");
try {
- return
PrefixMismatchMode.valueOf(modeAsString.toUpperCase(Locale.ENGLISH));
+ return
PrefixMismatchMode.valueOf(modeAsString.toUpperCase(Locale.ROOT));
} catch (IllegalArgumentException e) {
throw new IllegalArgumentException(String.format("Invalid mode: %s",
modeAsString), e);
}
diff --git a/api/src/main/java/org/apache/iceberg/expressions/Expression.java
b/api/src/main/java/org/apache/iceberg/expressions/Expression.java
index 4a047e0809..9ebd1df754 100644
--- a/api/src/main/java/org/apache/iceberg/expressions/Expression.java
+++ b/api/src/main/java/org/apache/iceberg/expressions/Expression.java
@@ -53,7 +53,7 @@ public interface Expression extends Serializable {
public static Operation fromString(String operationType) {
Preconditions.checkArgument(null != operationType, "Invalid operation
type: null");
try {
- return
Expression.Operation.valueOf(operationType.toUpperCase(Locale.ENGLISH));
+ return
Expression.Operation.valueOf(operationType.toUpperCase(Locale.ROOT));
} catch (IllegalArgumentException e) {
throw new IllegalArgumentException(
String.format("Invalid operation type: %s", operationType), e);
diff --git a/api/src/main/java/org/apache/iceberg/metrics/MetricsContext.java
b/api/src/main/java/org/apache/iceberg/metrics/MetricsContext.java
index 73713d9970..e218599564 100644
--- a/api/src/main/java/org/apache/iceberg/metrics/MetricsContext.java
+++ b/api/src/main/java/org/apache/iceberg/metrics/MetricsContext.java
@@ -48,7 +48,7 @@ public interface MetricsContext extends Serializable {
public static Unit fromDisplayName(String displayName) {
Preconditions.checkArgument(null != displayName, "Invalid unit: null");
try {
- return Unit.valueOf(displayName.toUpperCase(Locale.ENGLISH));
+ return Unit.valueOf(displayName.toUpperCase(Locale.ROOT));
} catch (IllegalArgumentException e) {
throw new IllegalArgumentException(String.format("Invalid unit: %s",
displayName), e);
}
diff --git a/api/src/main/java/org/apache/iceberg/transforms/Transforms.java
b/api/src/main/java/org/apache/iceberg/transforms/Transforms.java
index a3a6a3f632..d204e1719f 100644
--- a/api/src/main/java/org/apache/iceberg/transforms/Transforms.java
+++ b/api/src/main/java/org/apache/iceberg/transforms/Transforms.java
@@ -83,7 +83,7 @@ public class Transforms {
}
}
- String lowerTransform = transform.toLowerCase(Locale.ENGLISH);
+ String lowerTransform = transform.toLowerCase(Locale.ROOT);
switch (lowerTransform) {
case "identity":
return Identity.get(type);
diff --git a/api/src/main/java/org/apache/iceberg/types/CheckCompatibility.java
b/api/src/main/java/org/apache/iceberg/types/CheckCompatibility.java
index 725f7f4256..3b3a38ff5a 100644
--- a/api/src/main/java/org/apache/iceberg/types/CheckCompatibility.java
+++ b/api/src/main/java/org/apache/iceberg/types/CheckCompatibility.java
@@ -270,7 +270,7 @@ public class CheckCompatibility extends
TypeUtil.CustomOrderSchemaVisitor<List<S
return ImmutableList.of(
String.format(
": %s cannot be read as a %s",
- currentType.typeId().toString().toLowerCase(Locale.ENGLISH),
readPrimitive));
+ currentType.typeId().toString().toLowerCase(Locale.ROOT),
readPrimitive));
}
if (!TypeUtil.isPromotionAllowed(currentType.asPrimitiveType(),
readPrimitive)) {
diff --git a/api/src/main/java/org/apache/iceberg/types/EdgeAlgorithm.java
b/api/src/main/java/org/apache/iceberg/types/EdgeAlgorithm.java
index 5ddc55c64a..8c4bb63b50 100644
--- a/api/src/main/java/org/apache/iceberg/types/EdgeAlgorithm.java
+++ b/api/src/main/java/org/apache/iceberg/types/EdgeAlgorithm.java
@@ -47,7 +47,7 @@ public enum EdgeAlgorithm {
public static EdgeAlgorithm fromName(String algorithmName) {
Preconditions.checkNotNull(algorithmName, "Invalid edge interpolation
algorithm: null");
try {
- return EdgeAlgorithm.valueOf(algorithmName.toUpperCase(Locale.ENGLISH));
+ return EdgeAlgorithm.valueOf(algorithmName.toUpperCase(Locale.ROOT));
} catch (IllegalArgumentException e) {
throw new IllegalArgumentException(
String.format("Invalid edge interpolation algorithm: %s",
algorithmName), e);
@@ -56,6 +56,6 @@ public enum EdgeAlgorithm {
@Override
public String toString() {
- return name().toLowerCase(Locale.ENGLISH);
+ return name().toLowerCase(Locale.ROOT);
}
}
diff --git
a/aws/src/integration/java/org/apache/iceberg/aws/glue/TestGlueCatalogTable.java
b/aws/src/integration/java/org/apache/iceberg/aws/glue/TestGlueCatalogTable.java
index cb015b79fb..5fb01a5a56 100644
---
a/aws/src/integration/java/org/apache/iceberg/aws/glue/TestGlueCatalogTable.java
+++
b/aws/src/integration/java/org/apache/iceberg/aws/glue/TestGlueCatalogTable.java
@@ -99,7 +99,7 @@ public class TestGlueCatalogTable extends GlueTestBase {
assertThat(response.table().parameters())
.containsEntry(
BaseMetastoreTableOperations.TABLE_TYPE_PROP,
-
BaseMetastoreTableOperations.ICEBERG_TABLE_TYPE_VALUE.toUpperCase(Locale.ENGLISH))
+
BaseMetastoreTableOperations.ICEBERG_TABLE_TYPE_VALUE.toUpperCase(Locale.ROOT))
.containsKey(BaseMetastoreTableOperations.METADATA_LOCATION_PROP);
assertThat(response.table().storageDescriptor().columns()).hasSameSizeAs(schema.columns());
assertThat(response.table().partitionKeys()).hasSameSizeAs(partitionSpec.fields());
diff --git
a/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbTableOperations.java
b/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbTableOperations.java
index a1a330b118..dfe127e3bc 100644
---
a/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbTableOperations.java
+++
b/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbTableOperations.java
@@ -180,7 +180,7 @@ class DynamoDbTableOperations extends
BaseMetastoreTableOperations {
GetItemResponse response, String newMetadataLocation) {
Map<String, String> properties =
response.hasItem() ? getProperties(response) : Maps.newHashMap();
- properties.put(TABLE_TYPE_PROP,
ICEBERG_TABLE_TYPE_VALUE.toUpperCase(Locale.ENGLISH));
+ properties.put(TABLE_TYPE_PROP,
ICEBERG_TABLE_TYPE_VALUE.toUpperCase(Locale.ROOT));
properties.put(METADATA_LOCATION_PROP, newMetadataLocation);
if (currentMetadataLocation() != null &&
!currentMetadataLocation().isEmpty()) {
properties.put(PREVIOUS_METADATA_LOCATION_PROP,
currentMetadataLocation());
diff --git
a/aws/src/main/java/org/apache/iceberg/aws/glue/GlueTableOperations.java
b/aws/src/main/java/org/apache/iceberg/aws/glue/GlueTableOperations.java
index 4c63dfdb2a..f38ee8da8b 100644
--- a/aws/src/main/java/org/apache/iceberg/aws/glue/GlueTableOperations.java
+++ b/aws/src/main/java/org/apache/iceberg/aws/glue/GlueTableOperations.java
@@ -291,7 +291,7 @@ class GlueTableOperations extends
BaseMetastoreTableOperations {
private Map<String, String> prepareProperties(Table glueTable, String
newMetadataLocation) {
Map<String, String> properties =
glueTable != null ? Maps.newHashMap(glueTable.parameters()) :
Maps.newHashMap();
- properties.put(TABLE_TYPE_PROP,
ICEBERG_TABLE_TYPE_VALUE.toUpperCase(Locale.ENGLISH));
+ properties.put(TABLE_TYPE_PROP,
ICEBERG_TABLE_TYPE_VALUE.toUpperCase(Locale.ROOT));
properties.put(METADATA_LOCATION_PROP, newMetadataLocation);
if (currentMetadataLocation() != null &&
!currentMetadataLocation().isEmpty()) {
properties.put(PREVIOUS_METADATA_LOCATION_PROP,
currentMetadataLocation());
diff --git
a/aws/src/main/java/org/apache/iceberg/aws/glue/IcebergToGlueConverter.java
b/aws/src/main/java/org/apache/iceberg/aws/glue/IcebergToGlueConverter.java
index 2363dc4e2a..ef62ae029a 100644
--- a/aws/src/main/java/org/apache/iceberg/aws/glue/IcebergToGlueConverter.java
+++ b/aws/src/main/java/org/apache/iceberg/aws/glue/IcebergToGlueConverter.java
@@ -339,7 +339,7 @@ class IcebergToGlueConverter {
return String.format(
"map<%s,%s>", toTypeString(mapType.keyType()),
toTypeString(mapType.valueType()));
default:
- return type.typeId().name().toLowerCase(Locale.ENGLISH);
+ return type.typeId().name().toLowerCase(Locale.ROOT);
}
}
diff --git a/aws/src/main/java/org/apache/iceberg/aws/s3/S3RequestUtil.java
b/aws/src/main/java/org/apache/iceberg/aws/s3/S3RequestUtil.java
index 235a3532a4..afdae1dd99 100644
--- a/aws/src/main/java/org/apache/iceberg/aws/s3/S3RequestUtil.java
+++ b/aws/src/main/java/org/apache/iceberg/aws/s3/S3RequestUtil.java
@@ -102,7 +102,7 @@ public class S3RequestUtil {
Function<String, S3Request.Builder> customKeySetter,
Function<String, S3Request.Builder> customMd5Setter) {
- switch (s3FileIOProperties.sseType().toLowerCase(Locale.ENGLISH)) {
+ switch (s3FileIOProperties.sseType().toLowerCase(Locale.ROOT)) {
case S3FileIOProperties.SSE_TYPE_NONE:
break;
diff --git
a/bigquery/src/main/java/org/apache/iceberg/gcp/bigquery/BigQueryMetastoreClientImpl.java
b/bigquery/src/main/java/org/apache/iceberg/gcp/bigquery/BigQueryMetastoreClientImpl.java
index bb3782a9d7..508d50b301 100644
---
a/bigquery/src/main/java/org/apache/iceberg/gcp/bigquery/BigQueryMetastoreClientImpl.java
+++
b/bigquery/src/main/java/org/apache/iceberg/gcp/bigquery/BigQueryMetastoreClientImpl.java
@@ -434,7 +434,7 @@ public final class BigQueryMetastoreClientImpl implements
BigQueryMetastoreClien
if (response.getStatusCode() == HttpStatusCodes.STATUS_CODE_NOT_FOUND) {
String responseString = response.parseAsString();
- if (responseString.toLowerCase(Locale.ENGLISH).contains("not found:
connection")) {
+ if (responseString.toLowerCase(Locale.ROOT).contains("not found:
connection")) {
throw new BadRequestException("%s", responseString);
}
diff --git a/core/src/main/java/org/apache/iceberg/CatalogUtil.java
b/core/src/main/java/org/apache/iceberg/CatalogUtil.java
index 2b400ccebc..4fa9fc30f1 100644
--- a/core/src/main/java/org/apache/iceberg/CatalogUtil.java
+++ b/core/src/main/java/org/apache/iceberg/CatalogUtil.java
@@ -314,7 +314,7 @@ public class CatalogUtil {
if (catalogImpl == null) {
String catalogType =
PropertyUtil.propertyAsString(options, ICEBERG_CATALOG_TYPE,
ICEBERG_CATALOG_TYPE_HIVE);
- switch (catalogType.toLowerCase(Locale.ENGLISH)) {
+ switch (catalogType.toLowerCase(Locale.ROOT)) {
case ICEBERG_CATALOG_TYPE_HIVE:
catalogImpl = ICEBERG_CATALOG_HIVE;
break;
diff --git a/core/src/main/java/org/apache/iceberg/ContentFileParser.java
b/core/src/main/java/org/apache/iceberg/ContentFileParser.java
index f024a24b18..0499fef6d9 100644
--- a/core/src/main/java/org/apache/iceberg/ContentFileParser.java
+++ b/core/src/main/java/org/apache/iceberg/ContentFileParser.java
@@ -90,11 +90,10 @@ public class ContentFileParser {
generator.writeNumberField(SPEC_ID, contentFile.specId());
// Since 1.11, we serialize content as lowercase kebab-case values like
"equality-deletes"
generator.writeStringField(
- CONTENT,
contentFile.content().name().toLowerCase(Locale.ENGLISH).replace('_', '-'));
+ CONTENT,
contentFile.content().name().toLowerCase(Locale.ROOT).replace('_', '-'));
generator.writeStringField(FILE_PATH, contentFile.location());
// Since 1.11, we serialize format as lower-case strings like "parquet"
- generator.writeStringField(
- FILE_FORMAT, contentFile.format().name().toLowerCase(Locale.ENGLISH));
+ generator.writeStringField(FILE_FORMAT,
contentFile.format().name().toLowerCase(Locale.ROOT));
if (contentFile.partition() != null) {
generator.writeFieldName(PARTITION);
diff --git a/core/src/main/java/org/apache/iceberg/IsolationLevel.java
b/core/src/main/java/org/apache/iceberg/IsolationLevel.java
index bf7098b6e9..85132e9c39 100644
--- a/core/src/main/java/org/apache/iceberg/IsolationLevel.java
+++ b/core/src/main/java/org/apache/iceberg/IsolationLevel.java
@@ -43,7 +43,7 @@ public enum IsolationLevel {
public static IsolationLevel fromName(String levelName) {
Preconditions.checkArgument(levelName != null, "Invalid isolation level:
null");
try {
- return IsolationLevel.valueOf(levelName.toUpperCase(Locale.ENGLISH));
+ return IsolationLevel.valueOf(levelName.toUpperCase(Locale.ROOT));
} catch (IllegalArgumentException e) {
throw new IllegalArgumentException(
String.format("Invalid isolation level: %s", levelName), e);
diff --git a/core/src/main/java/org/apache/iceberg/MetricsModes.java
b/core/src/main/java/org/apache/iceberg/MetricsModes.java
index d3f6dfa3cc..3bb1939e05 100644
--- a/core/src/main/java/org/apache/iceberg/MetricsModes.java
+++ b/core/src/main/java/org/apache/iceberg/MetricsModes.java
@@ -45,7 +45,7 @@ public class MetricsModes {
return Full.get();
}
- Matcher truncateMatcher =
TRUNCATE.matcher(mode.toLowerCase(Locale.ENGLISH));
+ Matcher truncateMatcher = TRUNCATE.matcher(mode.toLowerCase(Locale.ROOT));
if (truncateMatcher.matches()) {
int length = Integer.parseInt(truncateMatcher.group(1));
return Truncate.withLength(length);
diff --git a/core/src/main/java/org/apache/iceberg/SnapshotRefParser.java
b/core/src/main/java/org/apache/iceberg/SnapshotRefParser.java
index 059bed9b18..cde9f544de 100644
--- a/core/src/main/java/org/apache/iceberg/SnapshotRefParser.java
+++ b/core/src/main/java/org/apache/iceberg/SnapshotRefParser.java
@@ -46,7 +46,7 @@ public class SnapshotRefParser {
public static void toJson(SnapshotRef ref, JsonGenerator generator) throws
IOException {
generator.writeStartObject();
generator.writeNumberField(SNAPSHOT_ID, ref.snapshotId());
- generator.writeStringField(TYPE,
ref.type().name().toLowerCase(Locale.ENGLISH));
+ generator.writeStringField(TYPE,
ref.type().name().toLowerCase(Locale.ROOT));
JsonUtil.writeIntegerFieldIf(
ref.minSnapshotsToKeep() != null,
MIN_SNAPSHOTS_TO_KEEP,
diff --git a/core/src/main/java/org/apache/iceberg/SortOrderParser.java
b/core/src/main/java/org/apache/iceberg/SortOrderParser.java
index 53d7e5090c..74126162aa 100644
--- a/core/src/main/java/org/apache/iceberg/SortOrderParser.java
+++ b/core/src/main/java/org/apache/iceberg/SortOrderParser.java
@@ -56,7 +56,7 @@ public class SortOrderParser {
}
private static String toJson(SortDirection direction) {
- return direction.toString().toLowerCase(Locale.ENGLISH);
+ return direction.toString().toLowerCase(Locale.ROOT);
}
private static String toJson(NullOrder nullOrder) {
diff --git a/core/src/main/java/org/apache/iceberg/TableMetadataParser.java
b/core/src/main/java/org/apache/iceberg/TableMetadataParser.java
index cc4dd5989c..6f0a857ebc 100644
--- a/core/src/main/java/org/apache/iceberg/TableMetadataParser.java
+++ b/core/src/main/java/org/apache/iceberg/TableMetadataParser.java
@@ -60,7 +60,7 @@ public class TableMetadataParser {
public static Codec fromName(String codecName) {
Preconditions.checkArgument(codecName != null, "Codec name is null");
try {
- return Codec.valueOf(codecName.toUpperCase(Locale.ENGLISH));
+ return Codec.valueOf(codecName.toUpperCase(Locale.ROOT));
} catch (IllegalArgumentException e) {
throw new IllegalArgumentException(String.format("Invalid codec name:
%s", codecName), e);
}
diff --git a/core/src/main/java/org/apache/iceberg/avro/Avro.java
b/core/src/main/java/org/apache/iceberg/avro/Avro.java
index 4a5136f58e..96e08acdb1 100644
--- a/core/src/main/java/org/apache/iceberg/avro/Avro.java
+++ b/core/src/main/java/org/apache/iceberg/avro/Avro.java
@@ -248,7 +248,7 @@ public class Avro {
private static CodecFactory toCodec(String codecAsString, String
compressionLevel) {
CodecFactory codecFactory;
try {
- switch (Codec.valueOf(codecAsString.toUpperCase(Locale.ENGLISH))) {
+ switch (Codec.valueOf(codecAsString.toUpperCase(Locale.ROOT))) {
case UNCOMPRESSED:
codecFactory = CodecFactory.nullCodec();
break;
diff --git
a/core/src/main/java/org/apache/iceberg/expressions/ExpressionParser.java
b/core/src/main/java/org/apache/iceberg/expressions/ExpressionParser.java
index 9bb5b7d05f..484214c40c 100644
--- a/core/src/main/java/org/apache/iceberg/expressions/ExpressionParser.java
+++ b/core/src/main/java/org/apache/iceberg/expressions/ExpressionParser.java
@@ -230,7 +230,7 @@ public class ExpressionParser {
}
private String operationType(Expression.Operation op) {
- return op.toString().replaceAll("_", "-").toLowerCase(Locale.ENGLISH);
+ return op.toString().replaceAll("_", "-").toLowerCase(Locale.ROOT);
}
private void term(Term term) throws IOException {
diff --git
a/core/src/main/java/org/apache/iceberg/metrics/TimerResultParser.java
b/core/src/main/java/org/apache/iceberg/metrics/TimerResultParser.java
index 52235d0307..aafcf71fcc 100644
--- a/core/src/main/java/org/apache/iceberg/metrics/TimerResultParser.java
+++ b/core/src/main/java/org/apache/iceberg/metrics/TimerResultParser.java
@@ -52,7 +52,7 @@ class TimerResultParser {
gen.writeStartObject();
gen.writeNumberField(COUNT, timer.count());
- gen.writeStringField(TIME_UNIT,
timer.timeUnit().name().toLowerCase(Locale.ENGLISH));
+ gen.writeStringField(TIME_UNIT,
timer.timeUnit().name().toLowerCase(Locale.ROOT));
gen.writeNumberField(TOTAL_DURATION, fromDuration(timer.totalDuration(),
timer.timeUnit()));
gen.writeEndObject();
}
@@ -112,7 +112,7 @@ class TimerResultParser {
private static TimeUnit toTimeUnit(String timeUnit) {
try {
- return TimeUnit.valueOf(timeUnit.toUpperCase(Locale.ENGLISH));
+ return TimeUnit.valueOf(timeUnit.toUpperCase(Locale.ROOT));
} catch (IllegalArgumentException e) {
throw new IllegalArgumentException(String.format("Invalid time unit:
%s", timeUnit), e);
}
diff --git
a/core/src/main/java/org/apache/iceberg/rest/requests/ReportMetricsRequest.java
b/core/src/main/java/org/apache/iceberg/rest/requests/ReportMetricsRequest.java
index 01f04f0e20..7c192b0f2c 100644
---
a/core/src/main/java/org/apache/iceberg/rest/requests/ReportMetricsRequest.java
+++
b/core/src/main/java/org/apache/iceberg/rest/requests/ReportMetricsRequest.java
@@ -37,7 +37,7 @@ public interface ReportMetricsRequest extends RESTRequest {
static ReportType fromString(String reportType) {
Preconditions.checkArgument(null != reportType, "Invalid report type:
null");
try {
- return ReportType.valueOf(reportType.toUpperCase(Locale.ENGLISH));
+ return ReportType.valueOf(reportType.toUpperCase(Locale.ROOT));
} catch (IllegalArgumentException e) {
return UNKNOWN;
}
diff --git
a/core/src/main/java/org/apache/iceberg/rest/requests/ReportMetricsRequestParser.java
b/core/src/main/java/org/apache/iceberg/rest/requests/ReportMetricsRequestParser.java
index 9bfdc4a8e0..4c9a1ddafc 100644
---
a/core/src/main/java/org/apache/iceberg/rest/requests/ReportMetricsRequestParser.java
+++
b/core/src/main/java/org/apache/iceberg/rest/requests/ReportMetricsRequestParser.java
@@ -63,7 +63,7 @@ public class ReportMetricsRequestParser {
}
private static String fromReportType(ReportType reportType) {
- return reportType.name().replaceAll("_", "-").toLowerCase(Locale.ENGLISH);
+ return reportType.name().replaceAll("_", "-").toLowerCase(Locale.ROOT);
}
private static ReportType toReportType(String type) {
diff --git
a/core/src/main/java/org/apache/iceberg/view/ViewRepresentationParser.java
b/core/src/main/java/org/apache/iceberg/view/ViewRepresentationParser.java
index 79d50701ea..03a6f5386f 100644
--- a/core/src/main/java/org/apache/iceberg/view/ViewRepresentationParser.java
+++ b/core/src/main/java/org/apache/iceberg/view/ViewRepresentationParser.java
@@ -33,7 +33,7 @@ class ViewRepresentationParser {
static void toJson(ViewRepresentation representation, JsonGenerator
generator)
throws IOException {
Preconditions.checkArgument(representation != null, "Invalid view
representation: null");
- switch (representation.type().toLowerCase(Locale.ENGLISH)) {
+ switch (representation.type().toLowerCase(Locale.ROOT)) {
case ViewRepresentation.Type.SQL:
SQLViewRepresentationParser.toJson((SQLViewRepresentation)
representation, generator);
break;
@@ -57,7 +57,7 @@ class ViewRepresentationParser {
Preconditions.checkArgument(node != null, "Cannot parse view
representation from null object");
Preconditions.checkArgument(
node.isObject(), "Cannot parse view representation from non-object:
%s", node);
- String type = JsonUtil.getString(TYPE, node).toLowerCase(Locale.ENGLISH);
+ String type = JsonUtil.getString(TYPE, node).toLowerCase(Locale.ROOT);
switch (type) {
case ViewRepresentation.Type.SQL:
return SQLViewRepresentationParser.fromJson(node);
diff --git
a/flink/v1.20/flink/src/main/java/org/apache/iceberg/flink/FlinkCatalogFactory.java
b/flink/v1.20/flink/src/main/java/org/apache/iceberg/flink/FlinkCatalogFactory.java
index fe4008a13c..8dbc80d3d1 100644
---
a/flink/v1.20/flink/src/main/java/org/apache/iceberg/flink/FlinkCatalogFactory.java
+++
b/flink/v1.20/flink/src/main/java/org/apache/iceberg/flink/FlinkCatalogFactory.java
@@ -99,7 +99,7 @@ public class FlinkCatalogFactory implements CatalogFactory {
}
String catalogType = properties.getOrDefault(ICEBERG_CATALOG_TYPE,
ICEBERG_CATALOG_TYPE_HIVE);
- switch (catalogType.toLowerCase(Locale.ENGLISH)) {
+ switch (catalogType.toLowerCase(Locale.ROOT)) {
case ICEBERG_CATALOG_TYPE_HIVE:
// The values of properties 'uri', 'warehouse', 'hive-conf-dir' are
allowed to be null, in
// that case it will
diff --git
a/flink/v2.0/flink/src/main/java/org/apache/iceberg/flink/FlinkCatalogFactory.java
b/flink/v2.0/flink/src/main/java/org/apache/iceberg/flink/FlinkCatalogFactory.java
index c1889dc6bd..24e2bdbba3 100644
---
a/flink/v2.0/flink/src/main/java/org/apache/iceberg/flink/FlinkCatalogFactory.java
+++
b/flink/v2.0/flink/src/main/java/org/apache/iceberg/flink/FlinkCatalogFactory.java
@@ -99,7 +99,7 @@ public class FlinkCatalogFactory implements CatalogFactory {
}
String catalogType = properties.getOrDefault(ICEBERG_CATALOG_TYPE,
ICEBERG_CATALOG_TYPE_HIVE);
- switch (catalogType.toLowerCase(Locale.ENGLISH)) {
+ switch (catalogType.toLowerCase(Locale.ROOT)) {
case ICEBERG_CATALOG_TYPE_HIVE:
// The values of properties 'uri', 'warehouse', 'hive-conf-dir' are
allowed to be null, in
// that case it will
diff --git
a/flink/v2.1/flink/src/main/java/org/apache/iceberg/flink/FlinkCatalogFactory.java
b/flink/v2.1/flink/src/main/java/org/apache/iceberg/flink/FlinkCatalogFactory.java
index c1889dc6bd..24e2bdbba3 100644
---
a/flink/v2.1/flink/src/main/java/org/apache/iceberg/flink/FlinkCatalogFactory.java
+++
b/flink/v2.1/flink/src/main/java/org/apache/iceberg/flink/FlinkCatalogFactory.java
@@ -99,7 +99,7 @@ public class FlinkCatalogFactory implements CatalogFactory {
}
String catalogType = properties.getOrDefault(ICEBERG_CATALOG_TYPE,
ICEBERG_CATALOG_TYPE_HIVE);
- switch (catalogType.toLowerCase(Locale.ENGLISH)) {
+ switch (catalogType.toLowerCase(Locale.ROOT)) {
case ICEBERG_CATALOG_TYPE_HIVE:
// The values of properties 'uri', 'warehouse', 'hive-conf-dir' are
allowed to be null, in
// that case it will
diff --git
a/hive-metastore/src/main/java/org/apache/iceberg/hive/HMSTablePropertyHelper.java
b/hive-metastore/src/main/java/org/apache/iceberg/hive/HMSTablePropertyHelper.java
index 1895ecf831..1e4896be2c 100644
---
a/hive-metastore/src/main/java/org/apache/iceberg/hive/HMSTablePropertyHelper.java
+++
b/hive-metastore/src/main/java/org/apache/iceberg/hive/HMSTablePropertyHelper.java
@@ -105,7 +105,7 @@ public class HMSTablePropertyHelper {
obsoleteProps,
currentLocation,
parameters,
-
BaseMetastoreTableOperations.ICEBERG_TABLE_TYPE_VALUE.toUpperCase(Locale.ENGLISH),
+
BaseMetastoreTableOperations.ICEBERG_TABLE_TYPE_VALUE.toUpperCase(Locale.ROOT),
metadata.schema(),
maxHiveTablePropertySize);
setStorageHandler(parameters, hiveEngineEnabled);
@@ -151,7 +151,7 @@ public class HMSTablePropertyHelper {
obsoleteProps,
currentLocation,
parameters,
- HiveOperationsBase.ICEBERG_VIEW_TYPE_VALUE.toUpperCase(Locale.ENGLISH),
+ HiveOperationsBase.ICEBERG_VIEW_TYPE_VALUE.toUpperCase(Locale.ROOT),
metadata.schema(),
maxHiveTablePropertySize);
tbl.setParameters(parameters);
diff --git a/nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java
b/nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java
index cce6fcf144..dd9774fe58 100644
--- a/nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java
+++ b/nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java
@@ -422,7 +422,7 @@ public class NessieCatalog extends BaseMetastoreViewCatalog
fromReference.equalsIgnoreCase(toReference),
"Cannot rename %s '%s' on reference '%s' to '%s' on reference '%s':"
+ " source and target references must be the same.",
- NessieUtil.contentTypeString(type).toLowerCase(Locale.ENGLISH),
+ NessieUtil.contentTypeString(type).toLowerCase(Locale.ROOT),
fromTableReference.getName(),
fromReference,
toTableReference.getName(),
diff --git
a/nessie/src/main/java/org/apache/iceberg/nessie/NessieIcebergClient.java
b/nessie/src/main/java/org/apache/iceberg/nessie/NessieIcebergClient.java
index f86e49c912..a59db82daa 100644
--- a/nessie/src/main/java/org/apache/iceberg/nessie/NessieIcebergClient.java
+++ b/nessie/src/main/java/org/apache/iceberg/nessie/NessieIcebergClient.java
@@ -169,7 +169,7 @@ public class NessieIcebergClient implements AutoCloseable {
throw new NoSuchNamespaceException(
ex,
"Unable to list %ss due to missing ref '%s'",
- NessieUtil.contentTypeString(type).toLowerCase(Locale.ENGLISH),
+ NessieUtil.contentTypeString(type).toLowerCase(Locale.ROOT),
getRef().getName());
}
}
@@ -466,7 +466,7 @@ public class NessieIcebergClient implements AutoCloseable {
IcebergContent existingToContent = fetchContent(to);
validateToContentForRename(from, to, existingToContent);
- String contentType =
NessieUtil.contentTypeString(type).toLowerCase(Locale.ENGLISH);
+ String contentType =
NessieUtil.contentTypeString(type).toLowerCase(Locale.ROOT);
try {
commitRetry(
String.format("Iceberg rename %s from '%s' to '%s'", contentType,
from, to),
@@ -566,7 +566,7 @@ public class NessieIcebergClient implements AutoCloseable {
identifier, NessieUtil.contentTypeString(type)));
}
- String contentType =
NessieUtil.contentTypeString(type).toLowerCase(Locale.ENGLISH);
+ String contentType =
NessieUtil.contentTypeString(type).toLowerCase(Locale.ROOT);
if (purge) {
LOG.info(
diff --git a/orc/src/main/java/org/apache/iceberg/orc/ORC.java
b/orc/src/main/java/org/apache/iceberg/orc/ORC.java
index 9fb8052469..166acf5961 100644
--- a/orc/src/main/java/org/apache/iceberg/orc/ORC.java
+++ b/orc/src/main/java/org/apache/iceberg/orc/ORC.java
@@ -376,7 +376,7 @@ public class ORC {
private static CompressionKind toCompressionKind(String codecAsString) {
try {
- return
CompressionKind.valueOf(codecAsString.toUpperCase(Locale.ENGLISH));
+ return
CompressionKind.valueOf(codecAsString.toUpperCase(Locale.ROOT));
} catch (IllegalArgumentException e) {
throw new IllegalArgumentException("Unsupported compression codec: "
+ codecAsString);
}
@@ -384,7 +384,7 @@ public class ORC {
private static CompressionStrategy toCompressionStrategy(String
strategyAsString) {
try {
- return
CompressionStrategy.valueOf(strategyAsString.toUpperCase(Locale.ENGLISH));
+ return
CompressionStrategy.valueOf(strategyAsString.toUpperCase(Locale.ROOT));
} catch (IllegalArgumentException e) {
throw new IllegalArgumentException(
"Unsupported compression strategy: " + strategyAsString);
diff --git a/parquet/src/main/java/org/apache/iceberg/parquet/Parquet.java
b/parquet/src/main/java/org/apache/iceberg/parquet/Parquet.java
index 63fe858641..011dcb95cb 100644
--- a/parquet/src/main/java/org/apache/iceberg/parquet/Parquet.java
+++ b/parquet/src/main/java/org/apache/iceberg/parquet/Parquet.java
@@ -785,7 +785,7 @@ public class Parquet {
private static CompressionCodecName toCodec(String codecAsString) {
try {
- return
CompressionCodecName.valueOf(codecAsString.toUpperCase(Locale.ENGLISH));
+ return
CompressionCodecName.valueOf(codecAsString.toUpperCase(Locale.ROOT));
} catch (IllegalArgumentException e) {
throw new IllegalArgumentException("Unsupported compression codec: "
+ codecAsString);
}
diff --git
a/spark/v3.5/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/parser/extensions/IcebergSqlExtensionsAstBuilder.scala
b/spark/v3.5/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/parser/extensions/IcebergSqlExtensionsAstBuilder.scala
index f87733e6b7..9196292aef 100644
---
a/spark/v3.5/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/parser/extensions/IcebergSqlExtensionsAstBuilder.scala
+++
b/spark/v3.5/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/parser/extensions/IcebergSqlExtensionsAstBuilder.scala
@@ -120,13 +120,13 @@ class IcebergSqlExtensionsAstBuilder(delegate:
ParserInterface)
.flatMap(retention => Option(retention.maxSnapshotAge()))
.map(retention =>
TimeUnit
- .valueOf(retention.timeUnit().getText.toUpperCase(Locale.ENGLISH))
+ .valueOf(retention.timeUnit().getText.toUpperCase(Locale.ROOT))
.toMillis(retention.number().getText.toLong))
val branchRetention =
branchOptionsContext.flatMap(branchOptions =>
Option(branchOptions.refRetain()))
val branchRefAgeMs = branchRetention.map(retain =>
TimeUnit
- .valueOf(retain.timeUnit().getText.toUpperCase(Locale.ENGLISH))
+ .valueOf(retain.timeUnit().getText.toUpperCase(Locale.ROOT))
.toMillis(retain.number().getText.toLong))
val create = createOrReplaceBranchClause.CREATE() != null
val replace = ctx.createReplaceBranchClause().REPLACE() != null
@@ -160,7 +160,7 @@ class IcebergSqlExtensionsAstBuilder(delegate:
ParserInterface)
val tagRetain = tagOptionsContext.flatMap(tagOptions =>
Option(tagOptions.refRetain()))
val tagRefAgeMs = tagRetain.map(retain =>
TimeUnit
- .valueOf(retain.timeUnit().getText.toUpperCase(Locale.ENGLISH))
+ .valueOf(retain.timeUnit().getText.toUpperCase(Locale.ROOT))
.toMillis(retain.number().getText.toLong))
val tagOptions = TagOptions(snapshotId, tagRefAgeMs)
diff --git
a/spark/v3.5/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestTagDDL.java
b/spark/v3.5/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestTagDDL.java
index 79d5b0ab41..3cbbd1d16d 100644
---
a/spark/v3.5/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestTagDDL.java
+++
b/spark/v3.5/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestTagDDL.java
@@ -89,7 +89,7 @@ public class TestTagDDL extends ExtensionsTestBase {
.isEqualTo(firstSnapshotId);
assertThat(ref.maxRefAgeMs().longValue())
.as("The tag needs to have the correct max ref age.")
-
.isEqualTo(TimeUnit.valueOf(timeUnit.toUpperCase(Locale.ENGLISH)).toMillis(maxRefAge));
+
.isEqualTo(TimeUnit.valueOf(timeUnit.toUpperCase(Locale.ROOT)).toMillis(maxRefAge));
}
String tagName = "t1";
diff --git
a/spark/v4.0/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/parser/extensions/IcebergSqlExtensionsAstBuilder.scala
b/spark/v4.0/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/parser/extensions/IcebergSqlExtensionsAstBuilder.scala
index 724101cfe1..fe9da2f165 100644
---
a/spark/v4.0/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/parser/extensions/IcebergSqlExtensionsAstBuilder.scala
+++
b/spark/v4.0/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/parser/extensions/IcebergSqlExtensionsAstBuilder.scala
@@ -107,13 +107,13 @@ class IcebergSqlExtensionsAstBuilder(delegate:
ParserInterface)
.flatMap(retention => Option(retention.maxSnapshotAge()))
.map(retention =>
TimeUnit
- .valueOf(retention.timeUnit().getText.toUpperCase(Locale.ENGLISH))
+ .valueOf(retention.timeUnit().getText.toUpperCase(Locale.ROOT))
.toMillis(retention.number().getText.toLong))
val branchRetention =
branchOptionsContext.flatMap(branchOptions =>
Option(branchOptions.refRetain()))
val branchRefAgeMs = branchRetention.map(retain =>
TimeUnit
- .valueOf(retain.timeUnit().getText.toUpperCase(Locale.ENGLISH))
+ .valueOf(retain.timeUnit().getText.toUpperCase(Locale.ROOT))
.toMillis(retain.number().getText.toLong))
val create = createOrReplaceBranchClause.CREATE() != null
val replace = ctx.createReplaceBranchClause().REPLACE() != null
@@ -147,7 +147,7 @@ class IcebergSqlExtensionsAstBuilder(delegate:
ParserInterface)
val tagRetain = tagOptionsContext.flatMap(tagOptions =>
Option(tagOptions.refRetain()))
val tagRefAgeMs = tagRetain.map(retain =>
TimeUnit
- .valueOf(retain.timeUnit().getText.toUpperCase(Locale.ENGLISH))
+ .valueOf(retain.timeUnit().getText.toUpperCase(Locale.ROOT))
.toMillis(retain.number().getText.toLong))
val tagOptions = TagOptions(snapshotId, tagRefAgeMs)
diff --git
a/spark/v4.0/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestTagDDL.java
b/spark/v4.0/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestTagDDL.java
index 79d5b0ab41..3cbbd1d16d 100644
---
a/spark/v4.0/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestTagDDL.java
+++
b/spark/v4.0/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestTagDDL.java
@@ -89,7 +89,7 @@ public class TestTagDDL extends ExtensionsTestBase {
.isEqualTo(firstSnapshotId);
assertThat(ref.maxRefAgeMs().longValue())
.as("The tag needs to have the correct max ref age.")
-
.isEqualTo(TimeUnit.valueOf(timeUnit.toUpperCase(Locale.ENGLISH)).toMillis(maxRefAge));
+
.isEqualTo(TimeUnit.valueOf(timeUnit.toUpperCase(Locale.ROOT)).toMillis(maxRefAge));
}
String tagName = "t1";
diff --git
a/spark/v4.1/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/parser/extensions/IcebergSqlExtensionsAstBuilder.scala
b/spark/v4.1/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/parser/extensions/IcebergSqlExtensionsAstBuilder.scala
index 724101cfe1..fe9da2f165 100644
---
a/spark/v4.1/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/parser/extensions/IcebergSqlExtensionsAstBuilder.scala
+++
b/spark/v4.1/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/parser/extensions/IcebergSqlExtensionsAstBuilder.scala
@@ -107,13 +107,13 @@ class IcebergSqlExtensionsAstBuilder(delegate:
ParserInterface)
.flatMap(retention => Option(retention.maxSnapshotAge()))
.map(retention =>
TimeUnit
- .valueOf(retention.timeUnit().getText.toUpperCase(Locale.ENGLISH))
+ .valueOf(retention.timeUnit().getText.toUpperCase(Locale.ROOT))
.toMillis(retention.number().getText.toLong))
val branchRetention =
branchOptionsContext.flatMap(branchOptions =>
Option(branchOptions.refRetain()))
val branchRefAgeMs = branchRetention.map(retain =>
TimeUnit
- .valueOf(retain.timeUnit().getText.toUpperCase(Locale.ENGLISH))
+ .valueOf(retain.timeUnit().getText.toUpperCase(Locale.ROOT))
.toMillis(retain.number().getText.toLong))
val create = createOrReplaceBranchClause.CREATE() != null
val replace = ctx.createReplaceBranchClause().REPLACE() != null
@@ -147,7 +147,7 @@ class IcebergSqlExtensionsAstBuilder(delegate:
ParserInterface)
val tagRetain = tagOptionsContext.flatMap(tagOptions =>
Option(tagOptions.refRetain()))
val tagRefAgeMs = tagRetain.map(retain =>
TimeUnit
- .valueOf(retain.timeUnit().getText.toUpperCase(Locale.ENGLISH))
+ .valueOf(retain.timeUnit().getText.toUpperCase(Locale.ROOT))
.toMillis(retain.number().getText.toLong))
val tagOptions = TagOptions(snapshotId, tagRefAgeMs)
diff --git
a/spark/v4.1/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestTagDDL.java
b/spark/v4.1/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestTagDDL.java
index 79d5b0ab41..3cbbd1d16d 100644
---
a/spark/v4.1/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestTagDDL.java
+++
b/spark/v4.1/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestTagDDL.java
@@ -89,7 +89,7 @@ public class TestTagDDL extends ExtensionsTestBase {
.isEqualTo(firstSnapshotId);
assertThat(ref.maxRefAgeMs().longValue())
.as("The tag needs to have the correct max ref age.")
-
.isEqualTo(TimeUnit.valueOf(timeUnit.toUpperCase(Locale.ENGLISH)).toMillis(maxRefAge));
+
.isEqualTo(TimeUnit.valueOf(timeUnit.toUpperCase(Locale.ROOT)).toMillis(maxRefAge));
}
String tagName = "t1";