Search in sources :

Example 71 with Filter

use of org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.core.Filter in project calcite by apache.

the class DruidQuery method signature.

/**
 * Returns a string describing the operations inside this query.
 *
 * <p>For example, "sfpahol" means {@link TableScan} (s)
 * followed by {@link Filter} (f)
 * followed by {@link Project} (p)
 * followed by {@link Aggregate} (a)
 * followed by {@link Filter} (h)
 * followed by {@link Project} (o)
 * followed by {@link Sort} (l).
 *
 * @see #isValidSignature(String)
 */
String signature() {
    final StringBuilder b = new StringBuilder();
    boolean flag = false;
    for (RelNode rel : rels) {
        b.append(rel instanceof TableScan ? 's' : (rel instanceof Project && flag) ? 'o' : (rel instanceof Filter && flag) ? 'h' : rel instanceof Aggregate ? 'a' : rel instanceof Filter ? 'f' : rel instanceof Sort ? 'l' : rel instanceof Project ? 'p' : '!');
        flag = flag || rel instanceof Aggregate;
    }
    return b.toString();
}
Also used : TableScan(org.apache.calcite.rel.core.TableScan) Project(org.apache.calcite.rel.core.Project) AbstractRelNode(org.apache.calcite.rel.AbstractRelNode) RelNode(org.apache.calcite.rel.RelNode) Filter(org.apache.calcite.rel.core.Filter) Sort(org.apache.calcite.rel.core.Sort) Aggregate(org.apache.calcite.rel.core.Aggregate)

Example 72 with Filter

use of org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.core.Filter in project calcite by apache.

the class DruidQuery method explainTerms.

@Override
public RelWriter explainTerms(RelWriter pw) {
    for (RelNode rel : rels) {
        if (rel instanceof TableScan) {
            TableScan tableScan = (TableScan) rel;
            pw.item("table", tableScan.getTable().getQualifiedName());
            pw.item("intervals", intervals);
        } else if (rel instanceof Filter) {
            pw.item("filter", ((Filter) rel).getCondition());
        } else if (rel instanceof Project) {
            if (((Project) rel).getInput() instanceof Aggregate) {
                pw.item("post_projects", ((Project) rel).getProjects());
            } else {
                pw.item("projects", ((Project) rel).getProjects());
            }
        } else if (rel instanceof Aggregate) {
            final Aggregate aggregate = (Aggregate) rel;
            pw.item("groups", aggregate.getGroupSet()).item("aggs", aggregate.getAggCallList());
        } else if (rel instanceof Sort) {
            final Sort sort = (Sort) rel;
            for (Ord<RelFieldCollation> ord : Ord.zip(sort.collation.getFieldCollations())) {
                pw.item("sort" + ord.i, ord.e.getFieldIndex());
            }
            for (Ord<RelFieldCollation> ord : Ord.zip(sort.collation.getFieldCollations())) {
                pw.item("dir" + ord.i, ord.e.shortString());
            }
            pw.itemIf("fetch", sort.fetch, sort.fetch != null);
        } else {
            throw new AssertionError("rel type not supported in Druid query " + rel);
        }
    }
    return pw;
}
Also used : TableScan(org.apache.calcite.rel.core.TableScan) Project(org.apache.calcite.rel.core.Project) AbstractRelNode(org.apache.calcite.rel.AbstractRelNode) RelNode(org.apache.calcite.rel.RelNode) Filter(org.apache.calcite.rel.core.Filter) RelFieldCollation(org.apache.calcite.rel.RelFieldCollation) Sort(org.apache.calcite.rel.core.Sort) Aggregate(org.apache.calcite.rel.core.Aggregate)

Example 73 with Filter

use of org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.core.Filter in project druid by druid-io.

the class DruidQuery method toScanQuery.

/**
 * Return this query as a Scan query, or null if this query is not compatible with Scan.
 *
 * @return query or null
 */
@Nullable
private ScanQuery toScanQuery(final QueryFeatureInspector queryFeatureInspector) {
    if (grouping != null) {
        // Scan cannot GROUP BY.
        return null;
    }
    if (outputRowSignature.size() == 0) {
        // Should never do a scan query without any columns that we're interested in. This is probably a planner bug.
        throw new ISE("Cannot convert to Scan query without any columns.");
    }
    final Pair<DataSource, Filtration> dataSourceFiltrationPair = getFiltration(dataSource, filter, virtualColumnRegistry);
    final DataSource newDataSource = dataSourceFiltrationPair.lhs;
    final Filtration filtration = dataSourceFiltrationPair.rhs;
    final List<ScanQuery.OrderBy> orderByColumns;
    long scanOffset = 0L;
    long scanLimit = 0L;
    if (sorting != null) {
        scanOffset = sorting.getOffsetLimit().getOffset();
        if (sorting.getOffsetLimit().hasLimit()) {
            final long limit = sorting.getOffsetLimit().getLimit();
            if (limit == 0) {
                // Can't handle zero limit (the Scan query engine would treat it as unlimited).
                return null;
            }
            scanLimit = limit;
        }
        orderByColumns = sorting.getOrderBys().stream().map(orderBy -> new ScanQuery.OrderBy(orderBy.getDimension(), orderBy.getDirection() == OrderByColumnSpec.Direction.DESCENDING ? ScanQuery.Order.DESCENDING : ScanQuery.Order.ASCENDING)).collect(Collectors.toList());
    } else {
        orderByColumns = Collections.emptyList();
    }
    if (!queryFeatureInspector.feature(QueryFeature.SCAN_CAN_ORDER_BY_NON_TIME) && (orderByColumns.size() > 1 || orderByColumns.stream().anyMatch(orderBy -> !orderBy.getColumnName().equals(ColumnHolder.TIME_COLUMN_NAME)))) {
        // Cannot handle this ordering.
        // Scan cannot ORDER BY non-time columns.
        plannerContext.setPlanningError("SQL query requires order by non-time column %s that is not supported.", orderByColumns);
        return null;
    }
    // Compute the list of columns to select, sorted and deduped.
    final SortedSet<String> scanColumns = new TreeSet<>(outputRowSignature.getColumnNames());
    orderByColumns.forEach(column -> scanColumns.add(column.getColumnName()));
    return new ScanQuery(newDataSource, filtration.getQuerySegmentSpec(), getVirtualColumns(true), ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST, 0, scanOffset, scanLimit, null, orderByColumns, filtration.getDimFilter(), ImmutableList.copyOf(scanColumns), false, ImmutableSortedMap.copyOf(plannerContext.getQueryContext()));
}
Also used : GroupByRules(org.apache.druid.sql.calcite.rule.GroupByRules) SortedSet(java.util.SortedSet) RowSignatures(org.apache.druid.sql.calcite.table.RowSignatures) OffsetLimit(org.apache.druid.sql.calcite.planner.OffsetLimit) Pair(org.apache.druid.java.util.common.Pair) DefaultLimitSpec(org.apache.druid.query.groupby.orderby.DefaultLimitSpec) OrderByColumnSpec(org.apache.druid.query.groupby.orderby.OrderByColumnSpec) PostAggregator(org.apache.druid.query.aggregation.PostAggregator) RexNode(org.apache.calcite.rex.RexNode) Map(java.util.Map) DimFilterHavingSpec(org.apache.druid.query.groupby.having.DimFilterHavingSpec) InvertedTopNMetricSpec(org.apache.druid.query.topn.InvertedTopNMetricSpec) ImmutableBitSet(org.apache.calcite.util.ImmutableBitSet) QueryFeatureInspector(org.apache.druid.sql.calcite.run.QueryFeatureInspector) SqlKind(org.apache.calcite.sql.SqlKind) DimensionExpression(org.apache.druid.sql.calcite.aggregation.DimensionExpression) DataSource(org.apache.druid.query.DataSource) TopNMetricSpec(org.apache.druid.query.topn.TopNMetricSpec) TimeseriesQuery(org.apache.druid.query.timeseries.TimeseriesQuery) NumericTopNMetricSpec(org.apache.druid.query.topn.NumericTopNMetricSpec) Set(java.util.Set) ISE(org.apache.druid.java.util.common.ISE) ValueType(org.apache.druid.segment.column.ValueType) RelFieldCollation(org.apache.calcite.rel.RelFieldCollation) Collectors(java.util.stream.Collectors) RexInputRef(org.apache.calcite.rex.RexInputRef) QueryDataSource(org.apache.druid.query.QueryDataSource) List(java.util.List) DimFilter(org.apache.druid.query.filter.DimFilter) Sort(org.apache.calcite.rel.core.Sort) DimensionSpec(org.apache.druid.query.dimension.DimensionSpec) Optional(java.util.Optional) IntArrayList(it.unimi.dsi.fastutil.ints.IntArrayList) Expressions(org.apache.druid.sql.calcite.expression.Expressions) Project(org.apache.calcite.rel.core.Project) Iterables(com.google.common.collect.Iterables) Granularity(org.apache.druid.java.util.common.granularity.Granularity) HashMap(java.util.HashMap) DimensionTopNMetricSpec(org.apache.druid.query.topn.DimensionTopNMetricSpec) Filter(org.apache.calcite.rel.core.Filter) QueryFeature(org.apache.druid.sql.calcite.run.QueryFeature) Iterators(com.google.common.collect.Iterators) ScanQuery(org.apache.druid.query.scan.ScanQuery) TopNQuery(org.apache.druid.query.topn.TopNQuery) TreeSet(java.util.TreeSet) ArrayList(java.util.ArrayList) DruidExpression(org.apache.druid.sql.calcite.expression.DruidExpression) HashSet(java.util.HashSet) ColumnHolder(org.apache.druid.segment.column.ColumnHolder) ImmutableList(com.google.common.collect.ImmutableList) Query(org.apache.druid.query.Query) StringComparators(org.apache.druid.query.ordering.StringComparators) PlannerContext(org.apache.druid.sql.calcite.planner.PlannerContext) JoinDataSource(org.apache.druid.query.JoinDataSource) GroupByQuery(org.apache.druid.query.groupby.GroupByQuery) Nonnull(javax.annotation.Nonnull) ImmutableSortedMap(com.google.common.collect.ImmutableSortedMap) Nullable(javax.annotation.Nullable) Filtration(org.apache.druid.sql.calcite.filtration.Filtration) RelDataType(org.apache.calcite.rel.type.RelDataType) VirtualColumns(org.apache.druid.segment.VirtualColumns) SqlTypeName(org.apache.calcite.sql.type.SqlTypeName) StringComparator(org.apache.druid.query.ordering.StringComparator) RexBuilder(org.apache.calcite.rex.RexBuilder) VirtualColumn(org.apache.druid.segment.VirtualColumn) Aggregation(org.apache.druid.sql.calcite.aggregation.Aggregation) Ints(com.google.common.primitives.Ints) Aggregate(org.apache.calcite.rel.core.Aggregate) Granularities(org.apache.druid.java.util.common.granularity.Granularities) IntList(it.unimi.dsi.fastutil.ints.IntList) Types(org.apache.druid.segment.column.Types) RowSignature(org.apache.druid.segment.column.RowSignature) ColumnType(org.apache.druid.segment.column.ColumnType) Preconditions(com.google.common.base.Preconditions) AggregateCall(org.apache.calcite.rel.core.AggregateCall) VisibleForTesting(com.google.common.annotations.VisibleForTesting) Comparator(java.util.Comparator) Calcites(org.apache.druid.sql.calcite.planner.Calcites) Collections(java.util.Collections) Filtration(org.apache.druid.sql.calcite.filtration.Filtration) ScanQuery(org.apache.druid.query.scan.ScanQuery) DataSource(org.apache.druid.query.DataSource) QueryDataSource(org.apache.druid.query.QueryDataSource) JoinDataSource(org.apache.druid.query.JoinDataSource) TreeSet(java.util.TreeSet) ISE(org.apache.druid.java.util.common.ISE) Nullable(javax.annotation.Nullable)

Example 74 with Filter

use of org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.core.Filter in project druid by druid-io.

the class FilterJoinExcludePushToChildRule method removeRedundantIsNotNullFilters.

/**
 * This tries to find all the 'IS NOT NULL' filters in an inner join whose checking column is also
 * a part of an equi-condition between the two tables. It removes such 'IS NOT NULL' filters from join since
 * the equi-condition will never return true for null input, thus making the 'IS NOT NULL' filter a no-op.
 * @param joinFilters
 * @param joinType
 * @param isSqlCompatible
 */
static void removeRedundantIsNotNullFilters(List<RexNode> joinFilters, JoinRelType joinType, boolean isSqlCompatible) {
    if (joinType != JoinRelType.INNER || !isSqlCompatible) {
        // only works for inner joins in SQL mode
        return;
    }
    ImmutableList.Builder<RexNode> isNotNullFiltersBuilder = ImmutableList.builder();
    ImmutableList.Builder<Pair<RexNode, RexNode>> equalityFiltersOperandBuilder = ImmutableList.builder();
    joinFilters.stream().filter(joinFilter -> joinFilter instanceof RexCall).forEach(joinFilter -> {
        if (joinFilter.isA(SqlKind.IS_NOT_NULL)) {
            isNotNullFiltersBuilder.add(joinFilter);
        } else if (joinFilter.isA(SqlKind.EQUALS)) {
            List<RexNode> operands = ((RexCall) joinFilter).getOperands();
            if (operands.size() == 2 && operands.stream().noneMatch(Objects::isNull)) {
                equalityFiltersOperandBuilder.add(new Pair<>(operands.get(0), operands.get(1)));
            }
        }
    });
    List<Pair<RexNode, RexNode>> equalityFilters = equalityFiltersOperandBuilder.build();
    ImmutableList.Builder<RexNode> removableFilters = ImmutableList.builder();
    for (RexNode isNotNullFilter : isNotNullFiltersBuilder.build()) {
        List<RexNode> operands = ((RexCall) isNotNullFilter).getOperands();
        boolean canDrop = false;
        for (Pair<RexNode, RexNode> equalityFilterOperands : equalityFilters) {
            if ((equalityFilterOperands.lhs != null && equalityFilterOperands.lhs.equals(operands.get(0))) || (equalityFilterOperands.rhs != null && equalityFilterOperands.rhs.equals(operands.get(0)))) {
                canDrop = true;
                break;
            }
        }
        if (canDrop) {
            removableFilters.add(isNotNullFilter);
        }
    }
    joinFilters.removeAll(removableFilters.build());
}
Also used : RelFactories(org.apache.calcite.rel.core.RelFactories) Filter(org.apache.calcite.rel.core.Filter) RelOptUtil(org.apache.calcite.plan.RelOptUtil) Join(org.apache.calcite.rel.core.Join) Pair(org.apache.druid.java.util.common.Pair) ArrayList(java.util.ArrayList) RexUtil(org.apache.calcite.rex.RexUtil) ImmutableList(com.google.common.collect.ImmutableList) EnumerableConvention(org.apache.calcite.adapter.enumerable.EnumerableConvention) RelOptRuleOperand(org.apache.calcite.plan.RelOptRuleOperand) RexNode(org.apache.calcite.rex.RexNode) RelBuilder(org.apache.calcite.tools.RelBuilder) RelBuilderFactory(org.apache.calcite.tools.RelBuilderFactory) RelDataType(org.apache.calcite.rel.type.RelDataType) SqlKind(org.apache.calcite.sql.SqlKind) RexBuilder(org.apache.calcite.rex.RexBuilder) RelNode(org.apache.calcite.rel.RelNode) Sets(com.google.common.collect.Sets) RelOptRuleCall(org.apache.calcite.plan.RelOptRuleCall) Objects(java.util.Objects) RelOptRule(org.apache.calcite.plan.RelOptRule) List(java.util.List) FilterJoinRule(org.apache.calcite.rel.rules.FilterJoinRule) NullHandling(org.apache.druid.common.config.NullHandling) JoinRelType(org.apache.calcite.rel.core.JoinRelType) RexCall(org.apache.calcite.rex.RexCall) ImmutableList(com.google.common.collect.ImmutableList) RexCall(org.apache.calcite.rex.RexCall) Objects(java.util.Objects) ArrayList(java.util.ArrayList) ImmutableList(com.google.common.collect.ImmutableList) List(java.util.List) RexNode(org.apache.calcite.rex.RexNode) Pair(org.apache.druid.java.util.common.Pair)

Example 75 with Filter

use of org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.core.Filter in project flink by apache.

the class RelDecorrelator method decorrelate.

protected RelNode decorrelate(RelNode root) {
    // first adjust count() expression if any
    final RelBuilderFactory f = relBuilderFactory();
    HepProgram program = HepProgram.builder().addRuleInstance(AdjustProjectForCountAggregateRule.config(false, this, f).toRule()).addRuleInstance(AdjustProjectForCountAggregateRule.config(true, this, f).toRule()).addRuleInstance(FilterJoinRule.FilterIntoJoinRule.Config.DEFAULT.withRelBuilderFactory(f).withOperandSupplier(b0 -> b0.operand(Filter.class).oneInput(b1 -> b1.operand(Join.class).anyInputs())).withDescription("FilterJoinRule:filter").as(FilterJoinRule.FilterIntoJoinRule.Config.class).withSmart(true).withPredicate((join, joinType, exp) -> true).as(FilterJoinRule.FilterIntoJoinRule.Config.class).toRule()).addRuleInstance(CoreRules.FILTER_PROJECT_TRANSPOSE.config.withRelBuilderFactory(f).as(FilterProjectTransposeRule.Config.class).withOperandFor(Filter.class, filter -> !RexUtil.containsCorrelation(filter.getCondition()), Project.class, project -> true).withCopyFilter(true).withCopyProject(true).toRule()).addRuleInstance(FilterCorrelateRule.Config.DEFAULT.withRelBuilderFactory(f).toRule()).build();
    HepPlanner planner = createPlanner(program);
    planner.setRoot(root);
    root = planner.findBestExp();
    // Perform decorrelation.
    map.clear();
    final Frame frame = getInvoke(root, null);
    if (frame != null) {
        // has been rewritten; apply rules post-decorrelation
        final HepProgram program2 = HepProgram.builder().addRuleInstance(CoreRules.FILTER_INTO_JOIN.config.withRelBuilderFactory(f).toRule()).addRuleInstance(CoreRules.JOIN_CONDITION_PUSH.config.withRelBuilderFactory(f).toRule()).build();
        final HepPlanner planner2 = createPlanner(program2);
        final RelNode newRoot = frame.r;
        planner2.setRoot(newRoot);
        return planner2.findBestExp();
    }
    return root;
}
Also used : RelBuilderFactory(org.apache.calcite.tools.RelBuilderFactory) Values(org.apache.calcite.rel.core.Values) Mappings(org.apache.calcite.util.mapping.Mappings) MultimapBuilder(com.google.common.collect.MultimapBuilder) BigDecimal(java.math.BigDecimal) CorrelationId(org.apache.calcite.rel.core.CorrelationId) Map(java.util.Map) ImmutableBitSet(org.apache.calcite.util.ImmutableBitSet) ImmutableBeans(org.apache.calcite.util.ImmutableBeans) Function2(org.apache.calcite.linq4j.function.Function2) SqlKind(org.apache.calcite.sql.SqlKind) RexVisitorImpl(org.apache.calcite.rex.RexVisitorImpl) SqlCountAggFunction(org.apache.calcite.sql.fun.SqlCountAggFunction) Set(java.util.Set) SqlExplainLevel(org.apache.calcite.sql.SqlExplainLevel) RelMetadataQuery(org.apache.calcite.rel.metadata.RelMetadataQuery) SqlStdOperatorTable(org.apache.calcite.sql.fun.SqlStdOperatorTable) RelCollation(org.apache.calcite.rel.RelCollation) RexCorrelVariable(org.apache.calcite.rex.RexCorrelVariable) HepRelVertex(org.apache.calcite.plan.hep.HepRelVertex) RexCall(org.apache.calcite.rex.RexCall) Iterables(com.google.common.collect.Iterables) Holder(org.apache.calcite.util.Holder) Correlate(org.apache.calcite.rel.core.Correlate) Ord(org.apache.calcite.linq4j.Ord) Filter(org.apache.calcite.rel.core.Filter) Join(org.apache.calcite.rel.core.Join) ArrayList(java.util.ArrayList) LogicalCorrelate(org.apache.calcite.rel.logical.LogicalCorrelate) ReflectiveVisitor(org.apache.calcite.util.ReflectiveVisitor) ImmutableSortedMap(com.google.common.collect.ImmutableSortedMap) ImmutableSortedSet(com.google.common.collect.ImmutableSortedSet) RelDataType(org.apache.calcite.rel.type.RelDataType) BiRel(org.apache.calcite.rel.BiRel) FilterProjectTransposeRule(org.apache.calcite.rel.rules.FilterProjectTransposeRule) RelRule(org.apache.calcite.plan.RelRule) Aggregate(org.apache.calcite.rel.core.Aggregate) RelHomogeneousShuttle(org.apache.calcite.rel.RelHomogeneousShuttle) LogicalAggregate(org.apache.calcite.rel.logical.LogicalAggregate) SqlFunction(org.apache.calcite.sql.SqlFunction) TreeMap(java.util.TreeMap) CalciteTrace(org.apache.calcite.util.trace.CalciteTrace) JoinRelType(org.apache.calcite.rel.core.JoinRelType) AggregateCall(org.apache.calcite.rel.core.AggregateCall) RelDataTypeFactory(org.apache.calcite.rel.type.RelDataTypeFactory) LogicalFilter(org.apache.calcite.rel.logical.LogicalFilter) RelFactories(org.apache.calcite.rel.core.RelFactories) RelOptCostImpl(org.apache.calcite.plan.RelOptCostImpl) LogicalTableFunctionScan(org.apache.calcite.rel.logical.LogicalTableFunctionScan) RelMdUtil(org.apache.calcite.rel.metadata.RelMdUtil) RexUtil(org.apache.calcite.rex.RexUtil) LogicalJoin(org.apache.calcite.rel.logical.LogicalJoin) RexNode(org.apache.calcite.rex.RexNode) RelBuilder(org.apache.calcite.tools.RelBuilder) HepProgram(org.apache.calcite.plan.hep.HepProgram) RelOptCluster(org.apache.calcite.plan.RelOptCluster) Litmus(org.apache.calcite.util.Litmus) ImmutableSet(com.google.common.collect.ImmutableSet) SortedSetMultimap(com.google.common.collect.SortedSetMultimap) ImmutableMap(com.google.common.collect.ImmutableMap) RexLiteral(org.apache.calcite.rex.RexLiteral) Collection(java.util.Collection) Context(org.apache.calcite.plan.Context) NavigableMap(java.util.NavigableMap) Collectors(java.util.stream.Collectors) Sets(com.google.common.collect.Sets) RexInputRef(org.apache.calcite.rex.RexInputRef) Objects(java.util.Objects) List(java.util.List) FilterJoinRule(org.apache.calcite.rel.rules.FilterJoinRule) Sort(org.apache.calcite.rel.core.Sort) RelDataTypeField(org.apache.calcite.rel.type.RelDataTypeField) SqlExplainFormat(org.apache.calcite.sql.SqlExplainFormat) SortedMap(java.util.SortedMap) Project(org.apache.calcite.rel.core.Project) RexFieldAccess(org.apache.calcite.rex.RexFieldAccess) HashMap(java.util.HashMap) Multimap(com.google.common.collect.Multimap) RelOptUtil(org.apache.calcite.plan.RelOptUtil) SqlSingleValueAggFunction(org.apache.calcite.sql.fun.SqlSingleValueAggFunction) HashSet(java.util.HashSet) ImmutableList(com.google.common.collect.ImmutableList) LogicalSnapshot(org.apache.calcite.rel.logical.LogicalSnapshot) Pair(org.apache.calcite.util.Pair) RelBuilderFactory(org.apache.calcite.tools.RelBuilderFactory) SqlOperator(org.apache.calcite.sql.SqlOperator) Nonnull(javax.annotation.Nonnull) Logger(org.slf4j.Logger) LogicalProject(org.apache.calcite.rel.logical.LogicalProject) RexBuilder(org.apache.calcite.rex.RexBuilder) RexSubQuery(org.apache.calcite.rex.RexSubQuery) HepPlanner(org.apache.calcite.plan.hep.HepPlanner) RelNode(org.apache.calcite.rel.RelNode) RelOptRuleCall(org.apache.calcite.plan.RelOptRuleCall) ReflectUtil(org.apache.calcite.util.ReflectUtil) CoreRules(org.apache.calcite.rel.rules.CoreRules) FilterCorrelateRule(org.apache.calcite.rel.rules.FilterCorrelateRule) RexShuttle(org.apache.calcite.rex.RexShuttle) Util(org.apache.calcite.util.Util) Collections(java.util.Collections) HepProgram(org.apache.calcite.plan.hep.HepProgram) RelNode(org.apache.calcite.rel.RelNode) Join(org.apache.calcite.rel.core.Join) LogicalJoin(org.apache.calcite.rel.logical.LogicalJoin) FilterJoinRule(org.apache.calcite.rel.rules.FilterJoinRule) HepPlanner(org.apache.calcite.plan.hep.HepPlanner)

Aggregations

Filter (org.apache.calcite.rel.core.Filter)67 RexNode (org.apache.calcite.rex.RexNode)38 RelNode (org.apache.calcite.rel.RelNode)35 Project (org.apache.calcite.rel.core.Project)23 ArrayList (java.util.ArrayList)20 RexBuilder (org.apache.calcite.rex.RexBuilder)17 Aggregate (org.apache.calcite.rel.core.Aggregate)15 RelBuilder (org.apache.calcite.tools.RelBuilder)15 Join (org.apache.calcite.rel.core.Join)13 TableScan (org.apache.calcite.rel.core.TableScan)11 List (java.util.List)10 Sort (org.apache.calcite.rel.core.Sort)10 RelOptUtil (org.apache.calcite.plan.RelOptUtil)8 ImmutableList (com.google.common.collect.ImmutableList)7 Collectors (java.util.stream.Collectors)7 LogicalFilter (org.apache.calcite.rel.logical.LogicalFilter)7 RelDataType (org.apache.calcite.rel.type.RelDataType)7 RexInputRef (org.apache.calcite.rex.RexInputRef)7 RexUtil (org.apache.calcite.rex.RexUtil)7 ImmutableBitSet (org.apache.calcite.util.ImmutableBitSet)7