Search in sources :

Example 6 with Metadata

use of io.trino.metadata.Metadata in project trino by trinodb.

the class SetSchemaAuthorizationTask method execute.

@Override
public ListenableFuture<Void> execute(SetSchemaAuthorization statement, QueryStateMachine stateMachine, List<Expression> parameters, WarningCollector warningCollector) {
    Session session = stateMachine.getSession();
    CatalogSchemaName source = createCatalogSchemaName(session, statement, Optional.of(statement.getSource()));
    if (!metadata.schemaExists(session, source)) {
        throw semanticException(SCHEMA_NOT_FOUND, statement, "Schema '%s' does not exist", source);
    }
    TrinoPrincipal principal = createPrincipal(statement.getPrincipal());
    checkRoleExists(session, statement, metadata, principal, Optional.of(source.getCatalogName()).filter(catalog -> metadata.isCatalogManagedSecurity(session, catalog)));
    accessControl.checkCanSetSchemaAuthorization(session.toSecurityContext(), source, principal);
    metadata.setSchemaAuthorization(session, source, principal);
    return immediateVoidFuture();
}
Also used : Futures.immediateVoidFuture(com.google.common.util.concurrent.Futures.immediateVoidFuture) ListenableFuture(com.google.common.util.concurrent.ListenableFuture) MetadataUtil.checkRoleExists(io.trino.metadata.MetadataUtil.checkRoleExists) Inject(javax.inject.Inject) List(java.util.List) AccessControl(io.trino.security.AccessControl) TrinoPrincipal(io.trino.spi.security.TrinoPrincipal) MetadataUtil.createPrincipal(io.trino.metadata.MetadataUtil.createPrincipal) Objects.requireNonNull(java.util.Objects.requireNonNull) WarningCollector(io.trino.execution.warnings.WarningCollector) CatalogSchemaName(io.trino.spi.connector.CatalogSchemaName) Metadata(io.trino.metadata.Metadata) SetSchemaAuthorization(io.trino.sql.tree.SetSchemaAuthorization) Optional(java.util.Optional) Expression(io.trino.sql.tree.Expression) MetadataUtil.createCatalogSchemaName(io.trino.metadata.MetadataUtil.createCatalogSchemaName) SemanticExceptions.semanticException(io.trino.sql.analyzer.SemanticExceptions.semanticException) Session(io.trino.Session) SCHEMA_NOT_FOUND(io.trino.spi.StandardErrorCode.SCHEMA_NOT_FOUND) CatalogSchemaName(io.trino.spi.connector.CatalogSchemaName) MetadataUtil.createCatalogSchemaName(io.trino.metadata.MetadataUtil.createCatalogSchemaName) TrinoPrincipal(io.trino.spi.security.TrinoPrincipal) Session(io.trino.Session)

Example 7 with Metadata

use of io.trino.metadata.Metadata in project trino by trinodb.

the class SetTableAuthorizationTask method execute.

@Override
public ListenableFuture<Void> execute(SetTableAuthorization statement, QueryStateMachine stateMachine, List<Expression> parameters, WarningCollector warningCollector) {
    Session session = stateMachine.getSession();
    QualifiedObjectName tableName = createQualifiedObjectName(session, statement, statement.getSource());
    getRequiredCatalogHandle(metadata, session, statement, tableName.getCatalogName());
    if (metadata.getTableHandle(session, tableName).isEmpty()) {
        throw semanticException(TABLE_NOT_FOUND, statement, "Table '%s' does not exist", tableName);
    }
    TrinoPrincipal principal = createPrincipal(statement.getPrincipal());
    checkRoleExists(session, statement, metadata, principal, Optional.of(tableName.getCatalogName()).filter(catalog -> metadata.isCatalogManagedSecurity(session, catalog)));
    accessControl.checkCanSetTableAuthorization(session.toSecurityContext(), tableName, principal);
    metadata.setTableAuthorization(session, tableName.asCatalogSchemaTableName(), principal);
    return immediateVoidFuture();
}
Also used : Futures.immediateVoidFuture(com.google.common.util.concurrent.Futures.immediateVoidFuture) ListenableFuture(com.google.common.util.concurrent.ListenableFuture) MetadataUtil.checkRoleExists(io.trino.metadata.MetadataUtil.checkRoleExists) MetadataUtil.getRequiredCatalogHandle(io.trino.metadata.MetadataUtil.getRequiredCatalogHandle) Inject(javax.inject.Inject) List(java.util.List) QualifiedObjectName(io.trino.metadata.QualifiedObjectName) AccessControl(io.trino.security.AccessControl) TrinoPrincipal(io.trino.spi.security.TrinoPrincipal) MetadataUtil.createPrincipal(io.trino.metadata.MetadataUtil.createPrincipal) MetadataUtil.createQualifiedObjectName(io.trino.metadata.MetadataUtil.createQualifiedObjectName) TABLE_NOT_FOUND(io.trino.spi.StandardErrorCode.TABLE_NOT_FOUND) Objects.requireNonNull(java.util.Objects.requireNonNull) WarningCollector(io.trino.execution.warnings.WarningCollector) Metadata(io.trino.metadata.Metadata) Optional(java.util.Optional) Expression(io.trino.sql.tree.Expression) SetTableAuthorization(io.trino.sql.tree.SetTableAuthorization) SemanticExceptions.semanticException(io.trino.sql.analyzer.SemanticExceptions.semanticException) Session(io.trino.Session) TrinoPrincipal(io.trino.spi.security.TrinoPrincipal) QualifiedObjectName(io.trino.metadata.QualifiedObjectName) MetadataUtil.createQualifiedObjectName(io.trino.metadata.MetadataUtil.createQualifiedObjectName) Session(io.trino.Session)

Example 8 with Metadata

use of io.trino.metadata.Metadata in project trino by trinodb.

the class SetViewAuthorizationTask method execute.

@Override
public ListenableFuture<Void> execute(SetViewAuthorization statement, QueryStateMachine stateMachine, List<Expression> parameters, WarningCollector warningCollector) {
    Session session = stateMachine.getSession();
    QualifiedObjectName viewName = createQualifiedObjectName(session, statement, statement.getSource());
    getRequiredCatalogHandle(metadata, session, statement, viewName.getCatalogName());
    ViewDefinition view = metadata.getView(session, viewName).orElseThrow(() -> semanticException(TABLE_NOT_FOUND, statement, "View '%s' does not exist", viewName));
    TrinoPrincipal principal = createPrincipal(statement.getPrincipal());
    checkRoleExists(session, statement, metadata, principal, Optional.of(viewName.getCatalogName()).filter(catalog -> metadata.isCatalogManagedSecurity(session, catalog)));
    if (!view.isRunAsInvoker() && !isAllowSetViewAuthorization) {
        throw new TrinoException(NOT_SUPPORTED, format("Cannot set authorization for view %s to %s: this feature is disabled", viewName.getCatalogName() + '.' + viewName.getSchemaName() + '.' + viewName.getObjectName(), principal));
    }
    accessControl.checkCanSetViewAuthorization(session.toSecurityContext(), viewName, principal);
    metadata.setViewAuthorization(session, viewName.asCatalogSchemaTableName(), principal);
    return immediateVoidFuture();
}
Also used : ListenableFuture(com.google.common.util.concurrent.ListenableFuture) MetadataUtil.checkRoleExists(io.trino.metadata.MetadataUtil.checkRoleExists) Inject(javax.inject.Inject) NOT_SUPPORTED(io.trino.spi.StandardErrorCode.NOT_SUPPORTED) MetadataUtil.createQualifiedObjectName(io.trino.metadata.MetadataUtil.createQualifiedObjectName) TABLE_NOT_FOUND(io.trino.spi.StandardErrorCode.TABLE_NOT_FOUND) Objects.requireNonNull(java.util.Objects.requireNonNull) SemanticExceptions.semanticException(io.trino.sql.analyzer.SemanticExceptions.semanticException) Futures.immediateVoidFuture(com.google.common.util.concurrent.Futures.immediateVoidFuture) SetViewAuthorization(io.trino.sql.tree.SetViewAuthorization) ViewDefinition(io.trino.metadata.ViewDefinition) TrinoException(io.trino.spi.TrinoException) MetadataUtil.getRequiredCatalogHandle(io.trino.metadata.MetadataUtil.getRequiredCatalogHandle) String.format(java.lang.String.format) List(java.util.List) FeaturesConfig(io.trino.FeaturesConfig) QualifiedObjectName(io.trino.metadata.QualifiedObjectName) AccessControl(io.trino.security.AccessControl) TrinoPrincipal(io.trino.spi.security.TrinoPrincipal) MetadataUtil.createPrincipal(io.trino.metadata.MetadataUtil.createPrincipal) WarningCollector(io.trino.execution.warnings.WarningCollector) Metadata(io.trino.metadata.Metadata) Optional(java.util.Optional) Expression(io.trino.sql.tree.Expression) Session(io.trino.Session) ViewDefinition(io.trino.metadata.ViewDefinition) TrinoException(io.trino.spi.TrinoException) TrinoPrincipal(io.trino.spi.security.TrinoPrincipal) MetadataUtil.createQualifiedObjectName(io.trino.metadata.MetadataUtil.createQualifiedObjectName) QualifiedObjectName(io.trino.metadata.QualifiedObjectName) Session(io.trino.Session)

Example 9 with Metadata

use of io.trino.metadata.Metadata in project trino by trinodb.

the class EqualityInference method newInstance.

public static EqualityInference newInstance(Metadata metadata, Collection<Expression> expressions) {
    DisjointSet<Expression> equalities = new DisjointSet<>();
    expressions.stream().flatMap(expression -> extractConjuncts(expression).stream()).filter(expression -> isInferenceCandidate(metadata, expression)).forEach(expression -> {
        ComparisonExpression comparison = (ComparisonExpression) expression;
        Expression expression1 = comparison.getLeft();
        Expression expression2 = comparison.getRight();
        equalities.findAndUnion(expression1, expression2);
    });
    Collection<Set<Expression>> equivalentClasses = equalities.getEquivalentClasses();
    // Map every expression to the set of equivalent expressions
    Map<Expression, Set<Expression>> byExpression = new HashMap<>();
    for (Set<Expression> equivalence : equivalentClasses) {
        equivalence.forEach(expression -> byExpression.put(expression, equivalence));
    }
    // For every non-derived expression, extract the sub-expressions and see if they can be rewritten as other expressions. If so,
    // use this new information to update the known equalities.
    Set<Expression> derivedExpressions = new LinkedHashSet<>();
    for (Expression expression : byExpression.keySet()) {
        if (derivedExpressions.contains(expression)) {
            continue;
        }
        SubExpressionExtractor.extract(expression).filter(e -> !e.equals(expression)).forEach(subExpression -> {
            byExpression.getOrDefault(subExpression, ImmutableSet.of()).stream().filter(e -> !e.equals(subExpression)).forEach(equivalentSubExpression -> {
                Expression rewritten = replaceExpression(expression, ImmutableMap.of(subExpression, equivalentSubExpression));
                equalities.findAndUnion(expression, rewritten);
                derivedExpressions.add(rewritten);
            });
        });
    }
    Multimap<Expression, Expression> equalitySets = makeEqualitySets(equalities);
    ImmutableMap.Builder<Expression, Expression> canonicalMappings = ImmutableMap.builder();
    for (Map.Entry<Expression, Expression> entry : equalitySets.entries()) {
        Expression canonical = entry.getKey();
        Expression expression = entry.getValue();
        canonicalMappings.put(expression, canonical);
    }
    return new EqualityInference(equalitySets, canonicalMappings.buildOrThrow(), derivedExpressions);
}
Also used : Arrays(java.util.Arrays) HashMap(java.util.HashMap) Multimap(com.google.common.collect.Multimap) ArrayList(java.util.ArrayList) ImmutableList(com.google.common.collect.ImmutableList) DeterminismEvaluator.isDeterministic(io.trino.sql.planner.DeterminismEvaluator.isDeterministic) Map(java.util.Map) Objects.requireNonNull(java.util.Objects.requireNonNull) DisjointSet(io.trino.util.DisjointSet) LinkedHashSet(java.util.LinkedHashSet) ImmutableSetMultimap(com.google.common.collect.ImmutableSetMultimap) ImmutableSet(com.google.common.collect.ImmutableSet) ImmutableMap(com.google.common.collect.ImmutableMap) Predicate(java.util.function.Predicate) Collection(java.util.Collection) NullabilityAnalyzer.mayReturnNullOnNonNullInput(io.trino.sql.planner.NullabilityAnalyzer.mayReturnNullOnNonNullInput) ToIntFunction(java.util.function.ToIntFunction) Set(java.util.Set) Collectors(java.util.stream.Collectors) ComparisonExpression(io.trino.sql.tree.ComparisonExpression) Objects(java.util.Objects) List(java.util.List) Stream(java.util.stream.Stream) SymbolReference(io.trino.sql.tree.SymbolReference) Metadata(io.trino.metadata.Metadata) ExpressionNodeInliner.replaceExpression(io.trino.sql.planner.ExpressionNodeInliner.replaceExpression) Expression(io.trino.sql.tree.Expression) ExpressionUtils.extractConjuncts(io.trino.sql.ExpressionUtils.extractConjuncts) VisibleForTesting(com.google.common.annotations.VisibleForTesting) Comparator(java.util.Comparator) LinkedHashSet(java.util.LinkedHashSet) DisjointSet(io.trino.util.DisjointSet) LinkedHashSet(java.util.LinkedHashSet) ImmutableSet(com.google.common.collect.ImmutableSet) Set(java.util.Set) HashMap(java.util.HashMap) ImmutableMap(com.google.common.collect.ImmutableMap) ComparisonExpression(io.trino.sql.tree.ComparisonExpression) ComparisonExpression(io.trino.sql.tree.ComparisonExpression) ExpressionNodeInliner.replaceExpression(io.trino.sql.planner.ExpressionNodeInliner.replaceExpression) Expression(io.trino.sql.tree.Expression) DisjointSet(io.trino.util.DisjointSet) HashMap(java.util.HashMap) Map(java.util.Map) ImmutableMap(com.google.common.collect.ImmutableMap)

Example 10 with Metadata

use of io.trino.metadata.Metadata in project trino by trinodb.

the class ServerMainModule method setup.

@Override
protected void setup(Binder binder) {
    ServerConfig serverConfig = buildConfigObject(ServerConfig.class);
    if (serverConfig.isCoordinator()) {
        install(new CoordinatorModule());
    } else {
        install(new WorkerModule());
    }
    binder.bind(StartupStatus.class).in(Scopes.SINGLETON);
    configBinder(binder).bindConfigDefaults(HttpServerConfig.class, httpServerConfig -> {
        httpServerConfig.setAdminEnabled(false);
    });
    binder.bind(PreparedStatementEncoder.class).in(Scopes.SINGLETON);
    binder.bind(HttpRequestSessionContextFactory.class).in(Scopes.SINGLETON);
    install(new InternalCommunicationModule());
    configBinder(binder).bindConfig(FeaturesConfig.class);
    configBinder(binder).bindConfig(OptimizerConfig.class);
    configBinder(binder).bindConfig(ProtocolConfig.class);
    binder.bind(SqlParser.class).in(Scopes.SINGLETON);
    jaxrsBinder(binder).bind(ThrowableMapper.class);
    configBinder(binder).bindConfig(QueryManagerConfig.class);
    configBinder(binder).bindConfig(SqlEnvironmentConfig.class);
    newOptionalBinder(binder, ExplainAnalyzeContext.class);
    binder.bind(StatementAnalyzerFactory.class).in(Scopes.SINGLETON);
    // GC Monitor
    binder.bind(GcMonitor.class).to(JmxGcMonitor.class).in(Scopes.SINGLETON);
    newExporter(binder).export(GcMonitor.class).withGeneratedName();
    // session properties
    newSetBinder(binder, SystemSessionPropertiesProvider.class).addBinding().to(SystemSessionProperties.class);
    binder.bind(SessionPropertyManager.class).in(Scopes.SINGLETON);
    binder.bind(SystemSessionProperties.class).in(Scopes.SINGLETON);
    binder.bind(SessionPropertyDefaults.class).in(Scopes.SINGLETON);
    // schema properties
    binder.bind(SchemaPropertyManager.class).in(Scopes.SINGLETON);
    // table properties
    binder.bind(TablePropertyManager.class).in(Scopes.SINGLETON);
    // materialized view properties
    binder.bind(MaterializedViewPropertyManager.class).in(Scopes.SINGLETON);
    // column properties
    binder.bind(ColumnPropertyManager.class).in(Scopes.SINGLETON);
    // analyze properties
    binder.bind(AnalyzePropertyManager.class).in(Scopes.SINGLETON);
    // table procedures properties
    binder.bind(TableProceduresPropertyManager.class).in(Scopes.SINGLETON);
    // node manager
    discoveryBinder(binder).bindSelector("trino");
    binder.bind(DiscoveryNodeManager.class).in(Scopes.SINGLETON);
    binder.bind(InternalNodeManager.class).to(DiscoveryNodeManager.class).in(Scopes.SINGLETON);
    newExporter(binder).export(DiscoveryNodeManager.class).withGeneratedName();
    httpClientBinder(binder).bindHttpClient("node-manager", ForNodeManager.class).withTracing().withConfigDefaults(config -> {
        config.setIdleTimeout(new Duration(30, SECONDS));
        config.setRequestTimeout(new Duration(10, SECONDS));
    });
    // node scheduler
    // TODO: remove from NodePartitioningManager and move to CoordinatorModule
    configBinder(binder).bindConfig(NodeSchedulerConfig.class);
    binder.bind(NodeScheduler.class).in(Scopes.SINGLETON);
    binder.bind(NodeTaskMap.class).in(Scopes.SINGLETON);
    newExporter(binder).export(NodeScheduler.class).withGeneratedName();
    // network topology
    // TODO: move to CoordinatorModule when NodeScheduler is moved
    install(conditionalModule(NodeSchedulerConfig.class, config -> UNIFORM == config.getNodeSchedulerPolicy(), new UniformNodeSelectorModule()));
    install(conditionalModule(NodeSchedulerConfig.class, config -> TOPOLOGY == config.getNodeSchedulerPolicy(), new TopologyAwareNodeSelectorModule()));
    // task execution
    configBinder(binder).bindConfig(FailureInjectionConfig.class);
    binder.bind(FailureInjector.class).in(Scopes.SINGLETON);
    jaxrsBinder(binder).bind(TaskResource.class);
    newExporter(binder).export(TaskResource.class).withGeneratedName();
    jaxrsBinder(binder).bind(TaskExecutorResource.class);
    newExporter(binder).export(TaskExecutorResource.class).withGeneratedName();
    binder.bind(TaskManagementExecutor.class).in(Scopes.SINGLETON);
    binder.bind(SqlTaskManager.class).in(Scopes.SINGLETON);
    binder.bind(TableExecuteContextManager.class).in(Scopes.SINGLETON);
    // memory revoking scheduler
    binder.bind(MemoryRevokingScheduler.class).in(Scopes.SINGLETON);
    // Add monitoring for JVM pauses
    binder.bind(PauseMeter.class).in(Scopes.SINGLETON);
    newExporter(binder).export(PauseMeter.class).withGeneratedName();
    configBinder(binder).bindConfig(MemoryManagerConfig.class);
    configBinder(binder).bindConfig(NodeMemoryConfig.class);
    binder.bind(LocalMemoryManager.class).in(Scopes.SINGLETON);
    binder.bind(LocalMemoryManagerExporter.class).in(Scopes.SINGLETON);
    newOptionalBinder(binder, VersionEmbedder.class).setDefault().to(EmbedVersion.class).in(Scopes.SINGLETON);
    newExporter(binder).export(SqlTaskManager.class).withGeneratedName();
    binder.bind(TaskExecutor.class).in(Scopes.SINGLETON);
    newExporter(binder).export(TaskExecutor.class).withGeneratedName();
    binder.bind(MultilevelSplitQueue.class).in(Scopes.SINGLETON);
    newExporter(binder).export(MultilevelSplitQueue.class).withGeneratedName();
    binder.bind(LocalExecutionPlanner.class).in(Scopes.SINGLETON);
    configBinder(binder).bindConfig(CompilerConfig.class);
    binder.bind(ExpressionCompiler.class).in(Scopes.SINGLETON);
    newExporter(binder).export(ExpressionCompiler.class).withGeneratedName();
    binder.bind(PageFunctionCompiler.class).in(Scopes.SINGLETON);
    newExporter(binder).export(PageFunctionCompiler.class).withGeneratedName();
    configBinder(binder).bindConfig(TaskManagerConfig.class);
    binder.bind(IndexJoinLookupStats.class).in(Scopes.SINGLETON);
    newExporter(binder).export(IndexJoinLookupStats.class).withGeneratedName();
    binder.bind(AsyncHttpExecutionMBean.class).in(Scopes.SINGLETON);
    newExporter(binder).export(AsyncHttpExecutionMBean.class).withGeneratedName();
    binder.bind(JoinFilterFunctionCompiler.class).in(Scopes.SINGLETON);
    newExporter(binder).export(JoinFilterFunctionCompiler.class).withGeneratedName();
    binder.bind(JoinCompiler.class).in(Scopes.SINGLETON);
    newExporter(binder).export(JoinCompiler.class).withGeneratedName();
    binder.bind(OrderingCompiler.class).in(Scopes.SINGLETON);
    newExporter(binder).export(OrderingCompiler.class).withGeneratedName();
    binder.bind(PagesIndex.Factory.class).to(PagesIndex.DefaultFactory.class);
    newOptionalBinder(binder, OperatorFactories.class).setDefault().to(TrinoOperatorFactories.class).in(Scopes.SINGLETON);
    jaxrsBinder(binder).bind(PagesResponseWriter.class);
    // exchange client
    binder.bind(DirectExchangeClientSupplier.class).to(DirectExchangeClientFactory.class).in(Scopes.SINGLETON);
    httpClientBinder(binder).bindHttpClient("exchange", ForExchange.class).withTracing().withFilter(GenerateTraceTokenRequestFilter.class).withConfigDefaults(config -> {
        config.setIdleTimeout(new Duration(30, SECONDS));
        config.setRequestTimeout(new Duration(10, SECONDS));
        config.setMaxConnectionsPerServer(250);
        config.setMaxContentLength(DataSize.of(32, MEGABYTE));
    });
    configBinder(binder).bindConfig(DirectExchangeClientConfig.class);
    binder.bind(ExchangeExecutionMBean.class).in(Scopes.SINGLETON);
    newExporter(binder).export(ExchangeExecutionMBean.class).withGeneratedName();
    // execution
    binder.bind(LocationFactory.class).to(HttpLocationFactory.class).in(Scopes.SINGLETON);
    // memory manager
    jaxrsBinder(binder).bind(MemoryResource.class);
    jsonCodecBinder(binder).bindJsonCodec(MemoryInfo.class);
    // transaction manager
    configBinder(binder).bindConfig(TransactionManagerConfig.class);
    // data stream provider
    binder.bind(PageSourceManager.class).in(Scopes.SINGLETON);
    binder.bind(PageSourceProvider.class).to(PageSourceManager.class).in(Scopes.SINGLETON);
    // page sink provider
    binder.bind(PageSinkManager.class).in(Scopes.SINGLETON);
    binder.bind(PageSinkProvider.class).to(PageSinkManager.class).in(Scopes.SINGLETON);
    // metadata
    binder.bind(StaticCatalogStore.class).in(Scopes.SINGLETON);
    configBinder(binder).bindConfig(StaticCatalogStoreConfig.class);
    binder.bind(MetadataManager.class).in(Scopes.SINGLETON);
    binder.bind(Metadata.class).to(MetadataManager.class).in(Scopes.SINGLETON);
    newOptionalBinder(binder, SystemSecurityMetadata.class).setDefault().to(DisabledSystemSecurityMetadata.class).in(Scopes.SINGLETON);
    binder.bind(GlobalFunctionCatalog.class).in(Scopes.SINGLETON);
    binder.bind(TypeOperatorsCache.class).in(Scopes.SINGLETON);
    newExporter(binder).export(TypeOperatorsCache.class).as(factory -> factory.generatedNameOf(TypeOperators.class));
    binder.bind(BlockTypeOperators.class).in(Scopes.SINGLETON);
    newExporter(binder).export(TypeOperatorsCache.class).withGeneratedName();
    binder.bind(ProcedureRegistry.class).in(Scopes.SINGLETON);
    binder.bind(TableProceduresRegistry.class).in(Scopes.SINGLETON);
    binder.bind(PlannerContext.class).in(Scopes.SINGLETON);
    // function
    binder.bind(FunctionManager.class).in(Scopes.SINGLETON);
    newSetBinder(binder, FunctionBundle.class);
    binder.bind(RegisterFunctionBundles.class).asEagerSingleton();
    // type
    binder.bind(TypeAnalyzer.class).in(Scopes.SINGLETON);
    jsonBinder(binder).addDeserializerBinding(Type.class).to(TypeDeserializer.class);
    jsonBinder(binder).addDeserializerBinding(TypeSignature.class).to(TypeSignatureDeserializer.class);
    jsonBinder(binder).addKeyDeserializerBinding(TypeSignature.class).to(TypeSignatureKeyDeserializer.class);
    binder.bind(TypeRegistry.class).in(Scopes.SINGLETON);
    binder.bind(TypeManager.class).to(InternalTypeManager.class).in(Scopes.SINGLETON);
    newSetBinder(binder, Type.class);
    // split manager
    binder.bind(SplitManager.class).in(Scopes.SINGLETON);
    // node partitioning manager
    binder.bind(NodePartitioningManager.class).in(Scopes.SINGLETON);
    // index manager
    binder.bind(IndexManager.class).in(Scopes.SINGLETON);
    // handle resolver
    binder.install(new HandleJsonModule());
    // connector
    binder.bind(ConnectorManager.class).in(Scopes.SINGLETON);
    // system connector
    binder.install(new SystemConnectorModule());
    // slice
    jsonBinder(binder).addSerializerBinding(Slice.class).to(SliceSerializer.class);
    jsonBinder(binder).addDeserializerBinding(Slice.class).to(SliceDeserializer.class);
    // expression
    jsonBinder(binder).addSerializerBinding(Expression.class).to(ExpressionSerializer.class);
    jsonBinder(binder).addDeserializerBinding(Expression.class).to(ExpressionDeserializer.class);
    // split monitor
    binder.bind(SplitMonitor.class).in(Scopes.SINGLETON);
    // version and announcement
    binder.bind(NodeVersion.class).toInstance(new NodeVersion(nodeVersion));
    discoveryBinder(binder).bindHttpAnnouncement("trino").addProperty("node_version", nodeVersion).addProperty("coordinator", String.valueOf(serverConfig.isCoordinator()));
    // server info resource
    jaxrsBinder(binder).bind(ServerInfoResource.class);
    // node status resource
    jaxrsBinder(binder).bind(StatusResource.class);
    // plugin manager
    binder.bind(PluginManager.class).in(Scopes.SINGLETON);
    newOptionalBinder(binder, PluginsProvider.class).setDefault().to(ServerPluginsProvider.class).in(Scopes.SINGLETON);
    configBinder(binder).bindConfig(ServerPluginsProviderConfig.class);
    binder.bind(CatalogManager.class).in(Scopes.SINGLETON);
    // block encodings
    binder.bind(BlockEncodingManager.class).in(Scopes.SINGLETON);
    jsonBinder(binder).addSerializerBinding(Block.class).to(BlockJsonSerde.Serializer.class);
    jsonBinder(binder).addDeserializerBinding(Block.class).to(BlockJsonSerde.Deserializer.class);
    binder.bind(BlockEncodingSerde.class).to(InternalBlockEncodingSerde.class).in(Scopes.SINGLETON);
    // thread visualizer
    jaxrsBinder(binder).bind(ThreadResource.class);
    // PageSorter
    binder.bind(PageSorter.class).to(PagesIndexPageSorter.class).in(Scopes.SINGLETON);
    // PageIndexer
    binder.bind(PageIndexerFactory.class).to(GroupByHashPageIndexerFactory.class).in(Scopes.SINGLETON);
    // Finalizer
    binder.bind(FinalizerService.class).in(Scopes.SINGLETON);
    // Spiller
    binder.bind(SpillerFactory.class).to(GenericSpillerFactory.class).in(Scopes.SINGLETON);
    binder.bind(SingleStreamSpillerFactory.class).to(FileSingleStreamSpillerFactory.class).in(Scopes.SINGLETON);
    binder.bind(PartitioningSpillerFactory.class).to(GenericPartitioningSpillerFactory.class).in(Scopes.SINGLETON);
    binder.bind(SpillerStats.class).in(Scopes.SINGLETON);
    newExporter(binder).export(SpillerFactory.class).withGeneratedName();
    binder.bind(LocalSpillManager.class).in(Scopes.SINGLETON);
    configBinder(binder).bindConfig(NodeSpillConfig.class);
    // Dynamic Filtering
    configBinder(binder).bindConfig(DynamicFilterConfig.class);
    // dispatcher
    // TODO remove dispatcher fromm ServerMainModule, and bind dependent components only on coordinators
    newOptionalBinder(binder, DispatchManager.class);
    // Added for RuleStatsSystemTable
    // TODO: remove this when system tables are bound separately for coordinator and worker
    newOptionalBinder(binder, RuleStatsRecorder.class);
    // cleanup
    binder.bind(ExecutorCleanup.class).in(Scopes.SINGLETON);
}
Also used : TableProceduresPropertyManager(io.trino.metadata.TableProceduresPropertyManager) ConnectorManager(io.trino.connector.ConnectorManager) PagesIndexPageSorter(io.trino.operator.PagesIndexPageSorter) TopologyAwareNodeSelectorModule(io.trino.execution.scheduler.TopologyAwareNodeSelectorModule) ExpressionSerializer(io.trino.server.ExpressionSerialization.ExpressionSerializer) TypeOperators(io.trino.spi.type.TypeOperators) HttpServerConfig(io.airlift.http.server.HttpServerConfig) PauseMeter(io.airlift.stats.PauseMeter) MemoryRevokingScheduler(io.trino.execution.MemoryRevokingScheduler) TransactionManagerConfig(io.trino.transaction.TransactionManagerConfig) LocalSpillManager(io.trino.spiller.LocalSpillManager) NodeScheduler(io.trino.execution.scheduler.NodeScheduler) FinalizerService(io.trino.util.FinalizerService) BoundedExecutor(io.airlift.concurrent.BoundedExecutor) Executors.newScheduledThreadPool(java.util.concurrent.Executors.newScheduledThreadPool) Multibinder.newSetBinder(com.google.inject.multibindings.Multibinder.newSetBinder) MetadataManager(io.trino.metadata.MetadataManager) FailureInjectionConfig(io.trino.execution.FailureInjectionConfig) StaticCatalogStore(io.trino.metadata.StaticCatalogStore) JsonCodecBinder.jsonCodecBinder(io.airlift.json.JsonCodecBinder.jsonCodecBinder) JmxGcMonitor(io.airlift.stats.JmxGcMonitor) LocalMemoryManagerExporter(io.trino.memory.LocalMemoryManagerExporter) NodeSchedulerConfig(io.trino.execution.scheduler.NodeSchedulerConfig) PageSinkManager(io.trino.split.PageSinkManager) Set(java.util.Set) TrinoOperatorFactories(io.trino.operator.TrinoOperatorFactories) SystemSessionPropertiesProvider(io.trino.SystemSessionPropertiesProvider) PreparedStatementEncoder(io.trino.server.protocol.PreparedStatementEncoder) MoreExecutors.directExecutor(com.google.common.util.concurrent.MoreExecutors.directExecutor) SystemConnectorModule(io.trino.connector.system.SystemConnectorModule) IndexJoinLookupStats(io.trino.operator.index.IndexJoinLookupStats) HttpClientBinder.httpClientBinder(io.airlift.http.client.HttpClientBinder.httpClientBinder) TaskManagerConfig(io.trino.execution.TaskManagerConfig) InternalBlockEncodingSerde(io.trino.metadata.InternalBlockEncodingSerde) DiscoveryBinder.discoveryBinder(io.airlift.discovery.client.DiscoveryBinder.discoveryBinder) VersionEmbedder(io.trino.spi.VersionEmbedder) EmbedVersion(io.trino.version.EmbedVersion) SpillerFactory(io.trino.spiller.SpillerFactory) ConfigBinder.configBinder(io.airlift.configuration.ConfigBinder.configBinder) ExplainAnalyzeContext(io.trino.execution.ExplainAnalyzeContext) InternalNodeManager(io.trino.metadata.InternalNodeManager) Slice(io.airlift.slice.Slice) SqlTaskManager(io.trino.execution.SqlTaskManager) MEGABYTE(io.airlift.units.DataSize.Unit.MEGABYTE) PluginsProvider(io.trino.server.PluginManager.PluginsProvider) NodePartitioningManager(io.trino.sql.planner.NodePartitioningManager) JoinCompiler(io.trino.sql.gen.JoinCompiler) MemoryInfo(io.trino.memory.MemoryInfo) MemoryResource(io.trino.memory.MemoryResource) MultilevelSplitQueue(io.trino.execution.executor.MultilevelSplitQueue) GroupByHashPageIndexerFactory(io.trino.operator.GroupByHashPageIndexerFactory) TypeRegistry(io.trino.metadata.TypeRegistry) RuleStatsRecorder(io.trino.sql.planner.RuleStatsRecorder) SliceDeserializer(io.trino.server.SliceSerialization.SliceDeserializer) Binder(com.google.inject.Binder) BlockJsonSerde(io.trino.block.BlockJsonSerde) SystemFunctionBundle(io.trino.metadata.SystemFunctionBundle) PageIndexerFactory(io.trino.spi.PageIndexerFactory) ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) NodeVersion(io.trino.client.NodeVersion) TaskExecutor(io.trino.execution.executor.TaskExecutor) SqlEnvironmentConfig(io.trino.sql.SqlEnvironmentConfig) BlockTypeOperators(io.trino.type.BlockTypeOperators) Executor(java.util.concurrent.Executor) PageSinkProvider(io.trino.split.PageSinkProvider) SpillerStats(io.trino.spiller.SpillerStats) DirectExchangeClientConfig(io.trino.operator.DirectExchangeClientConfig) HttpLocationFactory(io.trino.server.remotetask.HttpLocationFactory) LocalExecutionPlanner(io.trino.sql.planner.LocalExecutionPlanner) FunctionBundle(io.trino.metadata.FunctionBundle) TypeSignatureKeyDeserializer(io.trino.type.TypeSignatureKeyDeserializer) TypeAnalyzer(io.trino.sql.planner.TypeAnalyzer) InternalFunctionBundle(io.trino.metadata.InternalFunctionBundle) StatementAnalyzerFactory(io.trino.sql.analyzer.StatementAnalyzerFactory) TablePropertyManager(io.trino.metadata.TablePropertyManager) ExpressionDeserializer(io.trino.server.ExpressionSerialization.ExpressionDeserializer) MaterializedViewPropertyManager(io.trino.metadata.MaterializedViewPropertyManager) UNIFORM(io.trino.execution.scheduler.NodeSchedulerConfig.NodeSchedulerPolicy.UNIFORM) GcMonitor(io.airlift.stats.GcMonitor) OptimizerConfig(io.trino.sql.planner.OptimizerConfig) NodeMemoryConfig(io.trino.memory.NodeMemoryConfig) SystemSecurityMetadata(io.trino.metadata.SystemSecurityMetadata) NodeTaskMap(io.trino.execution.NodeTaskMap) JoinFilterFunctionCompiler(io.trino.sql.gen.JoinFilterFunctionCompiler) InternalTypeManager(io.trino.type.InternalTypeManager) SplitManager(io.trino.split.SplitManager) NodeSpillConfig(io.trino.spiller.NodeSpillConfig) JsonBinder.jsonBinder(io.airlift.json.JsonBinder.jsonBinder) Duration(io.airlift.units.Duration) PreDestroy(javax.annotation.PreDestroy) DisabledSystemSecurityMetadata(io.trino.metadata.DisabledSystemSecurityMetadata) Block(io.trino.spi.block.Block) ConditionalModule.conditionalModule(io.airlift.configuration.ConditionalModule.conditionalModule) PageSorter(io.trino.spi.PageSorter) ExportBinder.newExporter(org.weakref.jmx.guice.ExportBinder.newExporter) LiteralFunction(io.trino.metadata.LiteralFunction) SqlParser(io.trino.sql.parser.SqlParser) FailureInjector(io.trino.execution.FailureInjector) OptionalBinder.newOptionalBinder(com.google.inject.multibindings.OptionalBinder.newOptionalBinder) TaskManagementExecutor(io.trino.execution.TaskManagementExecutor) TypeSignature(io.trino.spi.type.TypeSignature) ProvidesIntoSet(com.google.inject.multibindings.ProvidesIntoSet) PageFunctionCompiler(io.trino.sql.gen.PageFunctionCompiler) SliceSerializer(io.trino.server.SliceSerialization.SliceSerializer) DirectExchangeClientSupplier(io.trino.operator.DirectExchangeClientSupplier) SplitMonitor(io.trino.event.SplitMonitor) SessionPropertyManager(io.trino.metadata.SessionPropertyManager) DataSize(io.airlift.units.DataSize) QueryManagerConfig(io.trino.execution.QueryManagerConfig) List(java.util.List) LocationFactory(io.trino.execution.LocationFactory) DirectExchangeClientFactory(io.trino.operator.DirectExchangeClientFactory) JaxrsBinder.jaxrsBinder(io.airlift.jaxrs.JaxrsBinder.jaxrsBinder) Expression(io.trino.sql.tree.Expression) ColumnPropertyManager(io.trino.metadata.ColumnPropertyManager) PageSourceProvider(io.trino.split.PageSourceProvider) TypeSignatureDeserializer(io.trino.type.TypeSignatureDeserializer) PlannerContext(io.trino.sql.PlannerContext) GlobalFunctionCatalog(io.trino.metadata.GlobalFunctionCatalog) StaticCatalogStoreConfig(io.trino.metadata.StaticCatalogStoreConfig) OperatorFactories(io.trino.operator.OperatorFactories) FileSingleStreamSpillerFactory(io.trino.spiller.FileSingleStreamSpillerFactory) OrderingCompiler(io.trino.sql.gen.OrderingCompiler) Type(io.trino.spi.type.Type) Singleton(javax.inject.Singleton) MemoryManagerConfig(io.trino.memory.MemoryManagerConfig) ExpressionCompiler(io.trino.sql.gen.ExpressionCompiler) Inject(javax.inject.Inject) AbstractConfigurationAwareModule(io.airlift.configuration.AbstractConfigurationAwareModule) BlockEncodingManager(io.trino.metadata.BlockEncodingManager) ImmutableList(com.google.common.collect.ImmutableList) Threads.daemonThreadsNamed(io.airlift.concurrent.Threads.daemonThreadsNamed) Objects.requireNonNull(java.util.Objects.requireNonNull) SystemSessionProperties(io.trino.SystemSessionProperties) ForExchange(io.trino.operator.ForExchange) GenericPartitioningSpillerFactory(io.trino.spiller.GenericPartitioningSpillerFactory) DynamicFilterConfig(io.trino.execution.DynamicFilterConfig) TableProceduresRegistry(io.trino.metadata.TableProceduresRegistry) IndexManager(io.trino.index.IndexManager) TypeOperatorsCache(io.trino.type.TypeOperatorsCache) ExecutorService(java.util.concurrent.ExecutorService) PagesIndex(io.trino.operator.PagesIndex) SchemaPropertyManager(io.trino.metadata.SchemaPropertyManager) DispatchManager(io.trino.dispatcher.DispatchManager) TableExecuteContextManager(io.trino.execution.TableExecuteContextManager) UniformNodeSelectorModule(io.trino.execution.scheduler.UniformNodeSelectorModule) ForNodeManager(io.trino.metadata.ForNodeManager) HandleJsonModule(io.trino.metadata.HandleJsonModule) SingleStreamSpillerFactory(io.trino.spiller.SingleStreamSpillerFactory) DiscoveryNodeManager(io.trino.metadata.DiscoveryNodeManager) TOPOLOGY(io.trino.execution.scheduler.NodeSchedulerConfig.NodeSchedulerPolicy.TOPOLOGY) GenericSpillerFactory(io.trino.spiller.GenericSpillerFactory) PageSourceManager(io.trino.split.PageSourceManager) Scopes(com.google.inject.Scopes) FunctionManager(io.trino.metadata.FunctionManager) CompilerConfig(io.trino.sql.planner.CompilerConfig) PartitioningSpillerFactory(io.trino.spiller.PartitioningSpillerFactory) Provides(com.google.inject.Provides) FeaturesConfig(io.trino.FeaturesConfig) Executors.newCachedThreadPool(java.util.concurrent.Executors.newCachedThreadPool) CatalogManager(io.trino.metadata.CatalogManager) ProcedureRegistry(io.trino.metadata.ProcedureRegistry) Metadata(io.trino.metadata.Metadata) BlockEncodingSerde(io.trino.spi.block.BlockEncodingSerde) TypeManager(io.trino.spi.type.TypeManager) TypeDeserializer(io.trino.type.TypeDeserializer) AnalyzePropertyManager(io.trino.metadata.AnalyzePropertyManager) SECONDS(java.util.concurrent.TimeUnit.SECONDS) LocalMemoryManager(io.trino.memory.LocalMemoryManager) PluginsProvider(io.trino.server.PluginManager.PluginsProvider) TrinoOperatorFactories(io.trino.operator.TrinoOperatorFactories) FailureInjector(io.trino.execution.FailureInjector) NodeVersion(io.trino.client.NodeVersion) TypeSignature(io.trino.spi.type.TypeSignature) TableExecuteContextManager(io.trino.execution.TableExecuteContextManager) InternalTypeManager(io.trino.type.InternalTypeManager) FunctionManager(io.trino.metadata.FunctionManager) JoinCompiler(io.trino.sql.gen.JoinCompiler) GenericPartitioningSpillerFactory(io.trino.spiller.GenericPartitioningSpillerFactory) TopologyAwareNodeSelectorModule(io.trino.execution.scheduler.TopologyAwareNodeSelectorModule) TrinoOperatorFactories(io.trino.operator.TrinoOperatorFactories) OperatorFactories(io.trino.operator.OperatorFactories) StatementAnalyzerFactory(io.trino.sql.analyzer.StatementAnalyzerFactory) BlockJsonSerde(io.trino.block.BlockJsonSerde) MultilevelSplitQueue(io.trino.execution.executor.MultilevelSplitQueue) TypeOperatorsCache(io.trino.type.TypeOperatorsCache) JmxGcMonitor(io.airlift.stats.JmxGcMonitor) GcMonitor(io.airlift.stats.GcMonitor) NodeSchedulerConfig(io.trino.execution.scheduler.NodeSchedulerConfig) PagesIndex(io.trino.operator.PagesIndex) BlockTypeOperators(io.trino.type.BlockTypeOperators) LocalMemoryManager(io.trino.memory.LocalMemoryManager) SystemConnectorModule(io.trino.connector.system.SystemConnectorModule) EmbedVersion(io.trino.version.EmbedVersion) PageSinkManager(io.trino.split.PageSinkManager) JoinFilterFunctionCompiler(io.trino.sql.gen.JoinFilterFunctionCompiler) VersionEmbedder(io.trino.spi.VersionEmbedder) ConnectorManager(io.trino.connector.ConnectorManager) TypeAnalyzer(io.trino.sql.planner.TypeAnalyzer) CatalogManager(io.trino.metadata.CatalogManager) UniformNodeSelectorModule(io.trino.execution.scheduler.UniformNodeSelectorModule) Type(io.trino.spi.type.Type) PlannerContext(io.trino.sql.PlannerContext) Expression(io.trino.sql.tree.Expression) FinalizerService(io.trino.util.FinalizerService) TaskManagementExecutor(io.trino.execution.TaskManagementExecutor) MemoryRevokingScheduler(io.trino.execution.MemoryRevokingScheduler) SystemSecurityMetadata(io.trino.metadata.SystemSecurityMetadata) DisabledSystemSecurityMetadata(io.trino.metadata.DisabledSystemSecurityMetadata) InternalBlockEncodingSerde(io.trino.metadata.InternalBlockEncodingSerde) TablePropertyManager(io.trino.metadata.TablePropertyManager) TypeRegistry(io.trino.metadata.TypeRegistry) PageSourceManager(io.trino.split.PageSourceManager) HttpServerConfig(io.airlift.http.server.HttpServerConfig) PagesIndexPageSorter(io.trino.operator.PagesIndexPageSorter) FileSingleStreamSpillerFactory(io.trino.spiller.FileSingleStreamSpillerFactory) SessionPropertyManager(io.trino.metadata.SessionPropertyManager) OrderingCompiler(io.trino.sql.gen.OrderingCompiler) NodeScheduler(io.trino.execution.scheduler.NodeScheduler) TypeOperators(io.trino.spi.type.TypeOperators) BlockTypeOperators(io.trino.type.BlockTypeOperators) ForExchange(io.trino.operator.ForExchange) IndexJoinLookupStats(io.trino.operator.index.IndexJoinLookupStats) StaticCatalogStore(io.trino.metadata.StaticCatalogStore) NodeTaskMap(io.trino.execution.NodeTaskMap) SplitMonitor(io.trino.event.SplitMonitor) HttpLocationFactory(io.trino.server.remotetask.HttpLocationFactory) SqlParser(io.trino.sql.parser.SqlParser) Duration(io.airlift.units.Duration) PauseMeter(io.airlift.stats.PauseMeter) SpillerStats(io.trino.spiller.SpillerStats) IndexManager(io.trino.index.IndexManager) LocalSpillManager(io.trino.spiller.LocalSpillManager) SqlTaskManager(io.trino.execution.SqlTaskManager) TaskExecutor(io.trino.execution.executor.TaskExecutor) BlockEncodingManager(io.trino.metadata.BlockEncodingManager) Slice(io.airlift.slice.Slice) Block(io.trino.spi.block.Block) ExpressionCompiler(io.trino.sql.gen.ExpressionCompiler) GroupByHashPageIndexerFactory(io.trino.operator.GroupByHashPageIndexerFactory) ColumnPropertyManager(io.trino.metadata.ColumnPropertyManager) PageFunctionCompiler(io.trino.sql.gen.PageFunctionCompiler) MaterializedViewPropertyManager(io.trino.metadata.MaterializedViewPropertyManager) SpillerFactory(io.trino.spiller.SpillerFactory) GroupByHashPageIndexerFactory(io.trino.operator.GroupByHashPageIndexerFactory) PageIndexerFactory(io.trino.spi.PageIndexerFactory) HttpLocationFactory(io.trino.server.remotetask.HttpLocationFactory) StatementAnalyzerFactory(io.trino.sql.analyzer.StatementAnalyzerFactory) LocationFactory(io.trino.execution.LocationFactory) DirectExchangeClientFactory(io.trino.operator.DirectExchangeClientFactory) FileSingleStreamSpillerFactory(io.trino.spiller.FileSingleStreamSpillerFactory) GenericPartitioningSpillerFactory(io.trino.spiller.GenericPartitioningSpillerFactory) SingleStreamSpillerFactory(io.trino.spiller.SingleStreamSpillerFactory) GenericSpillerFactory(io.trino.spiller.GenericSpillerFactory) PartitioningSpillerFactory(io.trino.spiller.PartitioningSpillerFactory) DisabledSystemSecurityMetadata(io.trino.metadata.DisabledSystemSecurityMetadata) LocalMemoryManagerExporter(io.trino.memory.LocalMemoryManagerExporter) NodePartitioningManager(io.trino.sql.planner.NodePartitioningManager) TableProceduresRegistry(io.trino.metadata.TableProceduresRegistry) HandleJsonModule(io.trino.metadata.HandleJsonModule) SchemaPropertyManager(io.trino.metadata.SchemaPropertyManager) GenericSpillerFactory(io.trino.spiller.GenericSpillerFactory) AnalyzePropertyManager(io.trino.metadata.AnalyzePropertyManager) LocalExecutionPlanner(io.trino.sql.planner.LocalExecutionPlanner) ProcedureRegistry(io.trino.metadata.ProcedureRegistry) DirectExchangeClientFactory(io.trino.operator.DirectExchangeClientFactory) SpillerFactory(io.trino.spiller.SpillerFactory) FileSingleStreamSpillerFactory(io.trino.spiller.FileSingleStreamSpillerFactory) GenericPartitioningSpillerFactory(io.trino.spiller.GenericPartitioningSpillerFactory) SingleStreamSpillerFactory(io.trino.spiller.SingleStreamSpillerFactory) GenericSpillerFactory(io.trino.spiller.GenericSpillerFactory) PartitioningSpillerFactory(io.trino.spiller.PartitioningSpillerFactory) GlobalFunctionCatalog(io.trino.metadata.GlobalFunctionCatalog) SplitManager(io.trino.split.SplitManager) PreparedStatementEncoder(io.trino.server.protocol.PreparedStatementEncoder) MetadataManager(io.trino.metadata.MetadataManager) JmxGcMonitor(io.airlift.stats.JmxGcMonitor) DiscoveryNodeManager(io.trino.metadata.DiscoveryNodeManager) SystemSessionProperties(io.trino.SystemSessionProperties) TableProceduresPropertyManager(io.trino.metadata.TableProceduresPropertyManager)

Aggregations

Metadata (io.trino.metadata.Metadata)50 Session (io.trino.Session)35 List (java.util.List)34 Optional (java.util.Optional)31 Objects.requireNonNull (java.util.Objects.requireNonNull)30 PlanNode (io.trino.sql.planner.plan.PlanNode)22 Expression (io.trino.sql.tree.Expression)21 ImmutableList.toImmutableList (com.google.common.collect.ImmutableList.toImmutableList)20 Set (java.util.Set)19 Preconditions.checkState (com.google.common.base.Preconditions.checkState)18 Map (java.util.Map)16 ImmutableList (com.google.common.collect.ImmutableList)15 MoreObjects.toStringHelper (com.google.common.base.MoreObjects.toStringHelper)14 StatsProvider (io.trino.cost.StatsProvider)14 QualifiedObjectName (io.trino.metadata.QualifiedObjectName)14 Symbol (io.trino.sql.planner.Symbol)14 ImmutableMap (com.google.common.collect.ImmutableMap)13 ImmutableSet (com.google.common.collect.ImmutableSet)13 TableHandle (io.trino.metadata.TableHandle)13 NO_MATCH (io.trino.sql.planner.assertions.MatchResult.NO_MATCH)13