diff --git a/core/trino-main/src/main/java/io/trino/metadata/MetadataManager.java b/core/trino-main/src/main/java/io/trino/metadata/MetadataManager.java index d65602dc5d130..bdb66117c70d6 100644 --- a/core/trino-main/src/main/java/io/trino/metadata/MetadataManager.java +++ b/core/trino-main/src/main/java/io/trino/metadata/MetadataManager.java @@ -24,18 +24,16 @@ import com.google.inject.Inject; import io.airlift.log.Logger; import io.airlift.slice.Slice; -import io.trino.FeaturesConfig; import io.trino.Session; import io.trino.connector.system.GlobalSystemConnector; +import io.trino.execution.QueryManager; import io.trino.metadata.LanguageFunctionManager.RunAsIdentityLoader; import io.trino.security.AccessControl; -import io.trino.security.AllowAllAccessControl; import io.trino.security.InjectedConnectorAccessControl; import io.trino.spi.ErrorCode; import io.trino.spi.QueryId; import io.trino.spi.RefreshType; import io.trino.spi.TrinoException; -import io.trino.spi.block.BlockEncodingSerde; import io.trino.spi.connector.AggregateFunction; import io.trino.spi.connector.AggregationApplicationResult; import io.trino.spi.connector.Assignment; @@ -115,12 +113,9 @@ import io.trino.spi.type.Type; import io.trino.spi.type.TypeManager; import io.trino.spi.type.TypeNotFoundException; -import io.trino.spi.type.TypeOperators; import io.trino.sql.analyzer.TypeSignatureProvider; -import io.trino.sql.parser.SqlParser; import io.trino.sql.planner.PartitioningHandle; import io.trino.transaction.TransactionManager; -import io.trino.type.BlockTypeOperators; import io.trino.type.TypeCoercion; import java.util.ArrayList; @@ -132,6 +127,7 @@ import java.util.Locale; import java.util.Map; import java.util.Map.Entry; +import java.util.NoSuchElementException; import java.util.Optional; import java.util.OptionalInt; import java.util.OptionalLong; @@ -152,7 +148,6 @@ import static com.google.common.util.concurrent.MoreExecutors.directExecutor; import static io.airlift.concurrent.MoreFutures.toListenableFuture; import static io.trino.SystemSessionProperties.getRetryPolicy; -import static io.trino.client.NodeVersion.UNKNOWN; import static io.trino.metadata.CatalogMetadata.SecurityManagement.CONNECTOR; import static io.trino.metadata.CatalogMetadata.SecurityManagement.SYSTEM; import static io.trino.metadata.GlobalFunctionCatalog.BUILTIN_SCHEMA; @@ -175,8 +170,6 @@ import static io.trino.spi.StandardErrorCode.TABLE_REDIRECTION_ERROR; import static io.trino.spi.StandardErrorCode.UNSUPPORTED_TABLE_TYPE; import static io.trino.spi.connector.MaterializedViewFreshness.Freshness.STALE; -import static io.trino.transaction.InMemoryTransactionManager.createTestTransactionManager; -import static io.trino.type.InternalTypeManager.TESTING_TYPE_MANAGER; import static java.lang.String.format; import static java.util.Collections.singletonList; import static java.util.Locale.ENGLISH; @@ -199,6 +192,7 @@ public final class MetadataManager private final TableFunctionRegistry tableFunctionRegistry; private final TypeManager typeManager; private final TypeCoercion typeCoercion; + private final QueryManager queryManager; private final ConcurrentMap catalogsByQueryId = new ConcurrentHashMap<>(); @@ -210,13 +204,15 @@ public MetadataManager( GlobalFunctionCatalog globalFunctionCatalog, LanguageFunctionManager languageFunctionManager, TableFunctionRegistry tableFunctionRegistry, - TypeManager typeManager) + TypeManager typeManager, + QueryManager queryManager) { this.accessControl = requireNonNull(accessControl, "accessControl is null"); this.typeManager = requireNonNull(typeManager, "typeManager is null"); functions = requireNonNull(globalFunctionCatalog, "globalFunctionCatalog is null"); functionResolver = new BuiltinFunctionResolver(this, typeManager, globalFunctionCatalog); this.typeCoercion = new TypeCoercion(typeManager::getType); + this.queryManager = requireNonNull(queryManager, "queryManager is null"); this.systemSecurityMetadata = requireNonNull(systemSecurityMetadata, "systemSecurityMetadata is null"); this.transactionManager = requireNonNull(transactionManager, "transactionManager is null"); @@ -482,11 +478,33 @@ public TableMetadata getTableMetadata(Session session, TableHandle tableHandle) @Override public TableStatistics getTableStatistics(Session session, TableHandle tableHandle) { - CatalogHandle catalogHandle = tableHandle.catalogHandle(); - ConnectorMetadata metadata = getMetadata(session, catalogHandle); - TableStatistics tableStatistics = metadata.getTableStatistics(session.toConnectorSession(catalogHandle), tableHandle.connectorHandle()); - verifyNotNull(tableStatistics, "%s returned null tableStatistics for %s", metadata, tableHandle); - return tableStatistics; + try { + CatalogHandle catalogHandle = tableHandle.catalogHandle(); + ConnectorMetadata metadata = getMetadata(session, catalogHandle); + TableStatistics tableStatistics = metadata.getTableStatistics(session.toConnectorSession(catalogHandle), tableHandle.connectorHandle()); + verifyNotNull(tableStatistics, "%s returned null tableStatistics for %s", metadata, tableHandle); + return tableStatistics; + } + catch (RuntimeException e) { + if (isQueryDone(session)) { + // getting statistics for finished query may result in many different execeptions being thrown. + // As we do not care about the result anyway mask it by returning empty statistics. + return TableStatistics.empty(); + } + throw e; + } + } + + private boolean isQueryDone(Session session) + { + boolean done; + try { + done = queryManager.getQueryState(session.getQueryId()).isDone(); + } + catch (NoSuchElementException ex) { + done = true; + } + return done; } @Override @@ -2864,82 +2882,4 @@ private static boolean cannotExist(QualifiedObjectName name) { return name.catalogName().isEmpty() || name.schemaName().isEmpty() || name.objectName().isEmpty(); } - - public static MetadataManager createTestMetadataManager() - { - return testMetadataManagerBuilder().build(); - } - - public static TestMetadataManagerBuilder testMetadataManagerBuilder() - { - return new TestMetadataManagerBuilder(); - } - - public static class TestMetadataManagerBuilder - { - private TransactionManager transactionManager; - private TypeManager typeManager = TESTING_TYPE_MANAGER; - private GlobalFunctionCatalog globalFunctionCatalog; - private LanguageFunctionManager languageFunctionManager; - - private TestMetadataManagerBuilder() {} - - public TestMetadataManagerBuilder withTransactionManager(TransactionManager transactionManager) - { - this.transactionManager = transactionManager; - return this; - } - - public TestMetadataManagerBuilder withTypeManager(TypeManager typeManager) - { - this.typeManager = requireNonNull(typeManager, "typeManager is null"); - return this; - } - - public TestMetadataManagerBuilder withGlobalFunctionCatalog(GlobalFunctionCatalog globalFunctionCatalog) - { - this.globalFunctionCatalog = globalFunctionCatalog; - return this; - } - - public TestMetadataManagerBuilder withLanguageFunctionManager(LanguageFunctionManager languageFunctionManager) - { - this.languageFunctionManager = languageFunctionManager; - return this; - } - - public MetadataManager build() - { - TransactionManager transactionManager = this.transactionManager; - if (transactionManager == null) { - transactionManager = createTestTransactionManager(); - } - - GlobalFunctionCatalog globalFunctionCatalog = this.globalFunctionCatalog; - if (globalFunctionCatalog == null) { - globalFunctionCatalog = new GlobalFunctionCatalog( - () -> { throw new UnsupportedOperationException(); }, - () -> { throw new UnsupportedOperationException(); }, - () -> { throw new UnsupportedOperationException(); }); - TypeOperators typeOperators = new TypeOperators(); - globalFunctionCatalog.addFunctions(SystemFunctionBundle.create(new FeaturesConfig(), typeOperators, new BlockTypeOperators(typeOperators), UNKNOWN)); - } - - if (languageFunctionManager == null) { - BlockEncodingSerde blockEncodingSerde = new InternalBlockEncodingSerde(new BlockEncodingManager(), typeManager); - languageFunctionManager = new LanguageFunctionManager(new SqlParser(), typeManager, user -> ImmutableSet.of(), blockEncodingSerde); - } - - TableFunctionRegistry tableFunctionRegistry = new TableFunctionRegistry(_ -> new CatalogTableFunctions(ImmutableList.of())); - - return new MetadataManager( - new AllowAllAccessControl(), - new DisabledSystemSecurityMetadata(), - transactionManager, - globalFunctionCatalog, - languageFunctionManager, - tableFunctionRegistry, - typeManager); - } - } } diff --git a/core/trino-main/src/main/java/io/trino/testing/NotImplementedQueryManager.java b/core/trino-main/src/main/java/io/trino/testing/NotImplementedQueryManager.java new file mode 100644 index 0000000000000..010bbc46082b2 --- /dev/null +++ b/core/trino-main/src/main/java/io/trino/testing/NotImplementedQueryManager.java @@ -0,0 +1,150 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.trino.testing; + +import com.google.common.util.concurrent.ListenableFuture; +import io.trino.Session; +import io.trino.execution.QueryExecution; +import io.trino.execution.QueryInfo; +import io.trino.execution.QueryManager; +import io.trino.execution.QueryState; +import io.trino.execution.StageId; +import io.trino.execution.StateMachine; +import io.trino.execution.TaskId; +import io.trino.server.BasicQueryInfo; +import io.trino.server.ResultQueryInfo; +import io.trino.server.protocol.Slug; +import io.trino.spi.QueryId; + +import java.util.List; +import java.util.NoSuchElementException; +import java.util.function.Consumer; + +public class NotImplementedQueryManager + implements QueryManager +{ + @Override + public List getQueries() + { + throw new RuntimeException("not implemented"); + } + + @Override + public void setOutputInfoListener(QueryId queryId, Consumer listener) + throws NoSuchElementException + { + throw new RuntimeException("not implemented"); + } + + @Override + public void outputTaskFailed(TaskId taskId, Throwable failure) + { + throw new RuntimeException("not implemented"); + } + + @Override + public void resultsConsumed(QueryId queryId) + { + throw new RuntimeException("not implemented"); + } + + @Override + public void addStateChangeListener(QueryId queryId, StateMachine.StateChangeListener listener) + throws NoSuchElementException + { + throw new RuntimeException("not implemented"); + } + + @Override + public ListenableFuture getStateChange(QueryId queryId, QueryState currentState) + { + throw new RuntimeException("not implemented"); + } + + @Override + public BasicQueryInfo getQueryInfo(QueryId queryId) + throws NoSuchElementException + { + throw new RuntimeException("not implemented"); + } + + @Override + public QueryInfo getFullQueryInfo(QueryId queryId) + throws NoSuchElementException + { + throw new RuntimeException("not implemented"); + } + + @Override + public ResultQueryInfo getResultQueryInfo(QueryId queryId) + throws NoSuchElementException + { + throw new RuntimeException("not implemented"); + } + + @Override + public Session getQuerySession(QueryId queryId) + { + throw new RuntimeException("not implemented"); + } + + @Override + public Slug getQuerySlug(QueryId queryId) + { + throw new RuntimeException("not implemented"); + } + + @Override + public QueryState getQueryState(QueryId queryId) + throws NoSuchElementException + { + throw new RuntimeException("not implemented"); + } + + @Override + public boolean hasQuery(QueryId queryId) + { + throw new RuntimeException("not implemented"); + } + + @Override + public void recordHeartbeat(QueryId queryId) + { + throw new RuntimeException("not implemented"); + } + + @Override + public void createQuery(QueryExecution execution) + { + throw new RuntimeException("not implemented"); + } + + @Override + public void failQuery(QueryId queryId, Throwable cause) + { + throw new RuntimeException("not implemented"); + } + + @Override + public void cancelQuery(QueryId queryId) + { + throw new RuntimeException("not implemented"); + } + + @Override + public void cancelStage(StageId stageId) + { + throw new RuntimeException("not implemented"); + } +} diff --git a/core/trino-main/src/main/java/io/trino/testing/PlanTester.java b/core/trino-main/src/main/java/io/trino/testing/PlanTester.java index dfd3383546222..af5122e74d71b 100644 --- a/core/trino-main/src/main/java/io/trino/testing/PlanTester.java +++ b/core/trino-main/src/main/java/io/trino/testing/PlanTester.java @@ -366,7 +366,8 @@ private PlanTester(Session defaultSession, int nodeCountForStats) globalFunctionCatalog, languageFunctionManager, tableFunctionRegistry, - typeManager); + typeManager, + new NotImplementedQueryManager()); typeRegistry.addType(new JsonPath2016Type(new TypeDeserializer(typeManager), blockEncodingSerde)); this.joinCompiler = new JoinCompiler(typeOperators); this.hashStrategyCompiler = new FlatHashStrategyCompiler(typeOperators); diff --git a/core/trino-main/src/test/java/io/trino/cost/TestFilterStatsCalculator.java b/core/trino-main/src/test/java/io/trino/cost/TestFilterStatsCalculator.java index 9777b1e3c2099..568a7ff5c2b40 100644 --- a/core/trino-main/src/test/java/io/trino/cost/TestFilterStatsCalculator.java +++ b/core/trino-main/src/test/java/io/trino/cost/TestFilterStatsCalculator.java @@ -17,8 +17,8 @@ import io.airlift.slice.Slices; import io.trino.Session; import io.trino.metadata.Metadata; -import io.trino.metadata.MetadataManager; import io.trino.metadata.ResolvedFunction; +import io.trino.metadata.TestMetadataManager; import io.trino.metadata.TestingFunctionResolution; import io.trino.plugin.base.util.JsonTypeUtil; import io.trino.security.AllowAllAccessControl; @@ -855,7 +855,7 @@ private PlanNodeStatsAssertion assertExpression(Expression expression, Session s private PlanNodeStatsAssertion assertExpression(Expression expression, Session session, PlanNodeStatsEstimate inputStatistics) { TransactionManager transactionManager = new TestingTransactionManager(); - Metadata metadata = MetadataManager.testMetadataManagerBuilder().withTransactionManager(transactionManager).build(); + Metadata metadata = TestMetadataManager.builder().withTransactionManager(transactionManager).build(); return transaction(transactionManager, metadata, new AllowAllAccessControl()) .singleStatement() .execute(session, transactionSession -> { diff --git a/core/trino-main/src/test/java/io/trino/cost/TestScalarStatsCalculator.java b/core/trino-main/src/test/java/io/trino/cost/TestScalarStatsCalculator.java index 69648f2cf5c7d..4ee542b973318 100644 --- a/core/trino-main/src/test/java/io/trino/cost/TestScalarStatsCalculator.java +++ b/core/trino-main/src/test/java/io/trino/cost/TestScalarStatsCalculator.java @@ -17,8 +17,8 @@ import io.airlift.slice.Slices; import io.trino.Session; import io.trino.metadata.Metadata; -import io.trino.metadata.MetadataManager; import io.trino.metadata.ResolvedFunction; +import io.trino.metadata.TestMetadataManager; import io.trino.metadata.TestingFunctionResolution; import io.trino.security.AllowAllAccessControl; import io.trino.spi.function.OperatorType; @@ -284,7 +284,7 @@ private SymbolStatsAssertion assertCalculate(Expression scalarExpression) private SymbolStatsAssertion assertCalculate(Expression scalarExpression, PlanNodeStatsEstimate inputStatistics) { TransactionManager transactionManager = new TestingTransactionManager(); - Metadata metadata = MetadataManager.testMetadataManagerBuilder().withTransactionManager(transactionManager).build(); + Metadata metadata = TestMetadataManager.builder().withTransactionManager(transactionManager).build(); return transaction(transactionManager, metadata, new AllowAllAccessControl()) .singleStatement() .execute(session, transactionSession -> { diff --git a/core/trino-main/src/test/java/io/trino/dispatcher/TestLocalDispatchQuery.java b/core/trino-main/src/test/java/io/trino/dispatcher/TestLocalDispatchQuery.java index 5f8d7f2a4dc87..2f156e636c63d 100644 --- a/core/trino-main/src/test/java/io/trino/dispatcher/TestLocalDispatchQuery.java +++ b/core/trino-main/src/test/java/io/trino/dispatcher/TestLocalDispatchQuery.java @@ -78,7 +78,7 @@ import static io.airlift.concurrent.Threads.daemonThreadsNamed; import static io.trino.SessionTestUtils.TEST_SESSION; import static io.trino.execution.querystats.PlanOptimizersStatsCollector.createPlanOptimizersStatsCollector; -import static io.trino.metadata.MetadataManager.createTestMetadataManager; +import static io.trino.metadata.TestMetadataManager.createTestMetadataManager; import static io.trino.sql.tree.SaveMode.FAIL; import static io.trino.testing.TestingEventListenerManager.emptyEventListenerManager; import static io.trino.transaction.InMemoryTransactionManager.createTestTransactionManager; diff --git a/core/trino-main/src/test/java/io/trino/execution/BaseDataDefinitionTaskTest.java b/core/trino-main/src/test/java/io/trino/execution/BaseDataDefinitionTaskTest.java index 80403b075ec6d..6e3f7e5e38f58 100644 --- a/core/trino-main/src/test/java/io/trino/execution/BaseDataDefinitionTaskTest.java +++ b/core/trino-main/src/test/java/io/trino/execution/BaseDataDefinitionTaskTest.java @@ -82,7 +82,7 @@ import static com.google.common.collect.MoreCollectors.onlyElement; import static com.google.common.util.concurrent.MoreExecutors.directExecutor; import static io.trino.execution.querystats.PlanOptimizersStatsCollector.createPlanOptimizersStatsCollector; -import static io.trino.metadata.MetadataManager.createTestMetadataManager; +import static io.trino.metadata.TestMetadataManager.createTestMetadataManager; import static io.trino.spi.StandardErrorCode.ALREADY_EXISTS; import static io.trino.spi.StandardErrorCode.DIVISION_BY_ZERO; import static io.trino.spi.connector.SaveMode.IGNORE; diff --git a/core/trino-main/src/test/java/io/trino/execution/TestCommitTask.java b/core/trino-main/src/test/java/io/trino/execution/TestCommitTask.java index a6669e96563a8..d95c9783e803e 100644 --- a/core/trino-main/src/test/java/io/trino/execution/TestCommitTask.java +++ b/core/trino-main/src/test/java/io/trino/execution/TestCommitTask.java @@ -43,7 +43,7 @@ import static io.airlift.concurrent.MoreFutures.getFutureValue; import static io.airlift.concurrent.Threads.daemonThreadsNamed; import static io.trino.execution.querystats.PlanOptimizersStatsCollector.createPlanOptimizersStatsCollector; -import static io.trino.metadata.MetadataManager.createTestMetadataManager; +import static io.trino.metadata.TestMetadataManager.createTestMetadataManager; import static io.trino.plugin.tpch.TpchMetadata.TINY_SCHEMA_NAME; import static io.trino.spi.StandardErrorCode.NOT_IN_TRANSACTION; import static io.trino.spi.StandardErrorCode.UNKNOWN_TRANSACTION; diff --git a/core/trino-main/src/test/java/io/trino/execution/TestDeallocateTask.java b/core/trino-main/src/test/java/io/trino/execution/TestDeallocateTask.java index a8bc91cedd206..b63ab4a9caba4 100644 --- a/core/trino-main/src/test/java/io/trino/execution/TestDeallocateTask.java +++ b/core/trino-main/src/test/java/io/trino/execution/TestDeallocateTask.java @@ -44,7 +44,7 @@ import static io.airlift.concurrent.Threads.daemonThreadsNamed; import static io.trino.SessionTestUtils.TEST_SESSION; import static io.trino.execution.querystats.PlanOptimizersStatsCollector.createPlanOptimizersStatsCollector; -import static io.trino.metadata.MetadataManager.createTestMetadataManager; +import static io.trino.metadata.TestMetadataManager.createTestMetadataManager; import static io.trino.spi.StandardErrorCode.NOT_FOUND; import static io.trino.testing.TestingEventListenerManager.emptyEventListenerManager; import static io.trino.testing.TestingSession.testSessionBuilder; diff --git a/core/trino-main/src/test/java/io/trino/execution/TestPrepareTask.java b/core/trino-main/src/test/java/io/trino/execution/TestPrepareTask.java index 535bf717c8d8f..2c1187c65e5aa 100644 --- a/core/trino-main/src/test/java/io/trino/execution/TestPrepareTask.java +++ b/core/trino-main/src/test/java/io/trino/execution/TestPrepareTask.java @@ -48,7 +48,7 @@ import static io.airlift.concurrent.Threads.daemonThreadsNamed; import static io.trino.SessionTestUtils.TEST_SESSION; import static io.trino.execution.querystats.PlanOptimizersStatsCollector.createPlanOptimizersStatsCollector; -import static io.trino.metadata.MetadataManager.createTestMetadataManager; +import static io.trino.metadata.TestMetadataManager.createTestMetadataManager; import static io.trino.spi.StandardErrorCode.NOT_SUPPORTED; import static io.trino.sql.QueryUtil.identifier; import static io.trino.sql.QueryUtil.selectList; diff --git a/core/trino-main/src/test/java/io/trino/execution/TestQueryStateMachine.java b/core/trino-main/src/test/java/io/trino/execution/TestQueryStateMachine.java index 24cc88644b480..eed4fdea1461e 100644 --- a/core/trino-main/src/test/java/io/trino/execution/TestQueryStateMachine.java +++ b/core/trino-main/src/test/java/io/trino/execution/TestQueryStateMachine.java @@ -89,7 +89,7 @@ import static io.trino.execution.QueryState.STARTING; import static io.trino.execution.QueryState.WAITING_FOR_RESOURCES; import static io.trino.execution.querystats.PlanOptimizersStatsCollector.createPlanOptimizersStatsCollector; -import static io.trino.metadata.MetadataManager.createTestMetadataManager; +import static io.trino.metadata.TestMetadataManager.createTestMetadataManager; import static io.trino.spi.StandardErrorCode.GENERIC_INTERNAL_ERROR; import static io.trino.spi.StandardErrorCode.TYPE_MISMATCH; import static io.trino.spi.StandardErrorCode.USER_CANCELED; diff --git a/core/trino-main/src/test/java/io/trino/execution/TestRollbackTask.java b/core/trino-main/src/test/java/io/trino/execution/TestRollbackTask.java index 3dd9480407e24..e382207af9c84 100644 --- a/core/trino-main/src/test/java/io/trino/execution/TestRollbackTask.java +++ b/core/trino-main/src/test/java/io/trino/execution/TestRollbackTask.java @@ -38,7 +38,7 @@ import static io.airlift.concurrent.MoreFutures.getFutureValue; import static io.airlift.concurrent.Threads.daemonThreadsNamed; import static io.trino.execution.querystats.PlanOptimizersStatsCollector.createPlanOptimizersStatsCollector; -import static io.trino.metadata.MetadataManager.createTestMetadataManager; +import static io.trino.metadata.TestMetadataManager.createTestMetadataManager; import static io.trino.plugin.tpch.TpchMetadata.TINY_SCHEMA_NAME; import static io.trino.spi.StandardErrorCode.NOT_IN_TRANSACTION; import static io.trino.testing.TestingSession.testSessionBuilder; diff --git a/core/trino-main/src/test/java/io/trino/execution/TestSetPathTask.java b/core/trino-main/src/test/java/io/trino/execution/TestSetPathTask.java index 117efdd72cb41..6bede96b4b63e 100644 --- a/core/trino-main/src/test/java/io/trino/execution/TestSetPathTask.java +++ b/core/trino-main/src/test/java/io/trino/execution/TestSetPathTask.java @@ -17,6 +17,7 @@ import io.trino.client.NodeVersion; import io.trino.execution.warnings.WarningCollector; import io.trino.metadata.Metadata; +import io.trino.metadata.TestMetadataManager; import io.trino.security.AccessControl; import io.trino.security.AllowAllAccessControl; import io.trino.spi.TrinoException; @@ -40,7 +41,6 @@ import static io.airlift.concurrent.MoreFutures.getFutureValue; import static io.airlift.concurrent.Threads.daemonThreadsNamed; import static io.trino.execution.querystats.PlanOptimizersStatsCollector.createPlanOptimizersStatsCollector; -import static io.trino.metadata.MetadataManager.testMetadataManagerBuilder; import static io.trino.testing.TestingSession.testSession; import static io.trino.transaction.InMemoryTransactionManager.createTestTransactionManager; import static java.util.Collections.emptyList; @@ -66,7 +66,7 @@ public void setUp() transactionManager = createTestTransactionManager(); accessControl = new AllowAllAccessControl(); - metadata = testMetadataManagerBuilder() + metadata = TestMetadataManager.builder() .withTransactionManager(transactionManager) .build(); } diff --git a/core/trino-main/src/test/java/io/trino/execution/TestSetSessionAuthorizationTask.java b/core/trino-main/src/test/java/io/trino/execution/TestSetSessionAuthorizationTask.java index ced3605669405..fcc737fa765b8 100644 --- a/core/trino-main/src/test/java/io/trino/execution/TestSetSessionAuthorizationTask.java +++ b/core/trino-main/src/test/java/io/trino/execution/TestSetSessionAuthorizationTask.java @@ -16,6 +16,7 @@ import io.trino.client.NodeVersion; import io.trino.execution.warnings.WarningCollector; import io.trino.metadata.Metadata; +import io.trino.metadata.TestMetadataManager; import io.trino.security.AccessControl; import io.trino.security.AllowAllAccessControl; import io.trino.spi.TrinoException; @@ -36,7 +37,6 @@ import static io.airlift.concurrent.Threads.daemonThreadsNamed; import static io.trino.execution.querystats.PlanOptimizersStatsCollector.createPlanOptimizersStatsCollector; -import static io.trino.metadata.MetadataManager.testMetadataManagerBuilder; import static io.trino.testing.TestingSession.testSessionBuilder; import static io.trino.transaction.InMemoryTransactionManager.createTestTransactionManager; import static java.util.Collections.emptyList; @@ -61,7 +61,7 @@ public void setUp() { transactionManager = createTestTransactionManager(); accessControl = new AllowAllAccessControl(); - metadata = testMetadataManagerBuilder() + metadata = TestMetadataManager.builder() .withTransactionManager(transactionManager) .build(); parser = new SqlParser(); diff --git a/core/trino-main/src/test/java/io/trino/execution/TestStartTransactionTask.java b/core/trino-main/src/test/java/io/trino/execution/TestStartTransactionTask.java index 2c6ff435e8ad6..1964d23510d7e 100644 --- a/core/trino-main/src/test/java/io/trino/execution/TestStartTransactionTask.java +++ b/core/trino-main/src/test/java/io/trino/execution/TestStartTransactionTask.java @@ -52,7 +52,7 @@ import static io.airlift.concurrent.Threads.daemonThreadsNamed; import static io.trino.execution.querystats.PlanOptimizersStatsCollector.createPlanOptimizersStatsCollector; import static io.trino.metadata.CatalogManager.NO_CATALOGS; -import static io.trino.metadata.MetadataManager.createTestMetadataManager; +import static io.trino.metadata.TestMetadataManager.createTestMetadataManager; import static io.trino.plugin.tpch.TpchMetadata.TINY_SCHEMA_NAME; import static io.trino.spi.StandardErrorCode.INCOMPATIBLE_CLIENT; import static io.trino.spi.StandardErrorCode.NOT_SUPPORTED; diff --git a/core/trino-main/src/test/java/io/trino/execution/scheduler/TestMultiSourcePartitionedScheduler.java b/core/trino-main/src/test/java/io/trino/execution/scheduler/TestMultiSourcePartitionedScheduler.java index e3e282fe407e5..23161d0a4ac7e 100644 --- a/core/trino-main/src/test/java/io/trino/execution/scheduler/TestMultiSourcePartitionedScheduler.java +++ b/core/trino-main/src/test/java/io/trino/execution/scheduler/TestMultiSourcePartitionedScheduler.java @@ -101,7 +101,7 @@ import static io.trino.execution.scheduler.StageExecution.State.PLANNED; import static io.trino.execution.scheduler.StageExecution.State.SCHEDULING; import static io.trino.metadata.FunctionManager.createTestingFunctionManager; -import static io.trino.metadata.MetadataManager.createTestMetadataManager; +import static io.trino.metadata.TestMetadataManager.createTestMetadataManager; import static io.trino.spi.type.BigintType.BIGINT; import static io.trino.spi.type.VarcharType.VARCHAR; import static io.trino.sql.DynamicFilters.createDynamicFilterExpression; diff --git a/core/trino-main/src/test/java/io/trino/execution/scheduler/TestSourcePartitionedScheduler.java b/core/trino-main/src/test/java/io/trino/execution/scheduler/TestSourcePartitionedScheduler.java index 7a615fcd3204b..e7d8a46ec557c 100644 --- a/core/trino-main/src/test/java/io/trino/execution/scheduler/TestSourcePartitionedScheduler.java +++ b/core/trino-main/src/test/java/io/trino/execution/scheduler/TestSourcePartitionedScheduler.java @@ -93,7 +93,7 @@ import static io.trino.execution.scheduler.StageExecution.State.PLANNED; import static io.trino.execution.scheduler.StageExecution.State.SCHEDULING; import static io.trino.metadata.FunctionManager.createTestingFunctionManager; -import static io.trino.metadata.MetadataManager.createTestMetadataManager; +import static io.trino.metadata.TestMetadataManager.createTestMetadataManager; import static io.trino.spi.StandardErrorCode.NO_NODES_AVAILABLE; import static io.trino.spi.type.BigintType.BIGINT; import static io.trino.spi.type.VarcharType.VARCHAR; diff --git a/core/trino-main/src/test/java/io/trino/execution/scheduler/policy/TestPhasedExecutionSchedule.java b/core/trino-main/src/test/java/io/trino/execution/scheduler/policy/TestPhasedExecutionSchedule.java index c310eaabc32d3..3456242dbc729 100644 --- a/core/trino-main/src/test/java/io/trino/execution/scheduler/policy/TestPhasedExecutionSchedule.java +++ b/core/trino-main/src/test/java/io/trino/execution/scheduler/policy/TestPhasedExecutionSchedule.java @@ -53,7 +53,7 @@ import static io.trino.execution.scheduler.policy.PlanUtils.createJoinPlanFragment; import static io.trino.execution.scheduler.policy.PlanUtils.createTableScanPlanFragment; import static io.trino.metadata.FunctionManager.createTestingFunctionManager; -import static io.trino.metadata.MetadataManager.createTestMetadataManager; +import static io.trino.metadata.TestMetadataManager.createTestMetadataManager; import static io.trino.sql.planner.plan.JoinNode.DistributionType.PARTITIONED; import static io.trino.sql.planner.plan.JoinNode.DistributionType.REPLICATED; import static io.trino.sql.planner.plan.JoinType.INNER; diff --git a/core/trino-main/src/test/java/io/trino/json/TestJsonPathEvaluator.java b/core/trino-main/src/test/java/io/trino/json/TestJsonPathEvaluator.java index 6e923956f4218..db6793a28296c 100644 --- a/core/trino-main/src/test/java/io/trino/json/TestJsonPathEvaluator.java +++ b/core/trino-main/src/test/java/io/trino/json/TestJsonPathEvaluator.java @@ -47,7 +47,7 @@ import static io.airlift.slice.Slices.utf8Slice; import static io.trino.json.JsonEmptySequenceNode.EMPTY_SEQUENCE; import static io.trino.metadata.FunctionManager.createTestingFunctionManager; -import static io.trino.metadata.MetadataManager.createTestMetadataManager; +import static io.trino.metadata.TestMetadataManager.createTestMetadataManager; import static io.trino.spi.type.BigintType.BIGINT; import static io.trino.spi.type.BooleanType.BOOLEAN; import static io.trino.spi.type.CharType.createCharType; diff --git a/core/trino-main/src/test/java/io/trino/metadata/TestMetadataManager.java b/core/trino-main/src/test/java/io/trino/metadata/TestMetadataManager.java new file mode 100644 index 0000000000000..c1cc1f504fc06 --- /dev/null +++ b/core/trino-main/src/test/java/io/trino/metadata/TestMetadataManager.java @@ -0,0 +1,115 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.trino.metadata; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; +import io.trino.FeaturesConfig; +import io.trino.security.AllowAllAccessControl; +import io.trino.spi.block.BlockEncodingSerde; +import io.trino.spi.type.TypeManager; +import io.trino.spi.type.TypeOperators; +import io.trino.sql.parser.SqlParser; +import io.trino.testing.NotImplementedQueryManager; +import io.trino.transaction.TransactionManager; +import io.trino.type.BlockTypeOperators; + +import static io.trino.client.NodeVersion.UNKNOWN; +import static io.trino.transaction.InMemoryTransactionManager.createTestTransactionManager; +import static io.trino.type.InternalTypeManager.TESTING_TYPE_MANAGER; +import static java.util.Objects.requireNonNull; + +public final class TestMetadataManager +{ + private TestMetadataManager() {} + + public static MetadataManager createTestMetadataManager() + { + return builder().build(); + } + + public static TestMetadataManager.Builder builder() + { + return new Builder(); + } + + public static class Builder + { + private TransactionManager transactionManager; + private TypeManager typeManager = TESTING_TYPE_MANAGER; + private GlobalFunctionCatalog globalFunctionCatalog; + private LanguageFunctionManager languageFunctionManager; + + private Builder() {} + + public Builder withTransactionManager(TransactionManager transactionManager) + { + this.transactionManager = transactionManager; + return this; + } + + public Builder withTypeManager(TypeManager typeManager) + { + this.typeManager = requireNonNull(typeManager, "typeManager is null"); + return this; + } + + public Builder withGlobalFunctionCatalog(GlobalFunctionCatalog globalFunctionCatalog) + { + this.globalFunctionCatalog = globalFunctionCatalog; + return this; + } + + public Builder withLanguageFunctionManager(LanguageFunctionManager languageFunctionManager) + { + this.languageFunctionManager = languageFunctionManager; + return this; + } + + public MetadataManager build() + { + TransactionManager transactionManager = this.transactionManager; + if (transactionManager == null) { + transactionManager = createTestTransactionManager(); + } + + GlobalFunctionCatalog globalFunctionCatalog = this.globalFunctionCatalog; + if (globalFunctionCatalog == null) { + globalFunctionCatalog = new GlobalFunctionCatalog( + () -> { throw new UnsupportedOperationException(); }, + () -> { throw new UnsupportedOperationException(); }, + () -> { throw new UnsupportedOperationException(); }); + TypeOperators typeOperators = new TypeOperators(); + globalFunctionCatalog.addFunctions(SystemFunctionBundle.create(new FeaturesConfig(), typeOperators, new BlockTypeOperators(typeOperators), UNKNOWN)); + } + + if (languageFunctionManager == null) { + BlockEncodingSerde blockEncodingSerde = new InternalBlockEncodingSerde(new BlockEncodingManager(), typeManager); + languageFunctionManager = new LanguageFunctionManager(new SqlParser(), typeManager, user -> ImmutableSet.of(), blockEncodingSerde); + } + + TableFunctionRegistry tableFunctionRegistry = new TableFunctionRegistry(_ -> new CatalogTableFunctions(ImmutableList.of())); + + return new MetadataManager( + new AllowAllAccessControl(), + new DisabledSystemSecurityMetadata(), + transactionManager, + globalFunctionCatalog, + languageFunctionManager, + tableFunctionRegistry, + typeManager, + new NotImplementedQueryManager()); + } + } +} diff --git a/core/trino-main/src/test/java/io/trino/security/TestAccessControlManager.java b/core/trino-main/src/test/java/io/trino/security/TestAccessControlManager.java index 473b4b1b313e7..43661100c2d7c 100644 --- a/core/trino-main/src/test/java/io/trino/security/TestAccessControlManager.java +++ b/core/trino-main/src/test/java/io/trino/security/TestAccessControlManager.java @@ -24,8 +24,8 @@ import io.trino.connector.MockConnectorPlugin; import io.trino.eventlistener.EventListenerManager; import io.trino.metadata.Metadata; -import io.trino.metadata.MetadataManager; import io.trino.metadata.QualifiedObjectName; +import io.trino.metadata.TestMetadataManager; import io.trino.plugin.base.security.AllowAllAccessControl; import io.trino.plugin.base.security.AllowAllSystemAccessControl; import io.trino.plugin.base.security.DefaultSystemAccessControl; @@ -134,7 +134,7 @@ public void testReadOnlySystemAccessControl() public void testNoCatalogAccessControl() { TransactionManager transactionManager = createTestTransactionManager(); - Metadata metadata = MetadataManager.testMetadataManagerBuilder().withTransactionManager(transactionManager).build(); + Metadata metadata = TestMetadataManager.builder().withTransactionManager(transactionManager).build(); AccessControlManager accessControlManager = createAccessControlManager(transactionManager); accessControlManager.setSystemAccessControls(ImmutableList.of(new TestSystemAccessControl())); diff --git a/core/trino-main/src/test/java/io/trino/security/TestFileBasedSystemAccessControl.java b/core/trino-main/src/test/java/io/trino/security/TestFileBasedSystemAccessControl.java index 84f6ba3b61e89..0d518814d64ea 100644 --- a/core/trino-main/src/test/java/io/trino/security/TestFileBasedSystemAccessControl.java +++ b/core/trino-main/src/test/java/io/trino/security/TestFileBasedSystemAccessControl.java @@ -20,8 +20,8 @@ import io.opentelemetry.api.OpenTelemetry; import io.trino.client.NodeVersion; import io.trino.metadata.Metadata; -import io.trino.metadata.MetadataManager; import io.trino.metadata.QualifiedObjectName; +import io.trino.metadata.TestMetadataManager; import io.trino.plugin.base.security.DefaultSystemAccessControl; import io.trino.plugin.base.security.FileBasedSystemAccessControl; import io.trino.spi.QueryId; @@ -194,7 +194,7 @@ public void testCanSetUserOperations() public void testSystemInformation() { TransactionManager transactionManager = createTestTransactionManager(); - Metadata metadata = MetadataManager.testMetadataManagerBuilder().withTransactionManager(transactionManager).build(); + Metadata metadata = TestMetadataManager.builder().withTransactionManager(transactionManager).build(); AccessControlManager accessControlManager = newAccessControlManager(transactionManager, "system_information.json"); accessControlManager.checkCanReadSystemInformation(admin); @@ -223,7 +223,7 @@ public void testSystemInformation() public void testCatalogOperations() { TransactionManager transactionManager = createTestTransactionManager(); - Metadata metadata = MetadataManager.testMetadataManagerBuilder().withTransactionManager(transactionManager).build(); + Metadata metadata = TestMetadataManager.builder().withTransactionManager(transactionManager).build(); AccessControlManager accessControlManager = newAccessControlManager(transactionManager, "catalog.json"); transaction(transactionManager, metadata, accessControlManager) @@ -242,7 +242,7 @@ public void testCatalogOperations() public void testCatalogOperationsReadOnly() { TransactionManager transactionManager = createTestTransactionManager(); - Metadata metadata = MetadataManager.testMetadataManagerBuilder().withTransactionManager(transactionManager).build(); + Metadata metadata = TestMetadataManager.builder().withTransactionManager(transactionManager).build(); AccessControlManager accessControlManager = newAccessControlManager(transactionManager, "catalog_read_only.json"); transaction(transactionManager, metadata, accessControlManager) @@ -261,7 +261,7 @@ public void testCatalogOperationsReadOnly() public void testSchemaOperations() { TransactionManager transactionManager = createTestTransactionManager(); - Metadata metadata = MetadataManager.testMetadataManagerBuilder().withTransactionManager(transactionManager).build(); + Metadata metadata = TestMetadataManager.builder().withTransactionManager(transactionManager).build(); AccessControlManager accessControlManager = newAccessControlManager(transactionManager, "catalog.json"); transaction(transactionManager, metadata, accessControlManager) @@ -285,7 +285,7 @@ public void testSchemaOperations() public void testSchemaOperationsReadOnly() { TransactionManager transactionManager = createTestTransactionManager(); - Metadata metadata = MetadataManager.testMetadataManagerBuilder().withTransactionManager(transactionManager).build(); + Metadata metadata = TestMetadataManager.builder().withTransactionManager(transactionManager).build(); AccessControlManager accessControlManager = newAccessControlManager(transactionManager, "catalog_read_only.json"); transaction(transactionManager, metadata, accessControlManager) @@ -322,7 +322,7 @@ public void testSchemaOperationsReadOnly() public void testTableOperations() { TransactionManager transactionManager = createTestTransactionManager(); - Metadata metadata = MetadataManager.testMetadataManagerBuilder().withTransactionManager(transactionManager).build(); + Metadata metadata = TestMetadataManager.builder().withTransactionManager(transactionManager).build(); AccessControlManager accessControlManager = newAccessControlManager(transactionManager, "catalog.json"); transaction(transactionManager, metadata, accessControlManager) @@ -471,7 +471,7 @@ public void testTableOperations() public void testTableOperationsReadOnly() { TransactionManager transactionManager = createTestTransactionManager(); - Metadata metadata = MetadataManager.testMetadataManagerBuilder().withTransactionManager(transactionManager).build(); + Metadata metadata = TestMetadataManager.builder().withTransactionManager(transactionManager).build(); AccessControlManager accessControlManager = newAccessControlManager(transactionManager, "catalog_read_only.json"); transaction(transactionManager, metadata, accessControlManager) @@ -533,7 +533,7 @@ public void testTableOperationsReadOnly() public void testViewOperations() { TransactionManager transactionManager = createTestTransactionManager(); - Metadata metadata = MetadataManager.testMetadataManagerBuilder().withTransactionManager(transactionManager).build(); + Metadata metadata = TestMetadataManager.builder().withTransactionManager(transactionManager).build(); AccessControlManager accessControlManager = newAccessControlManager(transactionManager, "catalog.json"); transaction(transactionManager, metadata, accessControlManager) @@ -650,7 +650,7 @@ public void testViewOperations() public void testViewOperationsReadOnly() { TransactionManager transactionManager = createTestTransactionManager(); - Metadata metadata = MetadataManager.testMetadataManagerBuilder().withTransactionManager(transactionManager).build(); + Metadata metadata = TestMetadataManager.builder().withTransactionManager(transactionManager).build(); AccessControlManager accessControlManager = newAccessControlManager(transactionManager, "catalog_read_only.json"); transaction(transactionManager, metadata, accessControlManager) @@ -690,7 +690,7 @@ public void testViewOperationsReadOnly() public void testMaterializedViewAccess() { TransactionManager transactionManager = createTestTransactionManager(); - Metadata metadata = MetadataManager.testMetadataManagerBuilder().withTransactionManager(transactionManager).build(); + Metadata metadata = TestMetadataManager.builder().withTransactionManager(transactionManager).build(); AccessControlManager accessControlManager = newAccessControlManager(transactionManager, "catalog.json"); transaction(transactionManager, metadata, accessControlManager) @@ -749,7 +749,7 @@ public void testMaterializedViewAccess() public void testReadOnlyMaterializedViewAccess() { TransactionManager transactionManager = createTestTransactionManager(); - Metadata metadata = MetadataManager.testMetadataManagerBuilder().withTransactionManager(transactionManager).build(); + Metadata metadata = TestMetadataManager.builder().withTransactionManager(transactionManager).build(); AccessControlManager accessControlManager = newAccessControlManager(transactionManager, "catalog_read_only.json"); transaction(transactionManager, metadata, accessControlManager) @@ -800,7 +800,7 @@ public void testRefreshing() throws Exception { TransactionManager transactionManager = createTestTransactionManager(); - Metadata metadata = MetadataManager.testMetadataManagerBuilder().withTransactionManager(transactionManager).build(); + Metadata metadata = TestMetadataManager.builder().withTransactionManager(transactionManager).build(); AccessControlManager accessControlManager = new AccessControlManager( NodeVersion.UNKNOWN, transactionManager, diff --git a/core/trino-main/src/test/java/io/trino/server/TestDynamicFilterService.java b/core/trino-main/src/test/java/io/trino/server/TestDynamicFilterService.java index f9cacade2b4b8..e34c101d09c5d 100644 --- a/core/trino-main/src/test/java/io/trino/server/TestDynamicFilterService.java +++ b/core/trino-main/src/test/java/io/trino/server/TestDynamicFilterService.java @@ -64,7 +64,7 @@ import static io.airlift.slice.Slices.utf8Slice; import static io.airlift.units.DataSize.Unit.KILOBYTE; import static io.trino.SystemSessionProperties.RETRY_POLICY; -import static io.trino.metadata.MetadataManager.createTestMetadataManager; +import static io.trino.metadata.TestMetadataManager.createTestMetadataManager; import static io.trino.server.DynamicFilterService.DynamicFilterDomainStats; import static io.trino.server.DynamicFilterService.DynamicFiltersStats; import static io.trino.server.DynamicFilterService.getOutboundDynamicFilters; diff --git a/core/trino-main/src/test/java/io/trino/server/TestHttpRequestSessionContextFactory.java b/core/trino-main/src/test/java/io/trino/server/TestHttpRequestSessionContextFactory.java index c7ecc7b8c496a..ec7b01e6b02eb 100644 --- a/core/trino-main/src/test/java/io/trino/server/TestHttpRequestSessionContextFactory.java +++ b/core/trino-main/src/test/java/io/trino/server/TestHttpRequestSessionContextFactory.java @@ -36,7 +36,7 @@ import static io.trino.SystemSessionProperties.QUERY_MAX_MEMORY; import static io.trino.client.ProtocolHeaders.TRINO_HEADERS; import static io.trino.client.ProtocolHeaders.createProtocolHeaders; -import static io.trino.metadata.MetadataManager.createTestMetadataManager; +import static io.trino.metadata.TestMetadataManager.createTestMetadataManager; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; diff --git a/core/trino-main/src/test/java/io/trino/server/TestQuerySessionSupplier.java b/core/trino-main/src/test/java/io/trino/server/TestQuerySessionSupplier.java index 3ed516664f5bd..fbdec34aaa093 100644 --- a/core/trino-main/src/test/java/io/trino/server/TestQuerySessionSupplier.java +++ b/core/trino-main/src/test/java/io/trino/server/TestQuerySessionSupplier.java @@ -24,6 +24,7 @@ import io.trino.connector.system.GlobalSystemConnector; import io.trino.metadata.Metadata; import io.trino.metadata.SessionPropertyManager; +import io.trino.metadata.TestMetadataManager; import io.trino.security.AllowAllAccessControl; import io.trino.server.protocol.PreparedStatementEncoder; import io.trino.server.protocol.spooling.QueryDataEncoder; @@ -45,8 +46,7 @@ import static io.trino.client.ProtocolHeaders.TRINO_HEADERS; import static io.trino.metadata.GlobalFunctionCatalog.BUILTIN_SCHEMA; import static io.trino.metadata.LanguageFunctionManager.QUERY_LOCAL_SCHEMA; -import static io.trino.metadata.MetadataManager.createTestMetadataManager; -import static io.trino.metadata.MetadataManager.testMetadataManagerBuilder; +import static io.trino.metadata.TestMetadataManager.createTestMetadataManager; import static io.trino.spi.type.TimeZoneKey.getTimeZoneKey; import static io.trino.transaction.InMemoryTransactionManager.createTestTransactionManager; import static org.assertj.core.api.Assertions.assertThat; @@ -241,7 +241,7 @@ private static Session createSession(ListMultimap headers, SqlEn private static QuerySessionSupplier createSessionSupplier(SqlEnvironmentConfig config) { TransactionManager transactionManager = createTestTransactionManager(); - Metadata metadata = testMetadataManagerBuilder() + Metadata metadata = TestMetadataManager.builder() .withTransactionManager(transactionManager) .build(); return new QuerySessionSupplier( diff --git a/core/trino-main/src/test/java/io/trino/server/remotetask/TestHttpRemoteTask.java b/core/trino-main/src/test/java/io/trino/server/remotetask/TestHttpRemoteTask.java index 86d2b64b5fc1e..0b63590dffd39 100644 --- a/core/trino-main/src/test/java/io/trino/server/remotetask/TestHttpRemoteTask.java +++ b/core/trino-main/src/test/java/io/trino/server/remotetask/TestHttpRemoteTask.java @@ -133,7 +133,7 @@ import static io.trino.execution.TaskState.FAILED; import static io.trino.execution.TaskTestUtils.TABLE_SCAN_NODE_ID; import static io.trino.execution.buffer.PipelinedOutputBuffers.BufferType.BROADCAST; -import static io.trino.metadata.MetadataManager.createTestMetadataManager; +import static io.trino.metadata.TestMetadataManager.createTestMetadataManager; import static io.trino.plugin.tpch.TpchMetadata.TINY_SCHEMA_NAME; import static io.trino.server.InternalHeaders.TRINO_CURRENT_VERSION; import static io.trino.server.InternalHeaders.TRINO_MAX_WAIT; diff --git a/core/trino-main/src/test/java/io/trino/server/security/TestResourceSecurity.java b/core/trino-main/src/test/java/io/trino/server/security/TestResourceSecurity.java index 4f7dd10d7bad7..b7c68c12c66ba 100644 --- a/core/trino-main/src/test/java/io/trino/server/security/TestResourceSecurity.java +++ b/core/trino-main/src/test/java/io/trino/server/security/TestResourceSecurity.java @@ -99,7 +99,7 @@ import static io.jsonwebtoken.security.Keys.hmacShaKeyFor; import static io.trino.client.OkHttpUtil.setupSsl; import static io.trino.client.ProtocolHeaders.TRINO_HEADERS; -import static io.trino.metadata.MetadataManager.createTestMetadataManager; +import static io.trino.metadata.TestMetadataManager.createTestMetadataManager; import static io.trino.server.security.ResourceSecurity.AccessType.AUTHENTICATED_USER; import static io.trino.server.security.ResourceSecurity.AccessType.WEB_UI; import static io.trino.server.security.jwt.JwtUtil.newJwtBuilder; diff --git a/core/trino-main/src/test/java/io/trino/server/ui/TestWebUi.java b/core/trino-main/src/test/java/io/trino/server/ui/TestWebUi.java index 2ac3a002c2eda..7f3b1be47b900 100644 --- a/core/trino-main/src/test/java/io/trino/server/ui/TestWebUi.java +++ b/core/trino-main/src/test/java/io/trino/server/ui/TestWebUi.java @@ -99,7 +99,7 @@ import static io.jsonwebtoken.Claims.SUBJECT; import static io.jsonwebtoken.security.Keys.hmacShaKeyFor; import static io.trino.client.OkHttpUtil.setupSsl; -import static io.trino.metadata.MetadataManager.createTestMetadataManager; +import static io.trino.metadata.TestMetadataManager.createTestMetadataManager; import static io.trino.server.ServletSecurityUtils.authenticatedIdentity; import static io.trino.server.security.ResourceSecurity.AccessType.WEB_UI; import static io.trino.server.security.jwt.JwtUtil.newJwtBuilder; diff --git a/core/trino-main/src/test/java/io/trino/sql/gen/BenchmarkInCodeGenerator.java b/core/trino-main/src/test/java/io/trino/sql/gen/BenchmarkInCodeGenerator.java index bb0af8ae2e41c..b7019fc9be195 100644 --- a/core/trino-main/src/test/java/io/trino/sql/gen/BenchmarkInCodeGenerator.java +++ b/core/trino-main/src/test/java/io/trino/sql/gen/BenchmarkInCodeGenerator.java @@ -53,7 +53,7 @@ import static io.trino.memory.context.AggregatedMemoryContext.newSimpleAggregatedMemoryContext; import static io.trino.metadata.FunctionManager.createTestingFunctionManager; -import static io.trino.metadata.MetadataManager.createTestMetadataManager; +import static io.trino.metadata.TestMetadataManager.createTestMetadataManager; import static io.trino.spi.type.BigintType.BIGINT; import static io.trino.spi.type.BooleanType.BOOLEAN; import static io.trino.spi.type.DoubleType.DOUBLE; diff --git a/core/trino-main/src/test/java/io/trino/sql/planner/TestConnectorExpressionTranslator.java b/core/trino-main/src/test/java/io/trino/sql/planner/TestConnectorExpressionTranslator.java index 054f504d9a8e9..49638b288a636 100644 --- a/core/trino-main/src/test/java/io/trino/sql/planner/TestConnectorExpressionTranslator.java +++ b/core/trino-main/src/test/java/io/trino/sql/planner/TestConnectorExpressionTranslator.java @@ -18,8 +18,8 @@ import io.airlift.slice.Slices; import io.trino.Session; import io.trino.metadata.Metadata; -import io.trino.metadata.MetadataManager; import io.trino.metadata.ResolvedFunction; +import io.trino.metadata.TestMetadataManager; import io.trino.metadata.TestingFunctionResolution; import io.trino.operator.scalar.JsonPath; import io.trino.security.AllowAllAccessControl; @@ -323,7 +323,7 @@ public void testTranslateCast() public void testTranslateLike() { TransactionManager transactionManager = new TestingTransactionManager(); - Metadata metadata = MetadataManager.testMetadataManagerBuilder().withTransactionManager(transactionManager).build(); + Metadata metadata = TestMetadataManager.builder().withTransactionManager(transactionManager).build(); transaction(transactionManager, metadata, new AllowAllAccessControl()) .readOnly() .execute(TEST_SESSION, transactionSession -> { @@ -402,7 +402,7 @@ public void testTranslateNullIf() public void testTranslateTryCast() { TransactionManager transactionManager = new TestingTransactionManager(); - Metadata metadata = MetadataManager.testMetadataManagerBuilder().withTransactionManager(transactionManager).build(); + Metadata metadata = TestMetadataManager.builder().withTransactionManager(transactionManager).build(); transaction(transactionManager, metadata, new AllowAllAccessControl()) .readOnly() .execute(TEST_SESSION, transactionSession -> { @@ -422,7 +422,7 @@ public void testTranslateTryCast() public void testTranslateResolvedFunction() { TransactionManager transactionManager = new TestingTransactionManager(); - Metadata metadata = MetadataManager.testMetadataManagerBuilder().withTransactionManager(transactionManager).build(); + Metadata metadata = TestMetadataManager.builder().withTransactionManager(transactionManager).build(); transaction(transactionManager, metadata, new AllowAllAccessControl()) .readOnly() .execute(TEST_SESSION, transactionSession -> { @@ -444,7 +444,7 @@ public void testTranslateRegularExpression() // and are not exposed to connectors within ConnectorExpression. Instead, they are replaced with a varchar pattern. TransactionManager transactionManager = new TestingTransactionManager(); - Metadata metadata = MetadataManager.testMetadataManagerBuilder().withTransactionManager(transactionManager).build(); + Metadata metadata = TestMetadataManager.builder().withTransactionManager(transactionManager).build(); transaction(transactionManager, metadata, new AllowAllAccessControl()) .readOnly() .execute(TEST_SESSION, transactionSession -> { @@ -520,7 +520,7 @@ public void testTranslateIn() public void testTranslateCastPlusJsonParse() { TransactionManager transactionManager = new TestingTransactionManager(); - Metadata metadata = MetadataManager.testMetadataManagerBuilder().withTransactionManager(transactionManager).build(); + Metadata metadata = TestMetadataManager.builder().withTransactionManager(transactionManager).build(); transaction(transactionManager, metadata, new AllowAllAccessControl()) .readOnly() .execute(TEST_SESSION, transactionSession -> { diff --git a/core/trino-main/src/test/java/io/trino/sql/planner/TestLogicalPlanner.java b/core/trino-main/src/test/java/io/trino/sql/planner/TestLogicalPlanner.java index 0d2d113759553..f34cf4d347068 100644 --- a/core/trino-main/src/test/java/io/trino/sql/planner/TestLogicalPlanner.java +++ b/core/trino-main/src/test/java/io/trino/sql/planner/TestLogicalPlanner.java @@ -103,7 +103,7 @@ import static io.trino.SystemSessionProperties.JOIN_REORDERING_STRATEGY; import static io.trino.SystemSessionProperties.OPTIMIZE_HASH_GENERATION; import static io.trino.SystemSessionProperties.TASK_CONCURRENCY; -import static io.trino.metadata.MetadataManager.createTestMetadataManager; +import static io.trino.metadata.TestMetadataManager.createTestMetadataManager; import static io.trino.spi.StandardErrorCode.SUBQUERY_MULTIPLE_ROWS; import static io.trino.spi.connector.SortOrder.ASC_NULLS_LAST; import static io.trino.spi.predicate.Domain.multipleValues; diff --git a/core/trino-main/src/test/java/io/trino/sql/planner/TestWindowFrameRange.java b/core/trino-main/src/test/java/io/trino/sql/planner/TestWindowFrameRange.java index fb56064c2a2a7..e640cd155a38b 100644 --- a/core/trino-main/src/test/java/io/trino/sql/planner/TestWindowFrameRange.java +++ b/core/trino-main/src/test/java/io/trino/sql/planner/TestWindowFrameRange.java @@ -35,7 +35,7 @@ import java.math.BigDecimal; import java.util.Optional; -import static io.trino.metadata.MetadataManager.createTestMetadataManager; +import static io.trino.metadata.TestMetadataManager.createTestMetadataManager; import static io.trino.spi.StandardErrorCode.INVALID_WINDOW_FRAME; import static io.trino.spi.type.BooleanType.BOOLEAN; import static io.trino.spi.type.DecimalType.createDecimalType; diff --git a/core/trino-main/src/test/java/io/trino/sql/planner/TestingPlannerContext.java b/core/trino-main/src/test/java/io/trino/sql/planner/TestingPlannerContext.java index aff33e988cd9e..140744adf5d92 100644 --- a/core/trino-main/src/test/java/io/trino/sql/planner/TestingPlannerContext.java +++ b/core/trino-main/src/test/java/io/trino/sql/planner/TestingPlannerContext.java @@ -25,9 +25,8 @@ import io.trino.metadata.LanguageFunctionManager; import io.trino.metadata.LanguageFunctionProvider; import io.trino.metadata.Metadata; -import io.trino.metadata.MetadataManager; -import io.trino.metadata.MetadataManager.TestMetadataManagerBuilder; import io.trino.metadata.SystemFunctionBundle; +import io.trino.metadata.TestMetadataManager; import io.trino.metadata.TypeRegistry; import io.trino.operator.scalar.json.JsonExistsFunction; import io.trino.operator.scalar.json.JsonQueryFunction; @@ -131,7 +130,7 @@ public PlannerContext build() Metadata metadata = this.metadata; if (metadata == null) { - TestMetadataManagerBuilder builder = MetadataManager.testMetadataManagerBuilder() + TestMetadataManager.Builder builder = TestMetadataManager.builder() .withTypeManager(typeManager) .withLanguageFunctionManager(languageFunctionManager) .withGlobalFunctionCatalog(globalFunctionCatalog); diff --git a/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestMergePatternRecognitionNodes.java b/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestMergePatternRecognitionNodes.java index 5524e3be3dd07..e0e3fcc46facc 100644 --- a/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestMergePatternRecognitionNodes.java +++ b/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestMergePatternRecognitionNodes.java @@ -42,7 +42,7 @@ import java.util.Optional; -import static io.trino.metadata.MetadataManager.createTestMetadataManager; +import static io.trino.metadata.TestMetadataManager.createTestMetadataManager; import static io.trino.spi.connector.SortOrder.ASC_NULLS_LAST; import static io.trino.spi.type.BigintType.BIGINT; import static io.trino.spi.type.IntegerType.INTEGER; diff --git a/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestMultipleDistinctAggregationToMarkDistinct.java b/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestMultipleDistinctAggregationToMarkDistinct.java index 5187354b2ee0c..793fbc1c57884 100644 --- a/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestMultipleDistinctAggregationToMarkDistinct.java +++ b/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestMultipleDistinctAggregationToMarkDistinct.java @@ -29,7 +29,7 @@ import java.util.Optional; import static io.trino.SystemSessionProperties.DISTINCT_AGGREGATIONS_STRATEGY; -import static io.trino.metadata.MetadataManager.createTestMetadataManager; +import static io.trino.metadata.TestMetadataManager.createTestMetadataManager; import static io.trino.spi.type.BigintType.BIGINT; import static io.trino.spi.type.BooleanType.BOOLEAN; import static io.trino.spi.type.IntegerType.INTEGER; diff --git a/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestPruneOrderByInAggregation.java b/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestPruneOrderByInAggregation.java index ffc46e71da6fe..0a521d8b7cb8d 100644 --- a/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestPruneOrderByInAggregation.java +++ b/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestPruneOrderByInAggregation.java @@ -28,7 +28,7 @@ import java.util.List; import java.util.Optional; -import static io.trino.metadata.MetadataManager.createTestMetadataManager; +import static io.trino.metadata.TestMetadataManager.createTestMetadataManager; import static io.trino.spi.type.BigintType.BIGINT; import static io.trino.sql.planner.assertions.PlanMatchPattern.aggregation; import static io.trino.sql.planner.assertions.PlanMatchPattern.aggregationFunction; diff --git a/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestPrunePattenRecognitionColumns.java b/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestPrunePattenRecognitionColumns.java index c66df49d072e8..dd3c54bdca54d 100644 --- a/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestPrunePattenRecognitionColumns.java +++ b/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestPrunePattenRecognitionColumns.java @@ -34,7 +34,7 @@ import java.util.Optional; -import static io.trino.metadata.MetadataManager.createTestMetadataManager; +import static io.trino.metadata.TestMetadataManager.createTestMetadataManager; import static io.trino.spi.connector.SortOrder.ASC_NULLS_LAST; import static io.trino.spi.type.BigintType.BIGINT; import static io.trino.spi.type.IntegerType.INTEGER; diff --git a/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestPushDownDereferencesRules.java b/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestPushDownDereferencesRules.java index 20535725a04d2..3852963cb92ec 100644 --- a/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestPushDownDereferencesRules.java +++ b/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestPushDownDereferencesRules.java @@ -46,7 +46,7 @@ import java.util.Optional; -import static io.trino.metadata.MetadataManager.createTestMetadataManager; +import static io.trino.metadata.TestMetadataManager.createTestMetadataManager; import static io.trino.spi.connector.SortOrder.ASC_NULLS_FIRST; import static io.trino.spi.type.BigintType.BIGINT; import static io.trino.spi.type.BooleanType.BOOLEAN; diff --git a/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestPushDownProjectionsFromPatternRecognition.java b/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestPushDownProjectionsFromPatternRecognition.java index 75d27d67c7029..d3ac33b807ea2 100644 --- a/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestPushDownProjectionsFromPatternRecognition.java +++ b/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestPushDownProjectionsFromPatternRecognition.java @@ -37,7 +37,7 @@ import java.util.Optional; -import static io.trino.metadata.MetadataManager.createTestMetadataManager; +import static io.trino.metadata.TestMetadataManager.createTestMetadataManager; import static io.trino.spi.type.BigintType.BIGINT; import static io.trino.spi.type.VarcharType.VARCHAR; import static io.trino.sql.analyzer.TypeSignatureProvider.fromTypes; diff --git a/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestTransformCorrelatedScalarSubquery.java b/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestTransformCorrelatedScalarSubquery.java index 8ada308490438..d75eddf15c7b5 100644 --- a/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestTransformCorrelatedScalarSubquery.java +++ b/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestTransformCorrelatedScalarSubquery.java @@ -36,7 +36,7 @@ import java.util.List; -import static io.trino.metadata.MetadataManager.createTestMetadataManager; +import static io.trino.metadata.TestMetadataManager.createTestMetadataManager; import static io.trino.spi.StandardErrorCode.SUBQUERY_MULTIPLE_ROWS; import static io.trino.spi.type.BooleanType.BOOLEAN; import static io.trino.spi.type.IntegerType.INTEGER; diff --git a/core/trino-main/src/test/java/io/trino/sql/planner/plan/TestPatternRecognitionNodeSerialization.java b/core/trino-main/src/test/java/io/trino/sql/planner/plan/TestPatternRecognitionNodeSerialization.java index 29a88b9987698..0d508dc282aa2 100644 --- a/core/trino-main/src/test/java/io/trino/sql/planner/plan/TestPatternRecognitionNodeSerialization.java +++ b/core/trino-main/src/test/java/io/trino/sql/planner/plan/TestPatternRecognitionNodeSerialization.java @@ -55,7 +55,7 @@ import java.util.Optional; -import static io.trino.metadata.MetadataManager.createTestMetadataManager; +import static io.trino.metadata.TestMetadataManager.createTestMetadataManager; import static io.trino.spi.type.BigintType.BIGINT; import static io.trino.spi.type.BooleanType.BOOLEAN; import static io.trino.spi.type.IntegerType.INTEGER;