Какая функция динамических фильтров в PrestoSql DistributedExecutionPlanner.Visitor?

Какая функция DynamicFilters в PrestoSql 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);
    }

person Long.zhao    schedule 02.03.2020    source источник
comment
Взгляните на prestosql.io/blog/2019/06/30/ dynamic-filtering.html   -  person Martin Traverso    schedule 02.03.2020
comment
Реализация в блоге еще не реализована? Я все еще вижу одно TODO в коде   -  person Long.zhao    schedule 02.03.2020


Ответы (1)


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

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

person Piotr Findeisen    schedule 02.03.2020