Class DynamicFilterService

java.lang.Object
io.trino.server.DynamicFilterService

@ThreadSafe public class DynamicFilterService extends Object
  • Constructor Details

  • Method Details

    • 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)
    • registerQueryRetry

      public void registerQueryRetry(QueryId queryId, int attemptId)
    • 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 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

      public boolean isStageSchedulingNeededToCollectDynamicFilters(QueryId queryId, PlanFragment plan)
    • unblockStageDynamicFilters

      public void unblockStageDynamicFilters(QueryId queryId, int attemptId, 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)
    • registerDynamicFilterConsumer

      public void registerDynamicFilterConsumer(QueryId queryId, int attemptId, Set<DynamicFilterId> dynamicFilterIds, Consumer<Map<DynamicFilterId,Domain>> consumer)
    • addTaskDynamicFilters

      public void addTaskDynamicFilters(TaskId taskId, Map<DynamicFilterId,Domain> newDynamicFilters)
    • stageCannotScheduleMoreTasks

      public void stageCannotScheduleMoreTasks(StageId stageId, int attemptId, int numberOfTasks)
    • getOutboundDynamicFilters

      public static Set<DynamicFilterId> getOutboundDynamicFilters(PlanFragment plan)