Java Code Examples for org.apache.calcite.plan.RelOptPredicateList#EMPTY
The following examples show how to use
org.apache.calcite.plan.RelOptPredicateList#EMPTY .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: RelMdPredicates.java From calcite with Apache License 2.0 | 6 votes |
/** * Infers predicates for a {@link org.apache.calcite.rel.core.Join} (including * {@code SemiJoin}). */ public RelOptPredicateList getPredicates(Join join, RelMetadataQuery mq) { RelOptCluster cluster = join.getCluster(); RexBuilder rexBuilder = cluster.getRexBuilder(); final RexExecutor executor = Util.first(cluster.getPlanner().getExecutor(), RexUtil.EXECUTOR); final RelNode left = join.getInput(0); final RelNode right = join.getInput(1); final RelOptPredicateList leftInfo = mq.getPulledUpPredicates(left); final RelOptPredicateList rightInfo = mq.getPulledUpPredicates(right); JoinConditionBasedPredicateInference joinInference = new JoinConditionBasedPredicateInference(join, RexUtil.composeConjunction(rexBuilder, leftInfo.pulledUpPredicates), RexUtil.composeConjunction(rexBuilder, rightInfo.pulledUpPredicates), new RexSimplify(rexBuilder, RelOptPredicateList.EMPTY, executor)); return joinInference.inferPredicates(false); }
Example 2
Source File: RelMdPredicates.java From Bats with Apache License 2.0 | 6 votes |
/** @see RelMetadataQuery#getPulledUpPredicates(RelNode) */ public RelOptPredicateList getPredicates(RelSubset r, RelMetadataQuery mq) { if (!Bug.CALCITE_1048_FIXED) { return RelOptPredicateList.EMPTY; } final RexBuilder rexBuilder = r.getCluster().getRexBuilder(); RelOptPredicateList list = null; for (RelNode r2 : r.getRels()) { RelOptPredicateList list2 = mq.getPulledUpPredicates(r2); if (list2 != null) { list = list == null ? list2 : list.union(rexBuilder, list2); } } return Util.first(list, RelOptPredicateList.EMPTY); }
Example 3
Source File: RelMdPredicates.java From calcite with Apache License 2.0 | 5 votes |
/** * Infers predicates for an Aggregate. * * <p>Pulls up predicates that only contains references to columns in the * GroupSet. For e.g. * * <blockquote><pre> * inputPullUpExprs : { a > 7, b + c < 10, a + e = 9} * groupSet : { a, b} * pulledUpExprs : { a > 7} * </pre></blockquote> */ public RelOptPredicateList getPredicates(Aggregate agg, RelMetadataQuery mq) { final RelNode input = agg.getInput(); final RexBuilder rexBuilder = agg.getCluster().getRexBuilder(); final RelOptPredicateList inputInfo = mq.getPulledUpPredicates(input); final List<RexNode> aggPullUpPredicates = new ArrayList<>(); ImmutableBitSet groupKeys = agg.getGroupSet(); if (groupKeys.isEmpty()) { // "GROUP BY ()" can convert an empty relation to a non-empty relation, so // it is not valid to pull up predicates. In particular, consider the // predicate "false": it is valid on all input rows (trivially - there are // no rows!) but not on the output (there is one row). return RelOptPredicateList.EMPTY; } Mapping m = Mappings.create(MappingType.PARTIAL_FUNCTION, input.getRowType().getFieldCount(), agg.getRowType().getFieldCount()); int i = 0; for (int j : groupKeys) { m.set(j, i++); } for (RexNode r : inputInfo.pulledUpPredicates) { ImmutableBitSet rCols = RelOptUtil.InputFinder.bits(r); if (groupKeys.contains(rCols)) { r = r.accept(new RexPermuteInputsShuttle(m, input)); aggPullUpPredicates.add(r); } } return RelOptPredicateList.of(rexBuilder, aggPullUpPredicates); }
Example 4
Source File: RelMdPredicates.java From Bats with Apache License 2.0 | 5 votes |
/** * Infers predicates for an Aggregate. * * <p>Pulls up predicates that only contains references to columns in the * GroupSet. For e.g. * * <blockquote><pre> * inputPullUpExprs : { a > 7, b + c < 10, a + e = 9} * groupSet : { a, b} * pulledUpExprs : { a > 7} * </pre></blockquote> */ public RelOptPredicateList getPredicates(Aggregate agg, RelMetadataQuery mq) { final RelNode input = agg.getInput(); final RexBuilder rexBuilder = agg.getCluster().getRexBuilder(); final RelOptPredicateList inputInfo = mq.getPulledUpPredicates(input); final List<RexNode> aggPullUpPredicates = new ArrayList<>(); ImmutableBitSet groupKeys = agg.getGroupSet(); if (groupKeys.isEmpty()) { // "GROUP BY ()" can convert an empty relation to a non-empty relation, so // it is not valid to pull up predicates. In particular, consider the // predicate "false": it is valid on all input rows (trivially - there are // no rows!) but not on the output (there is one row). return RelOptPredicateList.EMPTY; } Mapping m = Mappings.create(MappingType.PARTIAL_FUNCTION, input.getRowType().getFieldCount(), agg.getRowType().getFieldCount()); int i = 0; for (int j : groupKeys) { m.set(j, i++); } for (RexNode r : inputInfo.pulledUpPredicates) { ImmutableBitSet rCols = RelOptUtil.InputFinder.bits(r); if (groupKeys.contains(rCols)) { r = r.accept(new RexPermuteInputsShuttle(m, input)); aggPullUpPredicates.add(r); } } return RelOptPredicateList.of(rexBuilder, aggPullUpPredicates); }
Example 5
Source File: FilterProjectTransposeRule.java From Bats with Apache License 2.0 | 5 votes |
/** * Simplifies the filter condition using a simplifier created by the * information in the current call. * * <p>This method is an attempt to replicate the simplification behavior of * {@link RelBuilder#filter(RexNode...)} which cannot be used in the case of * copying nodes. The main difference with the behavior of that method is that * it does not drop entirely the filter if the condition is always false. */ private RexNode simplifyFilterCondition(RexNode condition, RelOptRuleCall call) { final RexBuilder xBuilder = call.builder().getRexBuilder(); final RexExecutor executor = Util.first(call.getPlanner().getContext().unwrap(RexExecutor.class), Util.first(call.getPlanner().getExecutor(), RexUtil.EXECUTOR)); // unknownAsFalse => true since in the WHERE clause: // 1>null evaluates to unknown and WHERE unknown behaves exactly like WHERE false RexSimplify simplifier = new RexSimplify(xBuilder, RelOptPredicateList.EMPTY, executor); return RexUtil.removeNullabilityCast( xBuilder.getTypeFactory(), simplifier.simplifyUnknownAsFalse(condition)); }
Example 6
Source File: RelBuilder.java From Bats with Apache License 2.0 | 5 votes |
protected RelBuilder(Context context, RelOptCluster cluster, RelOptSchema relOptSchema) { this.cluster = cluster; this.relOptSchema = relOptSchema; if (context == null) { context = Contexts.EMPTY_CONTEXT; } this.simplify = Hook.REL_BUILDER_SIMPLIFY.get(true); this.aggregateFactory = Util.first(context.unwrap(RelFactories.AggregateFactory.class), RelFactories.DEFAULT_AGGREGATE_FACTORY); this.filterFactory = Util.first(context.unwrap(RelFactories.FilterFactory.class), RelFactories.DEFAULT_FILTER_FACTORY); this.projectFactory = Util.first(context.unwrap(RelFactories.ProjectFactory.class), RelFactories.DEFAULT_PROJECT_FACTORY); this.sortFactory = Util.first(context.unwrap(RelFactories.SortFactory.class), RelFactories.DEFAULT_SORT_FACTORY); this.exchangeFactory = Util.first(context.unwrap(RelFactories.ExchangeFactory.class), RelFactories.DEFAULT_EXCHANGE_FACTORY); this.sortExchangeFactory = Util.first(context.unwrap(RelFactories.SortExchangeFactory.class), RelFactories.DEFAULT_SORT_EXCHANGE_FACTORY); this.setOpFactory = Util.first(context.unwrap(RelFactories.SetOpFactory.class), RelFactories.DEFAULT_SET_OP_FACTORY); this.joinFactory = Util.first(context.unwrap(RelFactories.JoinFactory.class), RelFactories.DEFAULT_JOIN_FACTORY); this.semiJoinFactory = Util.first(context.unwrap(RelFactories.SemiJoinFactory.class), RelFactories.DEFAULT_SEMI_JOIN_FACTORY); this.correlateFactory = Util.first(context.unwrap(RelFactories.CorrelateFactory.class), RelFactories.DEFAULT_CORRELATE_FACTORY); this.valuesFactory = Util.first(context.unwrap(RelFactories.ValuesFactory.class), RelFactories.DEFAULT_VALUES_FACTORY); this.scanFactory = Util.first(context.unwrap(RelFactories.TableScanFactory.class), RelFactories.DEFAULT_TABLE_SCAN_FACTORY); this.snapshotFactory = Util.first(context.unwrap(RelFactories.SnapshotFactory.class), RelFactories.DEFAULT_SNAPSHOT_FACTORY); this.matchFactory = Util.first(context.unwrap(RelFactories.MatchFactory.class), RelFactories.DEFAULT_MATCH_FACTORY); final RexExecutor executor = Util.first(context.unwrap(RexExecutor.class), Util.first(cluster.getPlanner().getExecutor(), RexUtil.EXECUTOR)); final RelOptPredicateList predicates = RelOptPredicateList.EMPTY; this.simplifier = new RexSimplify(cluster.getRexBuilder(), predicates, executor); }
Example 7
Source File: RexProgramBuilder.java From Bats with Apache License 2.0 | 5 votes |
@Deprecated // to be removed before 2.0 public static RexProgramBuilder create(RexBuilder rexBuilder, final RelDataType inputRowType, final List<RexNode> exprList, final List<? extends RexNode> projectList, final RexNode condition, final RelDataType outputRowType, boolean normalize, boolean simplify_) { RexSimplify simplify = null; if (simplify_) { simplify = new RexSimplify(rexBuilder, RelOptPredicateList.EMPTY, RexUtil.EXECUTOR); } return new RexProgramBuilder(rexBuilder, inputRowType, exprList, projectList, condition, outputRowType, normalize, simplify); }
Example 8
Source File: RexProgramBuilder.java From Bats with Apache License 2.0 | 5 votes |
/** * Registers an expression in the list of common sub-expressions, and * returns a reference to that expression. * * <p>If an equivalent sub-expression already exists, creates another * expression only if <code>force</code> is true. * * @param expr Expression to register * @param force Whether to create a new sub-expression if an equivalent * sub-expression exists. */ private RexLocalRef registerInternal(RexNode expr, boolean force) { final RexSimplify simplify = new RexSimplify(rexBuilder, RelOptPredicateList.EMPTY, RexUtil.EXECUTOR); expr = simplify.simplifyPreservingType(expr); RexLocalRef ref; final Pair<RexNode, String> key; if (expr instanceof RexLocalRef) { key = null; ref = (RexLocalRef) expr; } else { key = RexUtil.makeKey(expr); ref = exprMap.get(key); } if (ref == null) { if (validating) { validate(expr, exprList.size()); } // Add expression to list, and return a new reference to it. ref = addExpr(expr); exprMap.put(key, ref); } else { if (force) { // Add expression to list, but return the previous ref. addExpr(expr); } } for (;;) { int index = ref.getIndex(); final RexNode expr2 = exprList.get(index); if (expr2 instanceof RexLocalRef) { ref = (RexLocalRef) expr2; } else { return ref; } } }
Example 9
Source File: RexProgramBuilder.java From calcite with Apache License 2.0 | 4 votes |
/** * Registers an expression in the list of common sub-expressions, and * returns a reference to that expression. * * <p>If an equivalent sub-expression already exists, creates another * expression only if <code>force</code> is true. * * @param expr Expression to register * @param force Whether to create a new sub-expression if an equivalent * sub-expression exists. */ private RexLocalRef registerInternal(RexNode expr, boolean force) { final RexSimplify simplify = new RexSimplify(rexBuilder, RelOptPredicateList.EMPTY, RexUtil.EXECUTOR); expr = simplify.simplifyPreservingType(expr); RexLocalRef ref; final Pair<RexNode, String> key; if (expr instanceof RexLocalRef) { key = null; ref = (RexLocalRef) expr; } else { key = RexUtil.makeKey(expr); ref = exprMap.get(key); } if (ref == null) { if (validating) { validate( expr, exprList.size()); } // Add expression to list, and return a new reference to it. ref = addExpr(expr); exprMap.put(key, ref); } else { if (force) { // Add expression to list, but return the previous ref. addExpr(expr); } } for (;;) { int index = ref.index; final RexNode expr2 = exprList.get(index); if (expr2 instanceof RexLocalRef) { ref = (RexLocalRef) expr2; } else { return ref; } } }
Example 10
Source File: RelMdPredicates.java From calcite with Apache License 2.0 | 4 votes |
/** * Infers predicates for a table scan. */ public RelOptPredicateList getPredicates(TableScan table, RelMetadataQuery mq) { return RelOptPredicateList.EMPTY; }
Example 11
Source File: RelMdAllPredicates.java From calcite with Apache License 2.0 | 4 votes |
/** * Extract predicates for a Union. */ public RelOptPredicateList getAllPredicates(Union union, RelMetadataQuery mq) { final RexBuilder rexBuilder = union.getCluster().getRexBuilder(); final Multimap<List<String>, RelTableRef> qualifiedNamesToRefs = HashMultimap.create(); RelOptPredicateList newPreds = RelOptPredicateList.EMPTY; for (int i = 0; i < union.getInputs().size(); i++) { final RelNode input = union.getInput(i); final RelOptPredicateList inputPreds = mq.getAllPredicates(input); if (inputPreds == null) { // Bail out return null; } // Gather table references final Set<RelTableRef> tableRefs = mq.getTableReferences(input); if (i == 0) { // Left input references remain unchanged for (RelTableRef leftRef : tableRefs) { qualifiedNamesToRefs.put(leftRef.getQualifiedName(), leftRef); } newPreds = newPreds.union(rexBuilder, inputPreds); } else { // Right input references might need to be updated if there are table name // clashes with left input final Map<RelTableRef, RelTableRef> currentTablesMapping = new HashMap<>(); for (RelTableRef rightRef : tableRefs) { int shift = 0; Collection<RelTableRef> lRefs = qualifiedNamesToRefs.get( rightRef.getQualifiedName()); if (lRefs != null) { shift = lRefs.size(); } currentTablesMapping.put(rightRef, RelTableRef.of(rightRef.getTable(), shift + rightRef.getEntityNumber())); } // Add to existing qualified names for (RelTableRef newRef : currentTablesMapping.values()) { qualifiedNamesToRefs.put(newRef.getQualifiedName(), newRef); } // Update preds final List<RexNode> updatedPreds = Lists.newArrayList( Iterables.transform(inputPreds.pulledUpPredicates, e -> RexUtil.swapTableReferences(rexBuilder, e, currentTablesMapping))); newPreds = newPreds.union(rexBuilder, RelOptPredicateList.of(rexBuilder, updatedPreds)); } } return newPreds; }
Example 12
Source File: RelMdAllPredicates.java From calcite with Apache License 2.0 | 4 votes |
/** * Add the Join condition to the list obtained from the input. */ public RelOptPredicateList getAllPredicates(Join join, RelMetadataQuery mq) { if (join.getJoinType().isOuterJoin()) { // We cannot map origin of this expression. return null; } final RexBuilder rexBuilder = join.getCluster().getRexBuilder(); final RexNode pred = join.getCondition(); final Multimap<List<String>, RelTableRef> qualifiedNamesToRefs = HashMultimap.create(); RelOptPredicateList newPreds = RelOptPredicateList.EMPTY; for (RelNode input : join.getInputs()) { final RelOptPredicateList inputPreds = mq.getAllPredicates(input); if (inputPreds == null) { // Bail out return null; } // Gather table references final Set<RelTableRef> tableRefs = mq.getTableReferences(input); if (input == join.getLeft()) { // Left input references remain unchanged for (RelTableRef leftRef : tableRefs) { qualifiedNamesToRefs.put(leftRef.getQualifiedName(), leftRef); } newPreds = newPreds.union(rexBuilder, inputPreds); } else { // Right input references might need to be updated if there are table name // clashes with left input final Map<RelTableRef, RelTableRef> currentTablesMapping = new HashMap<>(); for (RelTableRef rightRef : tableRefs) { int shift = 0; Collection<RelTableRef> lRefs = qualifiedNamesToRefs.get( rightRef.getQualifiedName()); if (lRefs != null) { shift = lRefs.size(); } currentTablesMapping.put(rightRef, RelTableRef.of(rightRef.getTable(), shift + rightRef.getEntityNumber())); } final List<RexNode> updatedPreds = Lists.newArrayList( Iterables.transform(inputPreds.pulledUpPredicates, e -> RexUtil.swapTableReferences(rexBuilder, e, currentTablesMapping))); newPreds = newPreds.union(rexBuilder, RelOptPredicateList.of(rexBuilder, updatedPreds)); } } // Extract input fields referenced by Join condition final Set<RelDataTypeField> inputExtraFields = new LinkedHashSet<>(); final RelOptUtil.InputFinder inputFinder = new RelOptUtil.InputFinder(inputExtraFields); pred.accept(inputFinder); final ImmutableBitSet inputFieldsUsed = inputFinder.build(); // Infer column origin expressions for given references final Map<RexInputRef, Set<RexNode>> mapping = new LinkedHashMap<>(); final RelDataType fullRowType = SqlValidatorUtil.createJoinType( rexBuilder.getTypeFactory(), join.getLeft().getRowType(), join.getRight().getRowType(), null, ImmutableList.of()); for (int idx : inputFieldsUsed) { final RexInputRef inputRef = RexInputRef.of(idx, fullRowType.getFieldList()); final Set<RexNode> originalExprs = mq.getExpressionLineage(join, inputRef); if (originalExprs == null) { // Bail out return null; } final RexInputRef ref = RexInputRef.of(idx, fullRowType.getFieldList()); mapping.put(ref, originalExprs); } // Replace with new expressions and return union of predicates final Set<RexNode> allExprs = RelMdExpressionLineage.createAllPossibleExpressions(rexBuilder, pred, mapping); if (allExprs == null) { return null; } return newPreds.union(rexBuilder, RelOptPredicateList.of(rexBuilder, allExprs)); }
Example 13
Source File: RelMdAllPredicates.java From calcite with Apache License 2.0 | 4 votes |
/** * Extract predicates for a table scan. */ public RelOptPredicateList getAllPredicates(TableScan table, RelMetadataQuery mq) { return RelOptPredicateList.EMPTY; }
Example 14
Source File: RexProgram.java From Bats with Apache License 2.0 | 4 votes |
@Deprecated // to be removed before 2.0 public RexProgram normalize(RexBuilder rexBuilder, boolean simplify) { final RelOptPredicateList predicates = RelOptPredicateList.EMPTY; return normalize(rexBuilder, simplify ? new RexSimplify(rexBuilder, predicates, RexUtil.EXECUTOR) : null); }
Example 15
Source File: RelMdAllPredicates.java From Bats with Apache License 2.0 | 4 votes |
/** * Extract predicates for a table scan. */ public RelOptPredicateList getAllPredicates(TableScan table, RelMetadataQuery mq) { return RelOptPredicateList.EMPTY; }
Example 16
Source File: RelMdPredicates.java From Bats with Apache License 2.0 | 4 votes |
/** * Infers predicates for a table scan. */ public RelOptPredicateList getPredicates(TableScan table, RelMetadataQuery mq) { return RelOptPredicateList.EMPTY; }
Example 17
Source File: RelMdAllPredicates.java From Bats with Apache License 2.0 | 4 votes |
/** * Extract predicates for a Union. */ public RelOptPredicateList getAllPredicates(Union union, RelMetadataQuery mq) { final RexBuilder rexBuilder = union.getCluster().getRexBuilder(); final Multimap<List<String>, RelTableRef> qualifiedNamesToRefs = HashMultimap.create(); RelOptPredicateList newPreds = RelOptPredicateList.EMPTY; for (int i = 0; i < union.getInputs().size(); i++) { final RelNode input = union.getInput(i); final RelOptPredicateList inputPreds = mq.getAllPredicates(input); if (inputPreds == null) { // Bail out return null; } // Gather table references final Set<RelTableRef> tableRefs = mq.getTableReferences(input); if (i == 0) { // Left input references remain unchanged for (RelTableRef leftRef : tableRefs) { qualifiedNamesToRefs.put(leftRef.getQualifiedName(), leftRef); } newPreds = newPreds.union(rexBuilder, inputPreds); } else { // Right input references might need to be updated if there are table name // clashes with left input final Map<RelTableRef, RelTableRef> currentTablesMapping = new HashMap<>(); for (RelTableRef rightRef : tableRefs) { int shift = 0; Collection<RelTableRef> lRefs = qualifiedNamesToRefs.get( rightRef.getQualifiedName()); if (lRefs != null) { shift = lRefs.size(); } currentTablesMapping.put(rightRef, RelTableRef.of(rightRef.getTable(), shift + rightRef.getEntityNumber())); } // Add to existing qualified names for (RelTableRef newRef : currentTablesMapping.values()) { qualifiedNamesToRefs.put(newRef.getQualifiedName(), newRef); } // Update preds final List<RexNode> updatedPreds = Lists.newArrayList( Iterables.transform(inputPreds.pulledUpPredicates, e -> RexUtil.swapTableReferences(rexBuilder, e, currentTablesMapping))); newPreds = newPreds.union(rexBuilder, RelOptPredicateList.of(rexBuilder, updatedPreds)); } } return newPreds; }
Example 18
Source File: RelMdAllPredicates.java From Bats with Apache License 2.0 | 4 votes |
/** * Add the Join condition to the list obtained from the input. */ public RelOptPredicateList getAllPredicates(Join join, RelMetadataQuery mq) { if (join.getJoinType() != JoinRelType.INNER) { // We cannot map origin of this expression. return null; } final RexBuilder rexBuilder = join.getCluster().getRexBuilder(); final RexNode pred = join.getCondition(); final Multimap<List<String>, RelTableRef> qualifiedNamesToRefs = HashMultimap.create(); RelOptPredicateList newPreds = RelOptPredicateList.EMPTY; for (RelNode input : join.getInputs()) { final RelOptPredicateList inputPreds = mq.getAllPredicates(input); if (inputPreds == null) { // Bail out return null; } // Gather table references final Set<RelTableRef> tableRefs = mq.getTableReferences(input); if (input == join.getLeft()) { // Left input references remain unchanged for (RelTableRef leftRef : tableRefs) { qualifiedNamesToRefs.put(leftRef.getQualifiedName(), leftRef); } newPreds = newPreds.union(rexBuilder, inputPreds); } else { // Right input references might need to be updated if there are table name // clashes with left input final Map<RelTableRef, RelTableRef> currentTablesMapping = new HashMap<>(); for (RelTableRef rightRef : tableRefs) { int shift = 0; Collection<RelTableRef> lRefs = qualifiedNamesToRefs.get( rightRef.getQualifiedName()); if (lRefs != null) { shift = lRefs.size(); } currentTablesMapping.put(rightRef, RelTableRef.of(rightRef.getTable(), shift + rightRef.getEntityNumber())); } final List<RexNode> updatedPreds = Lists.newArrayList( Iterables.transform(inputPreds.pulledUpPredicates, e -> RexUtil.swapTableReferences(rexBuilder, e, currentTablesMapping))); newPreds = newPreds.union(rexBuilder, RelOptPredicateList.of(rexBuilder, updatedPreds)); } } // Extract input fields referenced by Join condition final Set<RelDataTypeField> inputExtraFields = new LinkedHashSet<>(); final RelOptUtil.InputFinder inputFinder = new RelOptUtil.InputFinder(inputExtraFields); pred.accept(inputFinder); final ImmutableBitSet inputFieldsUsed = inputFinder.inputBitSet.build(); // Infer column origin expressions for given references final Map<RexInputRef, Set<RexNode>> mapping = new LinkedHashMap<>(); for (int idx : inputFieldsUsed) { final RexInputRef inputRef = RexInputRef.of(idx, join.getRowType().getFieldList()); final Set<RexNode> originalExprs = mq.getExpressionLineage(join, inputRef); if (originalExprs == null) { // Bail out return null; } final RexInputRef ref = RexInputRef.of(idx, join.getRowType().getFieldList()); mapping.put(ref, originalExprs); } // Replace with new expressions and return union of predicates final Set<RexNode> allExprs = RelMdExpressionLineage.createAllPossibleExpressions(rexBuilder, pred, mapping); if (allExprs == null) { return null; } return newPreds.union(rexBuilder, RelOptPredicateList.of(rexBuilder, allExprs)); }
Example 19
Source File: RelMdPredicates.java From Bats with Apache License 2.0 | 2 votes |
/** Catch-all implementation for * {@link BuiltInMetadata.Predicates#getPredicates()}, * invoked using reflection. * * @see org.apache.calcite.rel.metadata.RelMetadataQuery#getPulledUpPredicates(RelNode) */ public RelOptPredicateList getPredicates(RelNode rel, RelMetadataQuery mq) { return RelOptPredicateList.EMPTY; }
Example 20
Source File: RelMdPredicates.java From calcite with Apache License 2.0 | 2 votes |
/** Catch-all implementation for * {@link BuiltInMetadata.Predicates#getPredicates()}, * invoked using reflection. * * @see org.apache.calcite.rel.metadata.RelMetadataQuery#getPulledUpPredicates(RelNode) */ public RelOptPredicateList getPredicates(RelNode rel, RelMetadataQuery mq) { return RelOptPredicateList.EMPTY; }