Package io.trino.server
Class DynamicFilterService
java.lang.Object
io.trino.server.DynamicFilterService
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classstatic class -
Constructor Summary
ConstructorsConstructorDescriptionDynamicFilterService(Metadata metadata, FunctionManager functionManager, TypeOperators typeOperators, DynamicFilterConfig dynamicFilterConfig) -
Method Summary
Modifier and TypeMethodDescriptionvoidaddTaskDynamicFilters(TaskId taskId, Map<DynamicFilterId, Domain> newDynamicFilters) createDynamicFilter(QueryId queryId, List<DynamicFilters.Descriptor> dynamicFilterDescriptors, Map<Symbol, ColumnHandle> columnHandles, TypeProvider typeProvider) getDynamicFilteringStats(QueryId queryId, Session session) static Set<DynamicFilterId> booleanisCollectingTaskNeeded(QueryId queryId, PlanFragment plan) Dynamic filters are collected in same stage as the join operator in pipelined execution.booleanisStageSchedulingNeededToCollectDynamicFilters(QueryId queryId, PlanFragment plan) voidregisterDynamicFilterConsumer(QueryId queryId, int attemptId, Set<DynamicFilterId> dynamicFilterIds, Consumer<Map<DynamicFilterId, Domain>> consumer) voidregisterQuery(SqlQueryExecution sqlQueryExecution, SubPlan fragmentedPlan) voidregisterQuery(QueryId queryId, Session session, Set<DynamicFilterId> dynamicFilters, Set<DynamicFilterId> lazyDynamicFilters, Set<DynamicFilterId> replicatedDynamicFilters) voidregisterQueryRetry(QueryId queryId, int attemptId) voidremoveQuery(QueryId queryId) voidstageCannotScheduleMoreTasks(StageId stageId, int attemptId, int numberOfTasks) voidunblockStageDynamicFilters(QueryId queryId, int attemptId, PlanFragment plan) Join build source tasks might become blocked waiting for join stage to collect build data.
-
Constructor Details
-
DynamicFilterService
@Inject public DynamicFilterService(Metadata metadata, FunctionManager functionManager, TypeOperators typeOperators, DynamicFilterConfig dynamicFilterConfig)
-
-
Method Details
-
registerQuery
-
registerQuery
public void registerQuery(QueryId queryId, Session session, Set<DynamicFilterId> dynamicFilters, Set<DynamicFilterId> lazyDynamicFilters, Set<DynamicFilterId> replicatedDynamicFilters) -
registerQueryRetry
-
getDynamicFilteringStats
public DynamicFilterService.DynamicFiltersStats getDynamicFilteringStats(QueryId queryId, Session session) -
removeQuery
-
isCollectingTaskNeeded
Dynamic filters are collected in same stage as the join operator in pipelined execution. This can result in deadlock for source stage joins and connectors that wait for dynamic filters before generating splits (probe splits might be blocked on dynamic filters which require at least one probe task in order to be collected). To overcome this issue an initial task is created for source stages running broadcast join operator. This task allows for dynamic filters collection without any probe side splits being scheduled. -
isStageSchedulingNeededToCollectDynamicFilters
-
unblockStageDynamicFilters
Join build source tasks might become blocked waiting for join stage to collect build data. In such case dynamic filters must be unblocked (and probe split generation resumed) for source stage containing joins to allow build source tasks to flush data and complete. -
createDynamicFilter
public DynamicFilter createDynamicFilter(QueryId queryId, List<DynamicFilters.Descriptor> dynamicFilterDescriptors, Map<Symbol, ColumnHandle> columnHandles, TypeProvider typeProvider) -
registerDynamicFilterConsumer
public void registerDynamicFilterConsumer(QueryId queryId, int attemptId, Set<DynamicFilterId> dynamicFilterIds, Consumer<Map<DynamicFilterId, Domain>> consumer) -
addTaskDynamicFilters
-
stageCannotScheduleMoreTasks
-
getOutboundDynamicFilters
-