diff --git a/presto-base-jdbc/src/main/java/com/facebook/presto/plugin/jdbc/BaseJdbcClient.java b/presto-base-jdbc/src/main/java/com/facebook/presto/plugin/jdbc/BaseJdbcClient.java index 906c96f314e8..777c80fad4da 100644 --- a/presto-base-jdbc/src/main/java/com/facebook/presto/plugin/jdbc/BaseJdbcClient.java +++ b/presto-base-jdbc/src/main/java/com/facebook/presto/plugin/jdbc/BaseJdbcClient.java @@ -67,6 +67,7 @@ import static com.google.common.collect.Iterables.getOnlyElement; import static com.google.common.collect.Maps.fromProperties; import static java.util.Collections.nCopies; +import static java.util.Locale.ENGLISH; public class BaseJdbcClient implements JdbcClient @@ -117,7 +118,7 @@ public Set getSchemaNames() ResultSet resultSet = connection.getMetaData().getSchemas()) { ImmutableSet.Builder schemaNames = ImmutableSet.builder(); while (resultSet.next()) { - String schemaName = resultSet.getString("TABLE_SCHEM").toLowerCase(); + String schemaName = resultSet.getString("TABLE_SCHEM").toLowerCase(ENGLISH); // skip internal schemas if (!schemaName.equals("information_schema")) { schemaNames.add(schemaName); @@ -136,7 +137,7 @@ public List getTableNames(@Nullable String schema) try (Connection connection = driver.connect(connectionUrl, connectionProperties)) { DatabaseMetaData metadata = connection.getMetaData(); if (metadata.storesUpperCaseIdentifiers() && (schema != null)) { - schema = schema.toUpperCase(); + schema = schema.toUpperCase(ENGLISH); } try (ResultSet resultSet = getTables(connection, schema, null)) { ImmutableList.Builder list = ImmutableList.builder(); @@ -160,8 +161,8 @@ public JdbcTableHandle getTableHandle(SchemaTableName schemaTableName) String jdbcSchemaName = schemaTableName.getSchemaName(); String jdbcTableName = schemaTableName.getTableName(); if (metadata.storesUpperCaseIdentifiers()) { - jdbcSchemaName = jdbcSchemaName.toUpperCase(); - jdbcTableName = jdbcTableName.toUpperCase(); + jdbcSchemaName = jdbcSchemaName.toUpperCase(ENGLISH); + jdbcTableName = jdbcTableName.toUpperCase(ENGLISH); } try (ResultSet resultSet = getTables(connection, jdbcSchemaName, jdbcTableName)) { List tableHandles = new ArrayList<>(); @@ -284,8 +285,8 @@ public JdbcOutputTableHandle beginCreateTable(ConnectorTableMetadata tableMetada try (Connection connection = driver.connect(connectionUrl, connectionProperties)) { boolean uppercase = connection.getMetaData().storesUpperCaseIdentifiers(); if (uppercase) { - schema = schema.toUpperCase(); - table = table.toUpperCase(); + schema = schema.toUpperCase(ENGLISH); + table = table.toUpperCase(ENGLISH); } String catalog = connection.getCatalog(); @@ -300,7 +301,7 @@ public JdbcOutputTableHandle beginCreateTable(ConnectorTableMetadata tableMetada for (ColumnMetadata column : tableMetadata.getColumns()) { String columnName = column.getName(); if (uppercase) { - columnName = columnName.toUpperCase(); + columnName = columnName.toUpperCase(ENGLISH); } columnNames.add(columnName); columnTypes.add(column.getType()); @@ -377,8 +378,8 @@ protected SchemaTableName getSchemaTableName(ResultSet resultSet) throws SQLException { return new SchemaTableName( - resultSet.getString("TABLE_SCHEM").toLowerCase(), - resultSet.getString("TABLE_NAME").toLowerCase()); + resultSet.getString("TABLE_SCHEM").toLowerCase(ENGLISH), + resultSet.getString("TABLE_NAME").toLowerCase(ENGLISH)); } protected void execute(Connection connection, String query) diff --git a/presto-base-jdbc/src/test/java/com/facebook/presto/plugin/jdbc/MetadataUtil.java b/presto-base-jdbc/src/test/java/com/facebook/presto/plugin/jdbc/MetadataUtil.java index a8ba4a80cf8f..34e11a0e57db 100644 --- a/presto-base-jdbc/src/test/java/com/facebook/presto/plugin/jdbc/MetadataUtil.java +++ b/presto-base-jdbc/src/test/java/com/facebook/presto/plugin/jdbc/MetadataUtil.java @@ -27,6 +27,7 @@ import static com.facebook.presto.spi.type.BigintType.BIGINT; import static com.facebook.presto.spi.type.VarcharType.VARCHAR; import static com.google.common.base.Preconditions.checkArgument; +import static java.util.Locale.ENGLISH; import static org.testng.Assert.assertEquals; final class MetadataUtil @@ -61,7 +62,7 @@ public TestingTypeDeserializer() @Override protected Type _deserialize(String value, DeserializationContext context) { - Type type = types.get(value.toLowerCase()); + Type type = types.get(value.toLowerCase(ENGLISH)); checkArgument(type != null, "Unknown type %s", value); return type; } diff --git a/presto-base-jdbc/src/test/java/com/facebook/presto/plugin/jdbc/TestJdbcClient.java b/presto-base-jdbc/src/test/java/com/facebook/presto/plugin/jdbc/TestJdbcClient.java index 099de83f8b90..0e0d3e9e857e 100644 --- a/presto-base-jdbc/src/test/java/com/facebook/presto/plugin/jdbc/TestJdbcClient.java +++ b/presto-base-jdbc/src/test/java/com/facebook/presto/plugin/jdbc/TestJdbcClient.java @@ -23,6 +23,7 @@ import static com.facebook.presto.plugin.jdbc.TestingDatabase.CONNECTOR_ID; import static com.facebook.presto.spi.type.BigintType.BIGINT; import static com.facebook.presto.spi.type.VarcharType.VARCHAR; +import static java.util.Locale.ENGLISH; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertTrue; @@ -63,7 +64,7 @@ public void testMetadata() SchemaTableName schemaTableName = new SchemaTableName("example", "numbers"); JdbcTableHandle table = jdbcClient.getTableHandle(schemaTableName); assertNotNull(table, "table is null"); - assertEquals(table.getCatalogName(), catalogName.toUpperCase()); + assertEquals(table.getCatalogName(), catalogName.toUpperCase(ENGLISH)); assertEquals(table.getSchemaName(), "EXAMPLE"); assertEquals(table.getTableName(), "NUMBERS"); assertEquals(table.getSchemaTableName(), schemaTableName); diff --git a/presto-cassandra/src/main/java/com/facebook/presto/cassandra/CachingCassandraSchemaProvider.java b/presto-cassandra/src/main/java/com/facebook/presto/cassandra/CachingCassandraSchemaProvider.java index 6775605e4314..a2466e403dd7 100644 --- a/presto-cassandra/src/main/java/com/facebook/presto/cassandra/CachingCassandraSchemaProvider.java +++ b/presto-cassandra/src/main/java/com/facebook/presto/cassandra/CachingCassandraSchemaProvider.java @@ -43,6 +43,7 @@ import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.util.concurrent.MoreExecutors.listeningDecorator; +import static java.util.Locale.ENGLISH; import static java.util.concurrent.TimeUnit.MILLISECONDS; /** @@ -238,13 +239,13 @@ public CassandraTableHandle getTableHandle(SchemaTableName schemaTableName) public String getCaseSensitiveSchemaName(String caseInsensitiveName) { - String caseSensitiveSchemaName = getCacheValue(schemaNamesCache, "", RuntimeException.class).get(caseInsensitiveName.toLowerCase()); + String caseSensitiveSchemaName = getCacheValue(schemaNamesCache, "", RuntimeException.class).get(caseInsensitiveName.toLowerCase(ENGLISH)); return caseSensitiveSchemaName == null ? caseInsensitiveName : caseSensitiveSchemaName; } public String getCaseSensitiveTableName(SchemaTableName schemaTableName) { - String caseSensitiveTableName = getCacheValue(tableNamesCache, schemaTableName.getSchemaName(), SchemaNotFoundException.class).get(schemaTableName.getTableName().toLowerCase()); + String caseSensitiveTableName = getCacheValue(tableNamesCache, schemaTableName.getSchemaName(), SchemaNotFoundException.class).get(schemaTableName.getTableName().toLowerCase(ENGLISH)); return caseSensitiveTableName == null ? schemaTableName.getTableName() : caseSensitiveTableName; } @@ -340,7 +341,7 @@ private static Function toLowerCase() @Override public String apply(String str) { - return str.toLowerCase(); + return str.toLowerCase(ENGLISH); } }; } diff --git a/presto-cassandra/src/main/java/com/facebook/presto/cassandra/CassandraMetadata.java b/presto-cassandra/src/main/java/com/facebook/presto/cassandra/CassandraMetadata.java index 794acbb87fbf..8f042f87ad47 100644 --- a/presto-cassandra/src/main/java/com/facebook/presto/cassandra/CassandraMetadata.java +++ b/presto-cassandra/src/main/java/com/facebook/presto/cassandra/CassandraMetadata.java @@ -50,6 +50,7 @@ import static com.google.common.collect.Iterables.transform; import static java.util.Collections.emptyList; import static java.util.Collections.emptyMap; +import static java.util.Locale.ENGLISH; public class CassandraMetadata implements ConnectorMetadata @@ -123,7 +124,7 @@ public List listTables(ConnectorSession session, String schemaN for (String schemaName : listSchemas(session, schemaNameOrNull)) { try { for (String tableName : schemaProvider.getAllTables(schemaName)) { - tableNames.add(new SchemaTableName(schemaName, tableName.toLowerCase())); + tableNames.add(new SchemaTableName(schemaName, tableName.toLowerCase(ENGLISH))); } } catch (SchemaNotFoundException e) { @@ -159,7 +160,7 @@ private Map getColumnHandles(ConnectorTableHandle ImmutableMap.Builder columnHandles = ImmutableMap.builder(); for (CassandraColumnHandle columnHandle : table.getColumns()) { if (includeSampleWeight || !columnHandle.getName().equals(SAMPLE_WEIGHT_COLUMN_NAME)) { - columnHandles.put(CassandraCqlUtils.cqlNameToSqlName(columnHandle.getName()).toLowerCase(), columnHandle); + columnHandles.put(CassandraCqlUtils.cqlNameToSqlName(columnHandle.getName()).toLowerCase(ENGLISH), columnHandle); } } return columnHandles.build(); @@ -263,7 +264,7 @@ public ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, Con List types = columnTypes.build(); StringBuilder queryBuilder = new StringBuilder(String.format("CREATE TABLE \"%s\".\"%s\"(id uuid primary key", schemaName, tableName)); if (tableMetadata.isSampled()) { - queryBuilder.append(", ").append(SAMPLE_WEIGHT_COLUMN_NAME).append(" ").append(BIGINT.name().toLowerCase()); + queryBuilder.append(", ").append(SAMPLE_WEIGHT_COLUMN_NAME).append(" ").append(BIGINT.name().toLowerCase(ENGLISH)); columnExtra.add(new ExtraColumnMetadata(SAMPLE_WEIGHT_COLUMN_NAME, true)); } for (int i = 0; i < columns.size(); i++) { @@ -272,7 +273,7 @@ public ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, Con queryBuilder.append(", ") .append(name) .append(" ") - .append(toCassandraType(type).name().toLowerCase()); + .append(toCassandraType(type).name().toLowerCase(ENGLISH)); } queryBuilder.append(") "); diff --git a/presto-cassandra/src/main/java/com/facebook/presto/cassandra/util/CassandraCqlUtils.java b/presto-cassandra/src/main/java/com/facebook/presto/cassandra/util/CassandraCqlUtils.java index 9a5df46136b6..7227b88f0f1d 100644 --- a/presto-cassandra/src/main/java/com/facebook/presto/cassandra/util/CassandraCqlUtils.java +++ b/presto-cassandra/src/main/java/com/facebook/presto/cassandra/util/CassandraCqlUtils.java @@ -28,6 +28,8 @@ import java.util.List; import java.util.Set; +import static java.util.Locale.ENGLISH; + public final class CassandraCqlUtils { private CassandraCqlUtils() @@ -70,11 +72,11 @@ public static String validColumnName(String identifier) private static String validIdentifier(String identifier) { - if (!identifier.equals(identifier.toLowerCase())) { + if (!identifier.equals(identifier.toLowerCase(ENGLISH))) { return quoteIdentifier(identifier); } - if (keywords.contains(identifier.toUpperCase())) { + if (keywords.contains(identifier.toUpperCase(ENGLISH))) { return quoteIdentifier(identifier); } return identifier; diff --git a/presto-cassandra/src/test/java/com/facebook/presto/cassandra/TestCassandraConnector.java b/presto-cassandra/src/test/java/com/facebook/presto/cassandra/TestCassandraConnector.java index c6c9f3c72f2b..94c364c55289 100644 --- a/presto-cassandra/src/test/java/com/facebook/presto/cassandra/TestCassandraConnector.java +++ b/presto-cassandra/src/test/java/com/facebook/presto/cassandra/TestCassandraConnector.java @@ -72,6 +72,7 @@ import static com.facebook.presto.spi.type.VarcharType.VARCHAR; import static com.google.common.base.Preconditions.checkArgument; import static io.airlift.testing.Assertions.assertInstanceOf; +import static java.util.Locale.ENGLISH; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNull; import static org.testng.Assert.assertTrue; @@ -146,7 +147,7 @@ public void testGetDatabaseNames() throws Exception { List databases = metadata.listSchemaNames(SESSION); - assertTrue(databases.contains(database.toLowerCase())); + assertTrue(databases.contains(database.toLowerCase(ENGLISH))); } @Test diff --git a/presto-cli/src/main/java/com/facebook/presto/cli/ClientOptions.java b/presto-cli/src/main/java/com/facebook/presto/cli/ClientOptions.java index f2189197c0a7..1536f80a3536 100644 --- a/presto-cli/src/main/java/com/facebook/presto/cli/ClientOptions.java +++ b/presto-cli/src/main/java/com/facebook/presto/cli/ClientOptions.java @@ -22,6 +22,8 @@ import java.util.Locale; import java.util.TimeZone; +import static java.util.Locale.ENGLISH; + public class ClientOptions { @Option(name = "--server", title = "server", description = "Presto server location (default: localhost:8080)") @@ -68,7 +70,7 @@ public ClientSession toClientSession() public static URI parseServer(String server) { - server = server.toLowerCase(); + server = server.toLowerCase(ENGLISH); if (server.startsWith("http://") || server.startsWith("https://")) { return URI.create(server); } diff --git a/presto-cli/src/main/java/com/facebook/presto/cli/Console.java b/presto-cli/src/main/java/com/facebook/presto/cli/Console.java index d617bafd77b7..1524fa1eb225 100644 --- a/presto-cli/src/main/java/com/facebook/presto/cli/Console.java +++ b/presto-cli/src/main/java/com/facebook/presto/cli/Console.java @@ -49,6 +49,7 @@ import static com.google.common.io.ByteStreams.nullOutputStream; import static io.airlift.log.Logging.Level; import static java.lang.String.format; +import static java.util.Locale.ENGLISH; import static jline.internal.Configuration.getUserHome; @Command(name = "presto", description = "Presto interactive console") @@ -142,7 +143,7 @@ private static void runConsole(QueryRunner queryRunner, ClientSession session) if (command.endsWith(";")) { command = command.substring(0, command.length() - 1).trim(); } - switch (command.toLowerCase()) { + switch (command.toLowerCase(ENGLISH)) { case "exit": case "quit": return; diff --git a/presto-example-http/src/test/java/com/facebook/presto/example/MetadataUtil.java b/presto-example-http/src/test/java/com/facebook/presto/example/MetadataUtil.java index c9d0572f48d2..ab07fce63e26 100644 --- a/presto-example-http/src/test/java/com/facebook/presto/example/MetadataUtil.java +++ b/presto-example-http/src/test/java/com/facebook/presto/example/MetadataUtil.java @@ -30,6 +30,7 @@ import static com.facebook.presto.spi.type.DoubleType.DOUBLE; import static com.facebook.presto.spi.type.VarcharType.VARCHAR; import static io.airlift.json.JsonCodec.listJsonCodec; +import static java.util.Locale.ENGLISH; public final class MetadataUtil { @@ -67,7 +68,7 @@ public TestingTypeDeserializer() @Override protected Type _deserialize(String value, DeserializationContext context) { - Type type = types.get(value.toLowerCase()); + Type type = types.get(value.toLowerCase(ENGLISH)); if (type == null) { throw new IllegalArgumentException(String.valueOf("Unknown type " + value)); } diff --git a/presto-hive/src/test/java/com/facebook/presto/hive/AbstractTestHiveClient.java b/presto-hive/src/test/java/com/facebook/presto/hive/AbstractTestHiveClient.java index 11bb153e8df9..7b9c9bfa676d 100644 --- a/presto-hive/src/test/java/com/facebook/presto/hive/AbstractTestHiveClient.java +++ b/presto-hive/src/test/java/com/facebook/presto/hive/AbstractTestHiveClient.java @@ -100,6 +100,7 @@ import static io.airlift.slice.Slices.utf8Slice; import static io.airlift.testing.Assertions.assertInstanceOf; import static java.nio.charset.StandardCharsets.UTF_8; +import static java.util.Locale.ENGLISH; import static java.util.concurrent.Executors.newCachedThreadPool; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; @@ -1532,7 +1533,7 @@ private static ImmutableMap indexColumns(List columnNameGetter() diff --git a/presto-hive/src/test/java/com/facebook/presto/hive/AbstractTestHiveClientS3.java b/presto-hive/src/test/java/com/facebook/presto/hive/AbstractTestHiveClientS3.java index 831173e04477..30c0a8fd7554 100644 --- a/presto-hive/src/test/java/com/facebook/presto/hive/AbstractTestHiveClientS3.java +++ b/presto-hive/src/test/java/com/facebook/presto/hive/AbstractTestHiveClientS3.java @@ -62,6 +62,7 @@ import static com.google.common.collect.Iterables.getOnlyElement; import static com.google.common.util.concurrent.MoreExecutors.sameThreadExecutor; import static io.airlift.concurrent.Threads.daemonThreadsNamed; +import static java.util.Locale.ENGLISH; import static java.util.concurrent.Executors.newCachedThreadPool; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; @@ -104,7 +105,7 @@ protected void setupHive(String databaseName) database = databaseName; tableS3 = new SchemaTableName(database, "presto_test_s3"); - String random = UUID.randomUUID().toString().toLowerCase().replace("-", ""); + String random = UUID.randomUUID().toString().toLowerCase(ENGLISH).replace("-", ""); temporaryCreateTable = new SchemaTableName(database, "tmp_presto_test_create_s3_" + random); } diff --git a/presto-jdbc/src/main/java/com/facebook/presto/jdbc/PrestoResultSet.java b/presto-jdbc/src/main/java/com/facebook/presto/jdbc/PrestoResultSet.java index 9d8c7c474a11..44846c55ebbe 100644 --- a/presto-jdbc/src/main/java/com/facebook/presto/jdbc/PrestoResultSet.java +++ b/presto-jdbc/src/main/java/com/facebook/presto/jdbc/PrestoResultSet.java @@ -65,6 +65,7 @@ import static com.google.common.collect.Iterators.concat; import static com.google.common.collect.Iterators.transform; import static java.lang.String.format; +import static java.util.Locale.ENGLISH; public class PrestoResultSet implements ResultSet @@ -1690,7 +1691,7 @@ private int columnIndex(String label) if (label == null) { throw new SQLException("Column label is null"); } - Integer index = fieldMap.get(label.toLowerCase()); + Integer index = fieldMap.get(label.toLowerCase(ENGLISH)); if (index == null) { throw new SQLException("Invalid column label: " + label); } @@ -1768,7 +1769,7 @@ private static Map getFieldMap(List columns) { Map map = new HashMap<>(); for (int i = 0; i < columns.size(); i++) { - String name = columns.get(i).getName().toLowerCase(); + String name = columns.get(i).getName().toLowerCase(ENGLISH); if (!map.containsKey(name)) { map.put(name, i + 1); } @@ -1786,7 +1787,7 @@ private static List getColumnInfo(List columns) .setTableName("") // TODO .setColumnLabel(column.getName()) .setColumnName(column.getName()) // TODO - .setColumnTypeName(column.getType().toUpperCase()) + .setColumnTypeName(column.getType().toUpperCase(ENGLISH)) .setNullable(ResultSetMetaData.columnNullableUnknown) .setCurrency(false); setTypeInfo(builder, column.getType()); diff --git a/presto-kafka/src/test/java/com/facebook/presto/kafka/KafkaQueryRunner.java b/presto-kafka/src/test/java/com/facebook/presto/kafka/KafkaQueryRunner.java index b2c63b274dc9..8da5fb1b4656 100644 --- a/presto-kafka/src/test/java/com/facebook/presto/kafka/KafkaQueryRunner.java +++ b/presto-kafka/src/test/java/com/facebook/presto/kafka/KafkaQueryRunner.java @@ -96,13 +96,13 @@ private static void loadTpchTopic(EmbeddedKafka embeddedKafka, TestingPrestoClie { long start = System.nanoTime(); log.info("Running import for %s", table.getTableName()); - TestUtils.loadTpchTopic(embeddedKafka, prestoClient, kafkaTopicName(table), new QualifiedTableName("tpch", TINY_SCHEMA_NAME, table.getTableName().toLowerCase())); + TestUtils.loadTpchTopic(embeddedKafka, prestoClient, kafkaTopicName(table), new QualifiedTableName("tpch", TINY_SCHEMA_NAME, table.getTableName().toLowerCase(ENGLISH))); log.info("Imported %s in %s", 0, table.getTableName(), nanosSince(start).convertToMostSuccinctTimeUnit()); } private static String kafkaTopicName(TpchTable table) { - return TPCH_SCHEMA + "." + table.getTableName().toLowerCase(); + return TPCH_SCHEMA + "." + table.getTableName().toLowerCase(ENGLISH); } private static Map createTpchTopicDescriptions(Metadata metadata, Iterable> tables) diff --git a/presto-main/src/main/java/com/facebook/presto/byteCode/Access.java b/presto-main/src/main/java/com/facebook/presto/byteCode/Access.java index ed473602892e..af8fbf81c6b4 100644 --- a/presto-main/src/main/java/com/facebook/presto/byteCode/Access.java +++ b/presto-main/src/main/java/com/facebook/presto/byteCode/Access.java @@ -17,6 +17,7 @@ import java.util.EnumSet; +import static java.util.Locale.ENGLISH; import static org.objectweb.asm.Opcodes.ACC_ABSTRACT; import static org.objectweb.asm.Opcodes.ACC_ANNOTATION; import static org.objectweb.asm.Opcodes.ACC_BRIDGE; @@ -72,7 +73,7 @@ public int getModifier() @Override public String toString() { - return super.name().toLowerCase(); + return super.name().toLowerCase(ENGLISH); } public static EnumSet a(Access... access) diff --git a/presto-main/src/main/java/com/facebook/presto/connector/jmx/JmxMetadata.java b/presto-main/src/main/java/com/facebook/presto/connector/jmx/JmxMetadata.java index c0d6df55b297..98142ccb7e43 100644 --- a/presto-main/src/main/java/com/facebook/presto/connector/jmx/JmxMetadata.java +++ b/presto-main/src/main/java/com/facebook/presto/connector/jmx/JmxMetadata.java @@ -47,6 +47,7 @@ import static com.facebook.presto.spi.type.VarcharType.VARCHAR; import static com.facebook.presto.util.Types.checkType; import static com.google.common.base.Preconditions.checkNotNull; +import static java.util.Locale.ENGLISH; import static javax.management.ObjectName.WILDCARD; public class JmxMetadata @@ -114,7 +115,7 @@ public List listTables(ConnectorSession session, String schemaN Builder tableNames = ImmutableList.builder(); for (ObjectName objectName : mbeanServer.queryNames(WILDCARD, null)) { // todo remove lower case when presto supports mixed case names - tableNames.add(new SchemaTableName(SCHEMA_NAME, objectName.toString().toLowerCase())); + tableNames.add(new SchemaTableName(SCHEMA_NAME, objectName.toString().toLowerCase(ENGLISH))); } return tableNames.build(); } @@ -134,7 +135,7 @@ public Map getColumnHandles(ConnectorTableHandle @Override public String apply(JmxColumnHandle input) { - return input.getColumnName().toLowerCase(); + return input.getColumnName().toLowerCase(ENGLISH); } })); } diff --git a/presto-main/src/main/java/com/facebook/presto/metadata/DiscoveryNodeManager.java b/presto-main/src/main/java/com/facebook/presto/metadata/DiscoveryNodeManager.java index 7e1118f5857f..0ea6a374681a 100644 --- a/presto-main/src/main/java/com/facebook/presto/metadata/DiscoveryNodeManager.java +++ b/presto-main/src/main/java/com/facebook/presto/metadata/DiscoveryNodeManager.java @@ -41,6 +41,7 @@ import static com.google.common.base.Predicates.in; import static com.google.common.base.Predicates.not; import static java.util.Arrays.asList; +import static java.util.Locale.ENGLISH; @ThreadSafe public final class DiscoveryNodeManager @@ -113,7 +114,7 @@ public synchronized void refreshNodes() // record available active nodes organized by data source String dataSources = service.getProperties().get("datasources"); if (dataSources != null) { - dataSources = dataSources.toLowerCase(); + dataSources = dataSources.toLowerCase(ENGLISH); for (String dataSource : DATASOURCES_SPLITTER.split(dataSources)) { byDataSourceBuilder.put(dataSource, node); } diff --git a/presto-main/src/main/java/com/facebook/presto/metadata/FunctionListBuilder.java b/presto-main/src/main/java/com/facebook/presto/metadata/FunctionListBuilder.java index d16a85e955d1..812d55912ba0 100644 --- a/presto-main/src/main/java/com/facebook/presto/metadata/FunctionListBuilder.java +++ b/presto-main/src/main/java/com/facebook/presto/metadata/FunctionListBuilder.java @@ -57,6 +57,7 @@ import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; import static java.lang.invoke.MethodHandles.lookup; +import static java.util.Locale.ENGLISH; public class FunctionListBuilder { @@ -113,7 +114,7 @@ public FunctionListBuilder aggregate(List functions public FunctionListBuilder aggregate(InternalAggregationFunction function) { String name = function.name(); - name = name.toLowerCase(); + name = name.toLowerCase(ENGLISH); String description = getDescription(function.getClass()); Signature signature = new Signature(name, function.getFinalType().getName(), Lists.transform(ImmutableList.copyOf(function.getParameterTypes()), nameGetter())); @@ -179,7 +180,7 @@ private boolean processScalarFunction(Method method) SqlType returnTypeAnnotation = method.getAnnotation(SqlType.class); checkArgument(returnTypeAnnotation != null, "Method %s return type does not have a @SqlType annotation", method); Type returnType = type(typeManager, returnTypeAnnotation); - Signature signature = new Signature(name.toLowerCase(), returnType.getName(), Lists.transform(parameterTypes(typeManager, method), nameGetter())); + Signature signature = new Signature(name.toLowerCase(ENGLISH), returnType.getName(), Lists.transform(parameterTypes(typeManager, method), nameGetter())); verifyMethodSignature(method, signature.getReturnType(), signature.getArgumentTypes(), typeManager); @@ -187,7 +188,7 @@ private boolean processScalarFunction(Method method) scalar(signature, methodHandle, scalarFunction.deterministic(), getDescription(method), scalarFunction.hidden(), method.isAnnotationPresent(Nullable.class), nullableArguments); for (String alias : scalarFunction.alias()) { - scalar(signature.withAlias(alias.toLowerCase()), methodHandle, scalarFunction.deterministic(), getDescription(method), scalarFunction.hidden(), method.isAnnotationPresent(Nullable.class), nullableArguments); + scalar(signature.withAlias(alias.toLowerCase(ENGLISH)), methodHandle, scalarFunction.deterministic(), getDescription(method), scalarFunction.hidden(), method.isAnnotationPresent(Nullable.class), nullableArguments); } return true; } diff --git a/presto-main/src/main/java/com/facebook/presto/metadata/MetadataUtil.java b/presto-main/src/main/java/com/facebook/presto/metadata/MetadataUtil.java index 52e129236565..99e291cc0c7a 100644 --- a/presto-main/src/main/java/com/facebook/presto/metadata/MetadataUtil.java +++ b/presto-main/src/main/java/com/facebook/presto/metadata/MetadataUtil.java @@ -29,6 +29,7 @@ import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; +import static java.util.Locale.ENGLISH; public final class MetadataUtil { @@ -91,7 +92,7 @@ public static Optional checkLowerCase(Optional value, String nam public static String checkLowerCase(String value, String name) { checkNotNull(value, "%s is null", name); - checkArgument(value.equals(value.toLowerCase()), "%s is not lowercase", name); + checkArgument(value.equals(value.toLowerCase(ENGLISH)), "%s is not lowercase", name); return value; } diff --git a/presto-main/src/main/java/com/facebook/presto/operator/aggregation/AggregationUtils.java b/presto-main/src/main/java/com/facebook/presto/operator/aggregation/AggregationUtils.java index e27282b480af..49b7da89a813 100644 --- a/presto-main/src/main/java/com/facebook/presto/operator/aggregation/AggregationUtils.java +++ b/presto-main/src/main/java/com/facebook/presto/operator/aggregation/AggregationUtils.java @@ -28,6 +28,7 @@ import java.util.List; import static com.google.common.base.Preconditions.checkArgument; +import static java.util.Locale.ENGLISH; public final class AggregationUtils { @@ -79,7 +80,7 @@ public static String generateAggregationName(String baseName, Type outputType, L for (Type inputType : inputTypes) { sb.append(CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_CAMEL, inputType.getName())); } - sb.append(CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, baseName.toLowerCase())); + sb.append(CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, baseName.toLowerCase(ENGLISH))); return sb.toString(); } diff --git a/presto-main/src/main/java/com/facebook/presto/operator/scalar/DateTimeFunctions.java b/presto-main/src/main/java/com/facebook/presto/operator/scalar/DateTimeFunctions.java index 112a9c29c5e3..381dc436bba1 100644 --- a/presto-main/src/main/java/com/facebook/presto/operator/scalar/DateTimeFunctions.java +++ b/presto-main/src/main/java/com/facebook/presto/operator/scalar/DateTimeFunctions.java @@ -45,6 +45,7 @@ import static com.facebook.presto.util.DateTimeZoneIndex.extractZoneOffsetMinutes; import static com.facebook.presto.util.DateTimeZoneIndex.getChronology; import static com.facebook.presto.util.DateTimeZoneIndex.unpackChronology; +import static java.util.Locale.ENGLISH; public final class DateTimeFunctions { @@ -336,7 +337,7 @@ public static long diffTimestampWithTimeZone( private static DateTimeField getDateField(ISOChronology chronology, Slice unit) { - String unitString = unit.toString(Charsets.UTF_8).toLowerCase(); + String unitString = unit.toString(Charsets.UTF_8).toLowerCase(ENGLISH); switch (unitString) { case "day": return chronology.dayOfMonth(); @@ -355,7 +356,7 @@ private static DateTimeField getDateField(ISOChronology chronology, Slice unit) private static DateTimeField getTimeField(ISOChronology chronology, Slice unit) { - String unitString = unit.toString(Charsets.UTF_8).toLowerCase(); + String unitString = unit.toString(Charsets.UTF_8).toLowerCase(ENGLISH); switch (unitString) { case "second": return chronology.secondOfMinute(); @@ -370,7 +371,7 @@ private static DateTimeField getTimeField(ISOChronology chronology, Slice unit) private static DateTimeField getTimestampField(ISOChronology chronology, Slice unit) { - String unitString = unit.toString(Charsets.UTF_8).toLowerCase(); + String unitString = unit.toString(Charsets.UTF_8).toLowerCase(ENGLISH); switch (unitString) { case "second": return chronology.secondOfMinute(); diff --git a/presto-main/src/main/java/com/facebook/presto/sql/planner/SymbolAllocator.java b/presto-main/src/main/java/com/facebook/presto/sql/planner/SymbolAllocator.java index d8040612aa02..a7a1ba02f53a 100644 --- a/presto-main/src/main/java/com/facebook/presto/sql/planner/SymbolAllocator.java +++ b/presto-main/src/main/java/com/facebook/presto/sql/planner/SymbolAllocator.java @@ -23,6 +23,8 @@ import java.util.HashMap; import java.util.Map; +import static java.util.Locale.ENGLISH; + public class SymbolAllocator { private final Map symbols = new HashMap<>(); @@ -37,7 +39,7 @@ public Symbol newSymbol(String nameHint, Type type, String suffix) Preconditions.checkNotNull(nameHint, "name is null"); // TODO: workaround for the fact that QualifiedName lowercases parts - nameHint = nameHint.toLowerCase(); + nameHint = nameHint.toLowerCase(ENGLISH); if (nameHint.contains("_")) { nameHint = nameHint.substring(0, nameHint.indexOf("_")); diff --git a/presto-main/src/main/java/com/facebook/presto/type/TypeRegistry.java b/presto-main/src/main/java/com/facebook/presto/type/TypeRegistry.java index 557eaabed134..3e406578ba48 100644 --- a/presto-main/src/main/java/com/facebook/presto/type/TypeRegistry.java +++ b/presto-main/src/main/java/com/facebook/presto/type/TypeRegistry.java @@ -53,6 +53,7 @@ import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; +import static java.util.Locale.ENGLISH; @ThreadSafe public final class TypeRegistry @@ -72,7 +73,7 @@ public TypeRegistry(Set types) checkNotNull(types, "types is null"); // Manually register UNKNOWN type without a verifyTypeClass call since it is a special type that can not be used by functions - this.types.put(UNKNOWN.getName().toLowerCase(), UNKNOWN); + this.types.put(UNKNOWN.getName().toLowerCase(ENGLISH), UNKNOWN); // always add the built-in types; Presto will not function without these addType(BOOLEAN); @@ -103,7 +104,7 @@ public TypeRegistry(Set types) @Override public Type getType(String typeName) { - String key = typeName.toLowerCase(); + String key = typeName.toLowerCase(ENGLISH); Type type = types.get(key); if (type == null) { instantiateParametricType(key); @@ -119,11 +120,11 @@ public Type getParameterizedType(String parametricTypeName, List typeNam @Override public String apply(String input) { - return input.toLowerCase(); + return input.toLowerCase(ENGLISH); } }).toList(); - return getType(parametricTypeName.toLowerCase() + "<" + Joiner.on(",").join(lowerCaseTypeNames) + ">"); + return getType(parametricTypeName.toLowerCase(ENGLISH) + "<" + Joiner.on(",").join(lowerCaseTypeNames) + ">"); } private synchronized void instantiateParametricType(String typeName) @@ -155,7 +156,7 @@ public List getTypes() public void addType(Type type) { verifyTypeClass(type); - Type existingType = types.putIfAbsent(type.getName().toLowerCase(), type); + Type existingType = types.putIfAbsent(type.getName().toLowerCase(ENGLISH), type); checkState(existingType == null || existingType.equals(type), "Type %s is already registered", type.getName()); } diff --git a/presto-main/src/main/java/com/facebook/presto/util/MoreFunctions.java b/presto-main/src/main/java/com/facebook/presto/util/MoreFunctions.java index 4f1208de2b2f..3594cbddac25 100644 --- a/presto-main/src/main/java/com/facebook/presto/util/MoreFunctions.java +++ b/presto-main/src/main/java/com/facebook/presto/util/MoreFunctions.java @@ -19,6 +19,8 @@ import java.util.Map; +import static java.util.Locale.ENGLISH; + public final class MoreFunctions { private MoreFunctions() {} @@ -30,7 +32,7 @@ public static Function toLowerCase() @Override public String apply(String s) { - return s.toLowerCase(); + return s.toLowerCase(ENGLISH); } }; } diff --git a/presto-main/src/test/java/com/facebook/presto/sql/TestExpressionInterpreter.java b/presto-main/src/test/java/com/facebook/presto/sql/TestExpressionInterpreter.java index 5d87156d3da5..115611a6a2fd 100644 --- a/presto-main/src/test/java/com/facebook/presto/sql/TestExpressionInterpreter.java +++ b/presto-main/src/test/java/com/facebook/presto/sql/TestExpressionInterpreter.java @@ -56,6 +56,7 @@ import static com.facebook.presto.sql.planner.ExpressionInterpreter.expressionInterpreter; import static com.facebook.presto.sql.planner.ExpressionInterpreter.expressionOptimizer; import static com.google.common.base.Charsets.UTF_8; +import static java.util.Locale.ENGLISH; import static org.testng.Assert.assertEquals; public class TestExpressionInterpreter @@ -844,7 +845,7 @@ private static Object optimize(@Language("SQL") String expression) @Override public Object getValue(Symbol symbol) { - switch (symbol.getName().toLowerCase()) { + switch (symbol.getName().toLowerCase(ENGLISH)) { case "bound_long": return 1234L; case "bound_string": diff --git a/presto-main/src/test/java/com/facebook/presto/util/TestTimeZoneUtils.java b/presto-main/src/test/java/com/facebook/presto/util/TestTimeZoneUtils.java index 9e79cb20654f..7094b06c70e7 100644 --- a/presto-main/src/test/java/com/facebook/presto/util/TestTimeZoneUtils.java +++ b/presto-main/src/test/java/com/facebook/presto/util/TestTimeZoneUtils.java @@ -28,6 +28,7 @@ import static com.facebook.presto.util.DateTimeZoneIndex.getDateTimeZone; import static com.facebook.presto.util.DateTimeZoneIndex.packDateTimeWithZone; import static com.facebook.presto.util.DateTimeZoneIndex.unpackDateTimeZone; +import static java.util.Locale.ENGLISH; import static org.testng.Assert.assertEquals; public class TestTimeZoneUtils @@ -41,7 +42,7 @@ public void test() TreeSet jdkZones = new TreeSet<>(Arrays.asList(TimeZone.getAvailableIDs())); for (String zoneId : new TreeSet<>(Sets.intersection(jodaZones, jdkZones))) { - if (zoneId.toLowerCase().startsWith("etc/") || zoneId.toLowerCase().startsWith("gmt")) { + if (zoneId.toLowerCase(ENGLISH).startsWith("etc/") || zoneId.toLowerCase(ENGLISH).startsWith("gmt")) { continue; } DateTimeZone dateTimeZone = DateTimeZone.forID(zoneId); diff --git a/presto-ml/src/main/java/com/facebook/presto/ml/LibSvmUtils.java b/presto-ml/src/main/java/com/facebook/presto/ml/LibSvmUtils.java index 42fcbad601ab..e6065484e7ef 100644 --- a/presto-ml/src/main/java/com/facebook/presto/ml/LibSvmUtils.java +++ b/presto-ml/src/main/java/com/facebook/presto/ml/LibSvmUtils.java @@ -21,6 +21,7 @@ import static com.facebook.presto.spi.StandardErrorCode.INVALID_FUNCTION_ARGUMENT; import static com.google.common.base.Preconditions.checkArgument; import static java.lang.String.format; +import static java.util.Locale.ENGLISH; public final class LibSvmUtils { @@ -84,7 +85,7 @@ public static svm_parameter parseParameters(String paramString) private static int parseKernelType(String value) { - switch (value.toLowerCase()) { + switch (value.toLowerCase(ENGLISH)) { case "linear": return svm_parameter.LINEAR; case "poly": diff --git a/presto-mysql/src/main/java/com/facebook/presto/plugin/mysql/MySqlClient.java b/presto-mysql/src/main/java/com/facebook/presto/plugin/mysql/MySqlClient.java index bee77e8e55f8..720ae8c1bcc0 100644 --- a/presto-mysql/src/main/java/com/facebook/presto/plugin/mysql/MySqlClient.java +++ b/presto-mysql/src/main/java/com/facebook/presto/plugin/mysql/MySqlClient.java @@ -29,6 +29,8 @@ import java.sql.SQLException; import java.util.Set; +import static java.util.Locale.ENGLISH; + public class MySqlClient extends BaseJdbcClient { @@ -48,7 +50,7 @@ public Set getSchemaNames() ResultSet resultSet = connection.getMetaData().getCatalogs()) { ImmutableSet.Builder schemaNames = ImmutableSet.builder(); while (resultSet.next()) { - String schemaName = resultSet.getString("TABLE_CAT").toLowerCase(); + String schemaName = resultSet.getString("TABLE_CAT").toLowerCase(ENGLISH); // skip internal schemas if (!schemaName.equals("information_schema") && !schemaName.equals("mysql")) { schemaNames.add(schemaName); @@ -75,8 +77,8 @@ protected SchemaTableName getSchemaTableName(ResultSet resultSet) { // MySQL uses catalogs instead of schemas return new SchemaTableName( - resultSet.getString("TABLE_CAT").toLowerCase(), - resultSet.getString("TABLE_NAME").toLowerCase()); + resultSet.getString("TABLE_CAT").toLowerCase(ENGLISH), + resultSet.getString("TABLE_NAME").toLowerCase(ENGLISH)); } diff --git a/presto-parser/src/main/java/com/facebook/presto/sql/tree/BooleanLiteral.java b/presto-parser/src/main/java/com/facebook/presto/sql/tree/BooleanLiteral.java index 48f986439c82..779331af273c 100644 --- a/presto-parser/src/main/java/com/facebook/presto/sql/tree/BooleanLiteral.java +++ b/presto-parser/src/main/java/com/facebook/presto/sql/tree/BooleanLiteral.java @@ -16,6 +16,8 @@ import com.google.common.base.Objects; import com.google.common.base.Preconditions; +import static java.util.Locale.ENGLISH; + public class BooleanLiteral extends Literal { @@ -27,9 +29,9 @@ public class BooleanLiteral public BooleanLiteral(String value) { Preconditions.checkNotNull(value, "value is null"); - Preconditions.checkArgument(value.toLowerCase().equals("true") || value.toLowerCase().equals("false")); + Preconditions.checkArgument(value.toLowerCase(ENGLISH).equals("true") || value.toLowerCase(ENGLISH).equals("false")); - this.value = value.toLowerCase().equals("true"); + this.value = value.toLowerCase(ENGLISH).equals("true"); } public boolean getValue() diff --git a/presto-parser/src/main/java/com/facebook/presto/sql/tree/Cast.java b/presto-parser/src/main/java/com/facebook/presto/sql/tree/Cast.java index 00d4d0de2a5c..d9e4b7b5f4a9 100644 --- a/presto-parser/src/main/java/com/facebook/presto/sql/tree/Cast.java +++ b/presto-parser/src/main/java/com/facebook/presto/sql/tree/Cast.java @@ -16,6 +16,7 @@ import java.util.Objects; import static com.google.common.base.Preconditions.checkNotNull; +import static java.util.Locale.ENGLISH; public final class Cast extends Expression @@ -35,7 +36,7 @@ public Cast(Expression expression, String type, boolean safe) checkNotNull(type, "type is null"); this.expression = expression; - this.type = type.toUpperCase(); + this.type = type.toUpperCase(ENGLISH); this.safe = safe; } diff --git a/presto-parser/src/main/java/com/facebook/presto/sql/tree/QualifiedName.java b/presto-parser/src/main/java/com/facebook/presto/sql/tree/QualifiedName.java index 881cfc5e9331..b0f49f470bab 100644 --- a/presto-parser/src/main/java/com/facebook/presto/sql/tree/QualifiedName.java +++ b/presto-parser/src/main/java/com/facebook/presto/sql/tree/QualifiedName.java @@ -27,6 +27,8 @@ import java.util.List; +import static java.util.Locale.ENGLISH; + public class QualifiedName { private final List parts; @@ -189,7 +191,7 @@ private static Function toLowerCase() @Override public String apply(String s) { - return s.toLowerCase(); + return s.toLowerCase(ENGLISH); } }; } diff --git a/presto-raptor/src/main/java/com/facebook/presto/raptor/storage/DatabaseLocalStorageManager.java b/presto-raptor/src/main/java/com/facebook/presto/raptor/storage/DatabaseLocalStorageManager.java index bfb16c8c9d33..0f6292d65898 100644 --- a/presto-raptor/src/main/java/com/facebook/presto/raptor/storage/DatabaseLocalStorageManager.java +++ b/presto-raptor/src/main/java/com/facebook/presto/raptor/storage/DatabaseLocalStorageManager.java @@ -61,6 +61,7 @@ import static io.airlift.concurrent.Threads.threadsNamed; import static java.lang.String.format; import static java.nio.file.Files.createDirectories; +import static java.util.Locale.ENGLISH; import static java.util.concurrent.Executors.newFixedThreadPool; public class DatabaseLocalStorageManager @@ -286,7 +287,7 @@ private static void importData(ConnectorPageSource source, ColumnFileHandle file @VisibleForTesting static File getShardPath(File baseDir, UUID shardUuid) { - String uuid = shardUuid.toString().toLowerCase(); + String uuid = shardUuid.toString().toLowerCase(ENGLISH); return baseDir.toPath() .resolve(uuid.substring(0, 2)) .resolve(uuid.substring(2, 4)) diff --git a/presto-spi/src/main/java/com/facebook/presto/spi/ColumnMetadata.java b/presto-spi/src/main/java/com/facebook/presto/spi/ColumnMetadata.java index 90b23127a872..44db04751b9f 100644 --- a/presto-spi/src/main/java/com/facebook/presto/spi/ColumnMetadata.java +++ b/presto-spi/src/main/java/com/facebook/presto/spi/ColumnMetadata.java @@ -17,6 +17,8 @@ import java.util.Objects; +import static java.util.Locale.ENGLISH; + public class ColumnMetadata { private final String name; @@ -43,7 +45,7 @@ public ColumnMetadata(String name, Type type, int ordinalPosition, boolean parti throw new IllegalArgumentException("ordinalPosition is negative"); } - this.name = name.toLowerCase(); + this.name = name.toLowerCase(ENGLISH); this.type = type; this.ordinalPosition = ordinalPosition; this.partitionKey = partitionKey; diff --git a/presto-spi/src/main/java/com/facebook/presto/spi/type/TimeZoneKey.java b/presto-spi/src/main/java/com/facebook/presto/spi/type/TimeZoneKey.java index 7a95402544d5..b51b483854ab 100644 --- a/presto-spi/src/main/java/com/facebook/presto/spi/type/TimeZoneKey.java +++ b/presto-spi/src/main/java/com/facebook/presto/spi/type/TimeZoneKey.java @@ -31,6 +31,7 @@ import static java.lang.Character.isDigit; import static java.lang.Math.abs; import static java.lang.Math.max; +import static java.util.Locale.ENGLISH; import static java.util.Objects.requireNonNull; public final class TimeZoneKey @@ -68,7 +69,7 @@ public synchronized Object put(Object key, Object value) } Map zoneIdToKey = new TreeMap<>(); - zoneIdToKey.put(UTC_KEY.getId().toLowerCase(), UTC_KEY); + zoneIdToKey.put(UTC_KEY.getId().toLowerCase(ENGLISH), UTC_KEY); short maxZoneKey = 0; for (Entry entry : data.entrySet()) { @@ -76,7 +77,7 @@ public synchronized Object put(Object key, Object value) String zoneId = ((String) entry.getValue()).trim(); maxZoneKey = (short) max(maxZoneKey, zoneKey); - zoneIdToKey.put(zoneId.toLowerCase(), new TimeZoneKey(zoneId, zoneKey)); + zoneIdToKey.put(zoneId.toLowerCase(ENGLISH), new TimeZoneKey(zoneId, zoneKey)); } MAX_TIME_ZONE_KEY = maxZoneKey; @@ -119,7 +120,7 @@ public static TimeZoneKey getTimeZoneKey(String zoneId) requireNonNull(zoneId, "Zone id is null"); checkArgument(!zoneId.isEmpty(), "Zone id is an empty string"); - TimeZoneKey zoneKey = ZONE_ID_TO_KEY.get(zoneId.toLowerCase()); + TimeZoneKey zoneKey = ZONE_ID_TO_KEY.get(zoneId.toLowerCase(ENGLISH)); if (zoneKey == null) { zoneKey = ZONE_ID_TO_KEY.get(normalizeZoneId(zoneId)); } @@ -199,7 +200,7 @@ public static boolean isUtcZoneId(String zoneId) private static String normalizeZoneId(String originalZoneId) { - String zoneId = originalZoneId.toLowerCase(); + String zoneId = originalZoneId.toLowerCase(ENGLISH); if (zoneId.startsWith("etc/")) { zoneId = zoneId.substring(4); diff --git a/presto-spi/src/test/java/com/facebook/presto/spi/type/TestTimeZoneKey.java b/presto-spi/src/test/java/com/facebook/presto/spi/type/TestTimeZoneKey.java index 1ad390759d90..0f398c71557c 100644 --- a/presto-spi/src/test/java/com/facebook/presto/spi/type/TestTimeZoneKey.java +++ b/presto-spi/src/test/java/com/facebook/presto/spi/type/TestTimeZoneKey.java @@ -24,6 +24,7 @@ import static com.facebook.presto.spi.type.TimeZoneKey.MAX_TIME_ZONE_KEY; import static com.facebook.presto.spi.type.TimeZoneKey.UTC_KEY; +import static java.util.Locale.ENGLISH; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertSame; @@ -133,8 +134,8 @@ public void testZoneKeyLookup() for (TimeZoneKey timeZoneKey : TimeZoneKey.getTimeZoneKeys()) { assertSame(TimeZoneKey.getTimeZoneKey(timeZoneKey.getKey()), timeZoneKey); assertSame(TimeZoneKey.getTimeZoneKey(timeZoneKey.getId()), timeZoneKey); - assertSame(TimeZoneKey.getTimeZoneKey(timeZoneKey.getId().toUpperCase()), timeZoneKey); - assertSame(TimeZoneKey.getTimeZoneKey(timeZoneKey.getId().toLowerCase()), timeZoneKey); + assertSame(TimeZoneKey.getTimeZoneKey(timeZoneKey.getId().toUpperCase(ENGLISH)), timeZoneKey); + assertSame(TimeZoneKey.getTimeZoneKey(timeZoneKey.getId().toLowerCase(ENGLISH)), timeZoneKey); } } diff --git a/presto-spi/src/test/java/com/facebook/presto/spi/type/TestTypeSignature.java b/presto-spi/src/test/java/com/facebook/presto/spi/type/TestTypeSignature.java index a8366d95280c..c0cffbd3e9dd 100644 --- a/presto-spi/src/test/java/com/facebook/presto/spi/type/TestTypeSignature.java +++ b/presto-spi/src/test/java/com/facebook/presto/spi/type/TestTypeSignature.java @@ -22,6 +22,7 @@ import java.util.List; import static com.facebook.presto.spi.type.TypeSignature.parseTypeSignature; +import static java.util.Locale.ENGLISH; import static org.testng.Assert.assertEquals; import static org.testng.Assert.fail; @@ -55,11 +56,11 @@ private static void assertSignature(String base, List parameters) @Override public String apply(String input) { - return input.toLowerCase(); + return input.toLowerCase(ENGLISH); } }).toList(); - String typeName = base.toLowerCase(); + String typeName = base.toLowerCase(ENGLISH); if (!parameters.isEmpty()) { typeName += "<" + Joiner.on(",").join(lowerCaseTypeNames) + ">"; } diff --git a/presto-tests/src/main/java/com/facebook/presto/tests/QueryAssertions.java b/presto-tests/src/main/java/com/facebook/presto/tests/QueryAssertions.java index ba06f2e47490..7a0e27242444 100644 --- a/presto-tests/src/main/java/com/facebook/presto/tests/QueryAssertions.java +++ b/presto-tests/src/main/java/com/facebook/presto/tests/QueryAssertions.java @@ -31,6 +31,7 @@ import static com.facebook.presto.util.Types.checkType; import static io.airlift.units.Duration.nanosSince; import static java.lang.String.format; +import static java.util.Locale.ENGLISH; import static java.util.concurrent.TimeUnit.SECONDS; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; @@ -138,7 +139,7 @@ public static void copyTpchTables( log.info("Loading data from %s.%s...", sourceCatalog, sourceSchema); long startTime = System.nanoTime(); for (TpchTable table : tables) { - copyTable(queryRunner, sourceCatalog, sourceSchema, table.getTableName().toLowerCase(), session); + copyTable(queryRunner, sourceCatalog, sourceSchema, table.getTableName().toLowerCase(ENGLISH), session); } log.info("Loading from %s.%s complete in %s", sourceCatalog, sourceSchema, nanosSince(startTime).toString(SECONDS)); }