Какова функция DynamicFilters в Presto Sql DistributedExecutionPlanner.Visitor? - PullRequest
0 голосов
/ 02 марта 2020

Какова функция DynamicFilters в Presto Sql DistributedExecutionPlanner.Visitor?

private Map<PlanNodeId, SplitSource> visitScanAndFilter(TableScanNode node, Optional<FilterNode> filter)
    {
        // ***What's the purpose of dynamicFilters and how to use it?***
        List<DynamicFilters.Descriptor> dynamicFilters = filter
                .map(FilterNode::getPredicate)
                .map(expression -> extractDynamicFilters(metadata, expression))
                .map(DynamicFilters.ExtractResult::getDynamicConjuncts)
                .orElse(ImmutableList.of());

        // TODO: Execution must be plugged in here 
        if (!dynamicFilters.isEmpty()) {
            log.debug("Dynamic filters: %s", dynamicFilters);
        }

        // get dataSource for table
        SplitSource splitSource = splitManager.getSplits(
                session,
                node.getTable(),
                stageExecutionDescriptor.isScanGroupedExecution(node.getId()) ? GROUPED_SCHEDULING : UNGROUPED_SCHEDULING);

        splitSources.add(splitSource);

        return ImmutableMap.of(node.getId(), splitSource);
    }

1 Ответ

1 голос
/ 02 марта 2020

Как предложил Мартин, https://prestosql.io/blog/2019/06/30/dynamic-filtering.html описывает значение фильтров Dynami c.

TODO в коде присутствуют, потому что еще не все компоненты этой функции реализованы. Вы можете отслеживать https://github.com/prestosql/presto/issues/52

...