Package io.prestosql.server
Class DynamicFilterService
- java.lang.Object
-
- io.prestosql.server.DynamicFilterService
-
@ThreadSafe public class DynamicFilterService extends Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
DynamicFilterService.DynamicFilterDomainStats
static class
DynamicFilterService.DynamicFiltersStats
-
Constructor Summary
Constructors Constructor Description DynamicFilterService(Metadata metadata, TypeOperators typeOperators, DynamicFilterConfig dynamicFilterConfig)
DynamicFilterService(Metadata metadata, TypeOperators typeOperators, ExecutorService executor)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addTaskDynamicFilters(TaskId taskId, Map<DynamicFilterId,Domain> newDynamicFilters)
DynamicFilter
createDynamicFilter(QueryId queryId, List<DynamicFilters.Descriptor> dynamicFilterDescriptors, Map<Symbol,ColumnHandle> columnHandles, TypeProvider typeProvider)
DynamicFilterService.DynamicFiltersStats
getDynamicFilteringStats(QueryId queryId, Session session)
boolean
isCollectingTaskNeeded(QueryId queryId, PlanFragment plan)
Dynamic filters are collected in same stage as the join operator.void
registerQuery(SqlQueryExecution sqlQueryExecution, SubPlan fragmentedPlan)
void
registerQuery(QueryId queryId, Session session, Set<DynamicFilterId> dynamicFilters, Set<DynamicFilterId> lazyDynamicFilters, Set<DynamicFilterId> replicatedDynamicFilters)
void
removeQuery(QueryId queryId)
void
stageCannotScheduleMoreTasks(StageId stageId, int numberOfTasks)
void
stop()
void
unblockStageDynamicFilters(QueryId queryId, PlanFragment plan)
Join build source tasks might become blocked waiting for join stage to collect build data.
-
-
-
Constructor Detail
-
DynamicFilterService
@Inject public DynamicFilterService(Metadata metadata, TypeOperators typeOperators, DynamicFilterConfig dynamicFilterConfig)
-
DynamicFilterService
public DynamicFilterService(Metadata metadata, TypeOperators typeOperators, ExecutorService executor)
-
-
Method Detail
-
stop
@PreDestroy public void stop()
-
registerQuery
public void registerQuery(SqlQueryExecution sqlQueryExecution, SubPlan fragmentedPlan)
-
registerQuery
public void registerQuery(QueryId queryId, Session session, Set<DynamicFilterId> dynamicFilters, Set<DynamicFilterId> lazyDynamicFilters, Set<DynamicFilterId> replicatedDynamicFilters)
-
getDynamicFilteringStats
public DynamicFilterService.DynamicFiltersStats getDynamicFilteringStats(QueryId queryId, Session session)
-
removeQuery
public void removeQuery(QueryId queryId)
-
isCollectingTaskNeeded
public boolean isCollectingTaskNeeded(QueryId queryId, PlanFragment plan)
Dynamic filters are collected in same stage as the join operator. 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.
-
unblockStageDynamicFilters
public void unblockStageDynamicFilters(QueryId queryId, PlanFragment plan)
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)
-
addTaskDynamicFilters
public void addTaskDynamicFilters(TaskId taskId, Map<DynamicFilterId,Domain> newDynamicFilters)
-
stageCannotScheduleMoreTasks
public void stageCannotScheduleMoreTasks(StageId stageId, int numberOfTasks)
-
-