diff --git a/plugin/trino-base-jdbc/src/test/java/io/trino/plugin/jdbc/mapping/RuleBasedIdentifierMappingUtils.java b/plugin/trino-base-jdbc/src/test/java/io/trino/plugin/jdbc/mapping/RuleBasedIdentifierMappingUtils.java index d1bd89468b12..71394e74efaa 100644 --- a/plugin/trino-base-jdbc/src/test/java/io/trino/plugin/jdbc/mapping/RuleBasedIdentifierMappingUtils.java +++ b/plugin/trino-base-jdbc/src/test/java/io/trino/plugin/jdbc/mapping/RuleBasedIdentifierMappingUtils.java @@ -14,8 +14,8 @@ package io.trino.plugin.jdbc.mapping; import com.google.common.collect.ImmutableList; +import io.airlift.units.Duration; -import java.io.IOException; import java.nio.file.Path; import java.util.List; @@ -23,19 +23,22 @@ import static java.nio.charset.StandardCharsets.UTF_8; import static java.nio.file.Files.createTempFile; import static java.nio.file.Files.write; +import static java.util.concurrent.TimeUnit.MILLISECONDS; public final class RuleBasedIdentifierMappingUtils { + public static final Duration REFRESH_PERIOD_DURATION = Duration.succinctDuration(1, MILLISECONDS); + private RuleBasedIdentifierMappingUtils() {} public static Path createRuleBasedIdentifierMappingFile() - throws IOException + throws Exception { return createRuleBasedIdentifierMappingFile(ImmutableList.of(), ImmutableList.of()); } public static Path createRuleBasedIdentifierMappingFile(List schemas, List tables) - throws IOException + throws Exception { Path file = createTempFile("identifier-mapping-", ".json"); file.toFile().deleteOnExit(); @@ -44,13 +47,15 @@ public static Path createRuleBasedIdentifierMappingFile(List } public static Path updateRuleBasedIdentifierMappingFile(Path file, List schemas, List tables) - throws IOException + throws Exception { IdentifierMappingRules mapping = new IdentifierMappingRules(schemas, tables); String json = jsonCodec(IdentifierMappingRules.class).toJson(mapping); write(file, json.getBytes(UTF_8)); + // Wait to ensure rules have been reloaded + Thread.sleep(2 * REFRESH_PERIOD_DURATION.toMillis()); return file; } } diff --git a/plugin/trino-mysql/src/test/java/io/trino/plugin/mysql/TestMySqlCaseInsensitiveMapping.java b/plugin/trino-mysql/src/test/java/io/trino/plugin/mysql/TestMySqlCaseInsensitiveMapping.java index 7ff2351d22b4..f87f7f3a034c 100644 --- a/plugin/trino-mysql/src/test/java/io/trino/plugin/mysql/TestMySqlCaseInsensitiveMapping.java +++ b/plugin/trino-mysql/src/test/java/io/trino/plugin/mysql/TestMySqlCaseInsensitiveMapping.java @@ -22,6 +22,7 @@ import java.nio.file.Path; +import static io.trino.plugin.jdbc.mapping.RuleBasedIdentifierMappingUtils.REFRESH_PERIOD_DURATION; import static io.trino.plugin.jdbc.mapping.RuleBasedIdentifierMappingUtils.createRuleBasedIdentifierMappingFile; import static io.trino.plugin.mysql.MySqlQueryRunner.createMySqlQueryRunner; import static java.util.Objects.requireNonNull; @@ -47,7 +48,7 @@ protected QueryRunner createQueryRunner() ImmutableMap.builder() .put("case-insensitive-name-matching", "true") .put("case-insensitive-name-matching.config-file", mappingFile.toFile().getAbsolutePath()) - .put("case-insensitive-name-matching.config-file.refresh-period", "1ms") // ~always refresh + .put("case-insensitive-name-matching.config-file.refresh-period", REFRESH_PERIOD_DURATION.toString()) .buildOrThrow(), ImmutableList.of()); } diff --git a/plugin/trino-oracle/src/test/java/io/trino/plugin/oracle/TestOracleCaseInsensitiveMapping.java b/plugin/trino-oracle/src/test/java/io/trino/plugin/oracle/TestOracleCaseInsensitiveMapping.java index c995fd4cf9a9..f38c2125ace7 100644 --- a/plugin/trino-oracle/src/test/java/io/trino/plugin/oracle/TestOracleCaseInsensitiveMapping.java +++ b/plugin/trino-oracle/src/test/java/io/trino/plugin/oracle/TestOracleCaseInsensitiveMapping.java @@ -23,6 +23,7 @@ import java.nio.file.Path; import java.util.Optional; +import static io.trino.plugin.jdbc.mapping.RuleBasedIdentifierMappingUtils.REFRESH_PERIOD_DURATION; import static io.trino.plugin.jdbc.mapping.RuleBasedIdentifierMappingUtils.createRuleBasedIdentifierMappingFile; import static io.trino.plugin.oracle.OracleQueryRunner.createOracleQueryRunner; import static io.trino.plugin.oracle.TestingOracleServer.TEST_USER; @@ -51,7 +52,7 @@ protected QueryRunner createQueryRunner() .putAll(OracleQueryRunner.connectionProperties(oracleServer)) .put("case-insensitive-name-matching", "true") .put("case-insensitive-name-matching.config-file", mappingFile.toFile().getAbsolutePath()) - .put("case-insensitive-name-matching.config-file.refresh-period", "1ms") // ~always refresh + .put("case-insensitive-name-matching.config-file.refresh-period", REFRESH_PERIOD_DURATION.toString()) .buildOrThrow(), ImmutableList.of()); } diff --git a/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestPostgreSqlCaseInsensitiveMapping.java b/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestPostgreSqlCaseInsensitiveMapping.java index 05b26dac4579..ac90923fe17b 100644 --- a/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestPostgreSqlCaseInsensitiveMapping.java +++ b/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestPostgreSqlCaseInsensitiveMapping.java @@ -22,6 +22,7 @@ import java.nio.file.Path; +import static io.trino.plugin.jdbc.mapping.RuleBasedIdentifierMappingUtils.REFRESH_PERIOD_DURATION; import static io.trino.plugin.jdbc.mapping.RuleBasedIdentifierMappingUtils.createRuleBasedIdentifierMappingFile; import static java.util.Objects.requireNonNull; @@ -46,7 +47,7 @@ protected QueryRunner createQueryRunner() ImmutableMap.builder() .put("case-insensitive-name-matching", "true") .put("case-insensitive-name-matching.config-file", mappingFile.toFile().getAbsolutePath()) - .put("case-insensitive-name-matching.config-file.refresh-period", "1ms") // ~always refresh + .put("case-insensitive-name-matching.config-file.refresh-period", REFRESH_PERIOD_DURATION.toString()) .buildOrThrow(), ImmutableSet.of()); } diff --git a/plugin/trino-sqlserver/pom.xml b/plugin/trino-sqlserver/pom.xml index e6d78a24b571..c8cada34f6d1 100644 --- a/plugin/trino-sqlserver/pom.xml +++ b/plugin/trino-sqlserver/pom.xml @@ -53,6 +53,11 @@ log-manager + + io.airlift + units + + com.google.guava guava diff --git a/plugin/trino-sqlserver/src/test/java/io/trino/plugin/sqlserver/TestSqlServerCaseInsensitiveMapping.java b/plugin/trino-sqlserver/src/test/java/io/trino/plugin/sqlserver/TestSqlServerCaseInsensitiveMapping.java index 87061daee760..012a242a7f98 100644 --- a/plugin/trino-sqlserver/src/test/java/io/trino/plugin/sqlserver/TestSqlServerCaseInsensitiveMapping.java +++ b/plugin/trino-sqlserver/src/test/java/io/trino/plugin/sqlserver/TestSqlServerCaseInsensitiveMapping.java @@ -25,6 +25,7 @@ import java.sql.ResultSet; import java.sql.Statement; +import static io.trino.plugin.jdbc.mapping.RuleBasedIdentifierMappingUtils.REFRESH_PERIOD_DURATION; import static io.trino.plugin.jdbc.mapping.RuleBasedIdentifierMappingUtils.createRuleBasedIdentifierMappingFile; import static io.trino.plugin.sqlserver.SqlServerQueryRunner.createSqlServerQueryRunner; import static java.util.Objects.requireNonNull; @@ -51,7 +52,7 @@ protected QueryRunner createQueryRunner() ImmutableMap.builder() .put("case-insensitive-name-matching", "true") .put("case-insensitive-name-matching.config-file", mappingFile.toFile().getAbsolutePath()) - .put("case-insensitive-name-matching.config-file.refresh-period", "1ms") // ~always refresh + .put("case-insensitive-name-matching.config-file.refresh-period", REFRESH_PERIOD_DURATION.toString()) .buildOrThrow(), ImmutableList.of()); }