org.apache.calcite.plan.RelOptUtil.splitFilters()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(3.8k)|赞(0)|评价(0)|浏览(65)

本文整理了Java中org.apache.calcite.plan.RelOptUtil.splitFilters方法的一些代码示例,展示了RelOptUtil.splitFilters的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。RelOptUtil.splitFilters方法的具体详情如下:
包路径:org.apache.calcite.plan.RelOptUtil
类名称:RelOptUtil
方法名:splitFilters

RelOptUtil.splitFilters介绍

[英]Splits a filter into two lists, depending on whether or not the filter only references its child input
[中]

代码示例

代码示例来源:origin: Qihoo360/Quicksql

public Double getSelectivity(Aggregate rel, RelMetadataQuery mq,
  RexNode predicate) {
 final List<RexNode> notPushable = new ArrayList<>();
 final List<RexNode> pushable = new ArrayList<>();
 RelOptUtil.splitFilters(
   rel.getGroupSet(),
   predicate,
   pushable,
   notPushable);
 final RexBuilder rexBuilder = rel.getCluster().getRexBuilder();
 RexNode childPred =
   RexUtil.composeConjunction(rexBuilder, pushable, true);
 Double selectivity = mq.getSelectivity(rel.getInput(), childPred);
 if (selectivity == null) {
  return null;
 } else {
  RexNode pred =
    RexUtil.composeConjunction(rexBuilder, notPushable, true);
  return selectivity * RelMdUtil.guessSelectivity(pred);
 }
}

代码示例来源:origin: org.apache.calcite/calcite-core

public Double getSelectivity(Aggregate rel, RelMetadataQuery mq,
  RexNode predicate) {
 final List<RexNode> notPushable = new ArrayList<>();
 final List<RexNode> pushable = new ArrayList<>();
 RelOptUtil.splitFilters(
   rel.getGroupSet(),
   predicate,
   pushable,
   notPushable);
 final RexBuilder rexBuilder = rel.getCluster().getRexBuilder();
 RexNode childPred =
   RexUtil.composeConjunction(rexBuilder, pushable, true);
 Double selectivity = mq.getSelectivity(rel.getInput(), childPred);
 if (selectivity == null) {
  return null;
 } else {
  RexNode pred =
    RexUtil.composeConjunction(rexBuilder, notPushable, true);
  return selectivity * RelMdUtil.guessSelectivity(pred);
 }
}

代码示例来源:origin: Qihoo360/Quicksql

RelOptUtil.splitFilters(
  rel.getGroupSet(),
  predicate,

代码示例来源:origin: Qihoo360/Quicksql

public Double getSelectivity(Project rel, RelMetadataQuery mq,
  RexNode predicate) {
 final List<RexNode> notPushable = new ArrayList<>();
 final List<RexNode> pushable = new ArrayList<>();
 RelOptUtil.splitFilters(
   ImmutableBitSet.range(rel.getRowType().getFieldCount()),
   predicate,
   pushable,
   notPushable);
 final RexBuilder rexBuilder = rel.getCluster().getRexBuilder();
 RexNode childPred =
   RexUtil.composeConjunction(rexBuilder, pushable, true);
 RexNode modifiedPred;
 if (childPred == null) {
  modifiedPred = null;
 } else {
  modifiedPred = RelOptUtil.pushPastProject(childPred, rel);
 }
 Double selectivity = mq.getSelectivity(rel.getInput(), modifiedPred);
 if (selectivity == null) {
  return null;
 } else {
  RexNode pred =
    RexUtil.composeConjunction(rexBuilder, notPushable, true);
  return selectivity * RelMdUtil.guessSelectivity(pred);
 }
}

代码示例来源:origin: org.apache.calcite/calcite-core

public Double getSelectivity(Project rel, RelMetadataQuery mq,
  RexNode predicate) {
 final List<RexNode> notPushable = new ArrayList<>();
 final List<RexNode> pushable = new ArrayList<>();
 RelOptUtil.splitFilters(
   ImmutableBitSet.range(rel.getRowType().getFieldCount()),
   predicate,
   pushable,
   notPushable);
 final RexBuilder rexBuilder = rel.getCluster().getRexBuilder();
 RexNode childPred =
   RexUtil.composeConjunction(rexBuilder, pushable, true);
 RexNode modifiedPred;
 if (childPred == null) {
  modifiedPred = null;
 } else {
  modifiedPred = RelOptUtil.pushPastProject(childPred, rel);
 }
 Double selectivity = mq.getSelectivity(rel.getInput(), modifiedPred);
 if (selectivity == null) {
  return null;
 } else {
  RexNode pred =
    RexUtil.composeConjunction(rexBuilder, notPushable, true);
  return selectivity * RelMdUtil.guessSelectivity(pred);
 }
}

代码示例来源:origin: org.apache.calcite/calcite-core

RelOptUtil.splitFilters(
  rel.getGroupSet(),
  predicate,

代码示例来源:origin: org.apache.calcite/calcite-core

RelOptUtil.splitFilters(
  ImmutableBitSet.range(rel.getRowType().getFieldCount()),
  predicate,

代码示例来源:origin: Qihoo360/Quicksql

RelOptUtil.splitFilters(
  ImmutableBitSet.range(rel.getRowType().getFieldCount()),
  predicate,

相关文章

微信公众号

最新文章

更多

RelOptUtil类方法