test_class.declarator: relBuilder
test_class.modifier: private
test_class.original_string: private RelBuilder relBuilder;
test_class.type: RelBuilder
test_class.var_name: relBuilder
test_class.declarator: empScan
test_class.modifier: private
test_class.original_string: private RelNode empScan;
test_class.type: RelNode
test_class.var_name: empScan
test_class.declarator: deptScan
test_class.modifier: private
test_class.original_string: private RelNode deptScan;
test_class.type: RelNode
test_class.var_name: deptScan
test_class.declarator: empRow
test_class.modifier: private
test_class.original_string: private RelDataType empRow;
test_class.type: RelDataType
test_class.var_name: empRow
test_class.declarator: deptRow
test_class.modifier: private
test_class.original_string: private RelDataType deptRow;
test_class.type: RelDataType
test_class.var_name: deptRow
test_class.declarator: empDeptJoinRelFields
test_class.modifier: private
test_class.original_string: private List<RelDataTypeField> empDeptJoinRelFields;
test_class.type: List<RelDataTypeField>
test_class.var_name: empDeptJoinRelFields
test_class.file: parser/src/test/java/com/qihoo/qsql/org/apache/calcite/plan/RelOptUtilTest.java
test_class.identifier: RelOptUtilTest
test_case.body: @Test public void testPushDownJoinConditions() {
      int leftJoinIndex = empScan.getRowType().getFieldNames().indexOf("DEPTNO");
      int rightJoinIndex = deptRow.getFieldNames().indexOf("DEPTNO");
  
      RexInputRef leftKeyInputRef = RexInputRef.of(leftJoinIndex, empDeptJoinRelFields);
      RexInputRef rightKeyInputRef =
          RexInputRef.of(empRow.getFieldCount() + rightJoinIndex, empDeptJoinRelFields);
      RexNode joinCond = relBuilder.call(SqlStdOperatorTable.EQUALS,
          relBuilder.call(SqlStdOperatorTable.PLUS, leftKeyInputRef, relBuilder.literal(1)),
          rightKeyInputRef);
  
  
      // Build the join operator and push down join conditions
      relBuilder.push(empScan);
      relBuilder.push(deptScan);
      relBuilder.join(JoinRelType.INNER, joinCond);
      Join join = (Join) relBuilder.build();
      RelNode transformed = RelOptUtil.pushDownJoinConditions(join, relBuilder);
  
      // Assert the new join operator
      assertThat(transformed.getRowType(), is(join.getRowType()));
      assertThat(transformed, is(instanceOf(Project.class)));
      RelNode transformedInput = transformed.getInput(0);
      assertThat(transformedInput, is(instanceOf(Join.class)));
      Join newJoin = (Join) transformedInput;
      assertThat(newJoin.getCondition().toString(),
          is(
              relBuilder.call(
                  SqlStdOperatorTable.EQUALS,
                  // Computed field is added at the end (and index start at 0)
                  RexInputRef.of(empRow.getFieldCount(), join.getRowType()),
                  // Right side is shifted by 1
                  RexInputRef.of(empRow.getFieldCount() + 1 + rightJoinIndex, join.getRowType()))
              .toString()));
      assertThat(newJoin.getLeft(), is(instanceOf(Project.class)));
      Project leftInput = (Project) newJoin.getLeft();
      assertThat(leftInput.getChildExps().get(empRow.getFieldCount()).toString(),
          is(relBuilder.call(SqlStdOperatorTable.PLUS, leftKeyInputRef, relBuilder.literal(1))
              .toString()));
    }
test_case.class_method_signature: RelOptUtilTest.testPushDownJoinConditions()
test_case.full_signature: @Test public void testPushDownJoinConditions()
test_case.identifier: testPushDownJoinConditions
test_case.invocations: indexOf getFieldNames getRowType indexOf getFieldNames of of getFieldCount call call literal push push join build pushDownJoinConditions assertThat getRowType is getRowType assertThat is instanceOf getInput assertThat is instanceOf assertThat toString getCondition is toString call of getFieldCount getRowType of getFieldCount getRowType assertThat getLeft is instanceOf getLeft assertThat toString get getChildExps getFieldCount is toString call literal
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testPushDownJoinConditions()
focal_class.declarator: B = false
focal_class.modifier: static final
focal_class.original_string: static final boolean B = false;
focal_class.type: boolean
focal_class.var_name: B
focal_class.declarator: EPSILON = 1.0e-5
focal_class.modifier: public static final
focal_class.original_string: public static final double EPSILON = 1.0e-5;
focal_class.type: double
focal_class.var_name: EPSILON
focal_class.declarator: FILTER_PREDICATE =
          RelOptUtil::containsMultisetOrWindowedAgg
focal_class.modifier: @SuppressWarnings("Guava")
      @Deprecated // to be removed before 2.0
      public static final
focal_class.original_string: @SuppressWarnings("Guava")
      @Deprecated // to be removed before 2.0
      public static final com.google.common.base.Predicate<Filter>
          FILTER_PREDICATE =
          RelOptUtil::containsMultisetOrWindowedAgg;
focal_class.type: com.google.common.base.Predicate<Filter>
focal_class.var_name: FILTER_PREDICATE
focal_class.declarator: PROJECT_PREDICATE =
          RelOptUtil::containsMultisetOrWindowedAgg
focal_class.modifier: @SuppressWarnings("Guava")
      @Deprecated // to be removed before 2.0
      public static final
focal_class.original_string: @SuppressWarnings("Guava")
      @Deprecated // to be removed before 2.0
      public static final com.google.common.base.Predicate<Project>
          PROJECT_PREDICATE =
          RelOptUtil::containsMultisetOrWindowedAgg;
focal_class.type: com.google.common.base.Predicate<Project>
focal_class.var_name: PROJECT_PREDICATE
focal_class.declarator: CALC_PREDICATE =
          RelOptUtil::containsMultisetOrWindowedAgg
focal_class.modifier: @SuppressWarnings("Guava")
      @Deprecated // to be removed before 2.0
      public static final
focal_class.original_string: @SuppressWarnings("Guava")
      @Deprecated // to be removed before 2.0
      public static final com.google.common.base.Predicate<Calc> CALC_PREDICATE =
          RelOptUtil::containsMultisetOrWindowedAgg;
focal_class.type: com.google.common.base.Predicate<Calc>
focal_class.var_name: CALC_PREDICATE
focal_class.file: parser/src/main/java/com/qihoo/qsql/org/apache/calcite/plan/RelOptUtil.java
focal_class.identifier: RelOptUtil
focal_class.class_method_signature: RelOptUtil.isPureLimit(RelNode rel)
focal_class.full_signature: public static boolean isPureLimit(RelNode rel)
focal_class.identifier: isPureLimit
focal_class.modifiers: public static
focal_class.parameters: (RelNode rel)
focal_class.return: boolean
focal_class.signature: boolean isPureLimit(RelNode rel)
focal_class.class_method_signature: RelOptUtil.isPureOrder(RelNode rel)
focal_class.full_signature: public static boolean isPureOrder(RelNode rel)
focal_class.identifier: isPureOrder
focal_class.modifiers: public static
focal_class.parameters: (RelNode rel)
focal_class.return: boolean
focal_class.signature: boolean isPureOrder(RelNode rel)
focal_class.class_method_signature: RelOptUtil.isLimit(RelNode rel)
focal_class.full_signature: public static boolean isLimit(RelNode rel)
focal_class.identifier: isLimit
focal_class.modifiers: public static
focal_class.parameters: (RelNode rel)
focal_class.return: boolean
focal_class.signature: boolean isLimit(RelNode rel)
focal_class.class_method_signature: RelOptUtil.isOrder(RelNode rel)
focal_class.full_signature: public static boolean isOrder(RelNode rel)
focal_class.identifier: isOrder
focal_class.modifiers: public static
focal_class.parameters: (RelNode rel)
focal_class.return: boolean
focal_class.signature: boolean isOrder(RelNode rel)
focal_class.class_method_signature: RelOptUtil.findTables(RelNode rel)
focal_class.full_signature: public static Set<RelOptTable> findTables(RelNode rel)
focal_class.identifier: findTables
focal_class.modifiers: public static
focal_class.parameters: (RelNode rel)
focal_class.return: Set<RelOptTable>
focal_class.signature: Set<RelOptTable> findTables(RelNode rel)
focal_class.class_method_signature: RelOptUtil.findAllTables(RelNode rel)
focal_class.full_signature: public static List<RelOptTable> findAllTables(RelNode rel)
focal_class.identifier: findAllTables
focal_class.modifiers: public static
focal_class.parameters: (RelNode rel)
focal_class.return: List<RelOptTable>
focal_class.signature: List<RelOptTable> findAllTables(RelNode rel)
focal_class.class_method_signature: RelOptUtil.findAllTableQualifiedNames(RelNode rel)
focal_class.full_signature: public static List<String> findAllTableQualifiedNames(RelNode rel)
focal_class.identifier: findAllTableQualifiedNames
focal_class.modifiers: public static
focal_class.parameters: (RelNode rel)
focal_class.return: List<String>
focal_class.signature: List<String> findAllTableQualifiedNames(RelNode rel)
focal_class.class_method_signature: RelOptUtil.getVariablesSet(RelNode rel)
focal_class.full_signature: public static Set<CorrelationId> getVariablesSet(RelNode rel)
focal_class.identifier: getVariablesSet
focal_class.modifiers: public static
focal_class.parameters: (RelNode rel)
focal_class.return: Set<CorrelationId>
focal_class.signature: Set<CorrelationId> getVariablesSet(RelNode rel)
focal_class.class_method_signature: RelOptUtil.getVariablesSetAndUsed(RelNode rel0,
          RelNode rel1)
focal_class.full_signature: @Deprecated // to be removed before 2.0 public static List<CorrelationId> getVariablesSetAndUsed(RelNode rel0,
          RelNode rel1)
focal_class.identifier: getVariablesSetAndUsed
focal_class.modifiers: @Deprecated // to be removed before 2.0 public static
focal_class.parameters: (RelNode rel0,
          RelNode rel1)
focal_class.return: List<CorrelationId>
focal_class.signature: List<CorrelationId> getVariablesSetAndUsed(RelNode rel0,
          RelNode rel1)
focal_class.class_method_signature: RelOptUtil.getVariablesUsed(RelNode rel)
focal_class.full_signature: public static Set<CorrelationId> getVariablesUsed(RelNode rel)
focal_class.identifier: getVariablesUsed
focal_class.modifiers: public static
focal_class.parameters: (RelNode rel)
focal_class.return: Set<CorrelationId>
focal_class.signature: Set<CorrelationId> getVariablesUsed(RelNode rel)
focal_class.class_method_signature: RelOptUtil.correlationColumns(CorrelationId id,
          RelNode rel)
focal_class.full_signature: public static ImmutableBitSet correlationColumns(CorrelationId id,
          RelNode rel)
focal_class.identifier: correlationColumns
focal_class.modifiers: public static
focal_class.parameters: (CorrelationId id,
          RelNode rel)
focal_class.return: ImmutableBitSet
focal_class.signature: ImmutableBitSet correlationColumns(CorrelationId id,
          RelNode rel)
focal_class.class_method_signature: RelOptUtil.notContainsCorrelation(RelNode r,
          CorrelationId correlationId, Litmus litmus)
focal_class.full_signature: public static boolean notContainsCorrelation(RelNode r,
          CorrelationId correlationId, Litmus litmus)
focal_class.identifier: notContainsCorrelation
focal_class.modifiers: public static
focal_class.parameters: (RelNode r,
          CorrelationId correlationId, Litmus litmus)
focal_class.return: boolean
focal_class.signature: boolean notContainsCorrelation(RelNode r,
          CorrelationId correlationId, Litmus litmus)
focal_class.class_method_signature: RelOptUtil.go(
          RelVisitor visitor,
          RelNode p)
focal_class.full_signature: public static void go(
          RelVisitor visitor,
          RelNode p)
focal_class.identifier: go
focal_class.modifiers: public static
focal_class.parameters: (
          RelVisitor visitor,
          RelNode p)
focal_class.return: void
focal_class.signature: void go(
          RelVisitor visitor,
          RelNode p)
focal_class.class_method_signature: RelOptUtil.getFieldTypeList(final RelDataType type)
focal_class.full_signature: public static List<RelDataType> getFieldTypeList(final RelDataType type)
focal_class.identifier: getFieldTypeList
focal_class.modifiers: public static
focal_class.parameters: (final RelDataType type)
focal_class.return: List<RelDataType>
focal_class.signature: List<RelDataType> getFieldTypeList(final RelDataType type)
focal_class.class_method_signature: RelOptUtil.areRowTypesEqual(
          RelDataType rowType1,
          RelDataType rowType2,
          boolean compareNames)
focal_class.full_signature: public static boolean areRowTypesEqual(
          RelDataType rowType1,
          RelDataType rowType2,
          boolean compareNames)
focal_class.identifier: areRowTypesEqual
focal_class.modifiers: public static
focal_class.parameters: (
          RelDataType rowType1,
          RelDataType rowType2,
          boolean compareNames)
focal_class.return: boolean
focal_class.signature: boolean areRowTypesEqual(
          RelDataType rowType1,
          RelDataType rowType2,
          boolean compareNames)
focal_class.class_method_signature: RelOptUtil.verifyTypeEquivalence(
          RelNode originalRel,
          RelNode newRel,
          Object equivalenceClass)
focal_class.full_signature: public static void verifyTypeEquivalence(
          RelNode originalRel,
          RelNode newRel,
          Object equivalenceClass)
focal_class.identifier: verifyTypeEquivalence
focal_class.modifiers: public static
focal_class.parameters: (
          RelNode originalRel,
          RelNode newRel,
          Object equivalenceClass)
focal_class.return: void
focal_class.signature: void verifyTypeEquivalence(
          RelNode originalRel,
          RelNode newRel,
          Object equivalenceClass)
focal_class.class_method_signature: RelOptUtil.permutationIgnoreCast(
          List<RexNode> nodes,
          RelDataType inputRowType)
focal_class.full_signature: public static Mappings.TargetMapping permutationIgnoreCast(
          List<RexNode> nodes,
          RelDataType inputRowType)
focal_class.identifier: permutationIgnoreCast
focal_class.modifiers: public static
focal_class.parameters: (
          List<RexNode> nodes,
          RelDataType inputRowType)
focal_class.return: Mappings.TargetMapping
focal_class.signature: Mappings.TargetMapping permutationIgnoreCast(
          List<RexNode> nodes,
          RelDataType inputRowType)
focal_class.class_method_signature: RelOptUtil.permutation(
          List<RexNode> nodes,
          RelDataType inputRowType)
focal_class.full_signature: public static Mappings.TargetMapping permutation(
          List<RexNode> nodes,
          RelDataType inputRowType)
focal_class.identifier: permutation
focal_class.modifiers: public static
focal_class.parameters: (
          List<RexNode> nodes,
          RelDataType inputRowType)
focal_class.return: Mappings.TargetMapping
focal_class.signature: Mappings.TargetMapping permutation(
          List<RexNode> nodes,
          RelDataType inputRowType)
focal_class.class_method_signature: RelOptUtil.createExistsPlan(
          RelOptCluster cluster,
          RelNode seekRel,
          List<RexNode> conditions,
          RexLiteral extraExpr,
          String extraName)
focal_class.full_signature: @Deprecated // to be removed before 2.0 public static RelNode createExistsPlan(
          RelOptCluster cluster,
          RelNode seekRel,
          List<RexNode> conditions,
          RexLiteral extraExpr,
          String extraName)
focal_class.identifier: createExistsPlan
focal_class.modifiers: @Deprecated // to be removed before 2.0 public static
focal_class.parameters: (
          RelOptCluster cluster,
          RelNode seekRel,
          List<RexNode> conditions,
          RexLiteral extraExpr,
          String extraName)
focal_class.return: RelNode
focal_class.signature: RelNode createExistsPlan(
          RelOptCluster cluster,
          RelNode seekRel,
          List<RexNode> conditions,
          RexLiteral extraExpr,
          String extraName)
focal_class.class_method_signature: RelOptUtil.createExistsPlan(
          RelNode seekRel,
          SubQueryType subQueryType,
          Logic logic,
          boolean notIn)
focal_class.full_signature: @Deprecated // to be removed before 2.0 public static Exists createExistsPlan(
          RelNode seekRel,
          SubQueryType subQueryType,
          Logic logic,
          boolean notIn)
focal_class.identifier: createExistsPlan
focal_class.modifiers: @Deprecated // to be removed before 2.0 public static
focal_class.parameters: (
          RelNode seekRel,
          SubQueryType subQueryType,
          Logic logic,
          boolean notIn)
focal_class.return: Exists
focal_class.signature: Exists createExistsPlan(
          RelNode seekRel,
          SubQueryType subQueryType,
          Logic logic,
          boolean notIn)
focal_class.class_method_signature: RelOptUtil.createExistsPlan(
          RelNode seekRel,
          SubQueryType subQueryType,
          Logic logic,
          boolean notIn,
          RelBuilder relBuilder)
focal_class.full_signature: public static Exists createExistsPlan(
          RelNode seekRel,
          SubQueryType subQueryType,
          Logic logic,
          boolean notIn,
          RelBuilder relBuilder)
focal_class.identifier: createExistsPlan
focal_class.modifiers: public static
focal_class.parameters: (
          RelNode seekRel,
          SubQueryType subQueryType,
          Logic logic,
          boolean notIn,
          RelBuilder relBuilder)
focal_class.return: Exists
focal_class.signature: Exists createExistsPlan(
          RelNode seekRel,
          SubQueryType subQueryType,
          Logic logic,
          boolean notIn,
          RelBuilder relBuilder)
focal_class.class_method_signature: RelOptUtil.createRenameRel(
          RelDataType outputType,
          RelNode rel)
focal_class.full_signature: @Deprecated // to be removed before 2.0 public static RelNode createRenameRel(
          RelDataType outputType,
          RelNode rel)
focal_class.identifier: createRenameRel
focal_class.modifiers: @Deprecated // to be removed before 2.0 public static
focal_class.parameters: (
          RelDataType outputType,
          RelNode rel)
focal_class.return: RelNode
focal_class.signature: RelNode createRenameRel(
          RelDataType outputType,
          RelNode rel)
focal_class.class_method_signature: RelOptUtil.createFilter(RelNode child, RexNode condition)
focal_class.full_signature: @Deprecated // to be removed before 2.0 public static RelNode createFilter(RelNode child, RexNode condition)
focal_class.identifier: createFilter
focal_class.modifiers: @Deprecated // to be removed before 2.0 public static
focal_class.parameters: (RelNode child, RexNode condition)
focal_class.return: RelNode
focal_class.signature: RelNode createFilter(RelNode child, RexNode condition)
focal_class.class_method_signature: RelOptUtil.createFilter(RelNode child, RexNode condition,
          RelFactories.FilterFactory filterFactory)
focal_class.full_signature: @Deprecated // to be removed before 2.0 public static RelNode createFilter(RelNode child, RexNode condition,
          RelFactories.FilterFactory filterFactory)
focal_class.identifier: createFilter
focal_class.modifiers: @Deprecated // to be removed before 2.0 public static
focal_class.parameters: (RelNode child, RexNode condition,
          RelFactories.FilterFactory filterFactory)
focal_class.return: RelNode
focal_class.signature: RelNode createFilter(RelNode child, RexNode condition,
          RelFactories.FilterFactory filterFactory)
focal_class.class_method_signature: RelOptUtil.createFilter(RelNode child,
          Iterable<? extends RexNode> conditions)
focal_class.full_signature: public static RelNode createFilter(RelNode child,
          Iterable<? extends RexNode> conditions)
focal_class.identifier: createFilter
focal_class.modifiers: public static
focal_class.parameters: (RelNode child,
          Iterable<? extends RexNode> conditions)
focal_class.return: RelNode
focal_class.signature: RelNode createFilter(RelNode child,
          Iterable<? extends RexNode> conditions)
focal_class.class_method_signature: RelOptUtil.createFilter(RelNode child,
          Iterable<? extends RexNode> conditions,
          RelFactories.FilterFactory filterFactory)
focal_class.full_signature: public static RelNode createFilter(RelNode child,
          Iterable<? extends RexNode> conditions,
          RelFactories.FilterFactory filterFactory)
focal_class.identifier: createFilter
focal_class.modifiers: public static
focal_class.parameters: (RelNode child,
          Iterable<? extends RexNode> conditions,
          RelFactories.FilterFactory filterFactory)
focal_class.return: RelNode
focal_class.signature: RelNode createFilter(RelNode child,
          Iterable<? extends RexNode> conditions,
          RelFactories.FilterFactory filterFactory)
focal_class.class_method_signature: RelOptUtil.createNullFilter(
          RelNode rel,
          Integer[] fieldOrdinals)
focal_class.full_signature: @Deprecated // to be removed before 2.0 public static RelNode createNullFilter(
          RelNode rel,
          Integer[] fieldOrdinals)
focal_class.identifier: createNullFilter
focal_class.modifiers: @Deprecated // to be removed before 2.0 public static
focal_class.parameters: (
          RelNode rel,
          Integer[] fieldOrdinals)
focal_class.return: RelNode
focal_class.signature: RelNode createNullFilter(
          RelNode rel,
          Integer[] fieldOrdinals)
focal_class.class_method_signature: RelOptUtil.createCastRel(
          final RelNode rel,
          RelDataType castRowType,
          boolean rename)
focal_class.full_signature: public static RelNode createCastRel(
          final RelNode rel,
          RelDataType castRowType,
          boolean rename)
focal_class.identifier: createCastRel
focal_class.modifiers: public static
focal_class.parameters: (
          final RelNode rel,
          RelDataType castRowType,
          boolean rename)
focal_class.return: RelNode
focal_class.signature: RelNode createCastRel(
          final RelNode rel,
          RelDataType castRowType,
          boolean rename)
focal_class.class_method_signature: RelOptUtil.createCastRel(
          final RelNode rel,
          RelDataType castRowType,
          boolean rename,
          RelFactories.ProjectFactory projectFactory)
focal_class.full_signature: public static RelNode createCastRel(
          final RelNode rel,
          RelDataType castRowType,
          boolean rename,
          RelFactories.ProjectFactory projectFactory)
focal_class.identifier: createCastRel
focal_class.modifiers: public static
focal_class.parameters: (
          final RelNode rel,
          RelDataType castRowType,
          boolean rename,
          RelFactories.ProjectFactory projectFactory)
focal_class.return: RelNode
focal_class.signature: RelNode createCastRel(
          final RelNode rel,
          RelDataType castRowType,
          boolean rename,
          RelFactories.ProjectFactory projectFactory)
focal_class.class_method_signature: RelOptUtil.getAllFields(Aggregate aggregate)
focal_class.full_signature: public static Set<Integer> getAllFields(Aggregate aggregate)
focal_class.identifier: getAllFields
focal_class.modifiers: public static
focal_class.parameters: (Aggregate aggregate)
focal_class.return: Set<Integer>
focal_class.signature: Set<Integer> getAllFields(Aggregate aggregate)
focal_class.class_method_signature: RelOptUtil.createSingleValueAggRel(
          RelOptCluster cluster,
          RelNode rel)
focal_class.full_signature: public static RelNode createSingleValueAggRel(
          RelOptCluster cluster,
          RelNode rel)
focal_class.identifier: createSingleValueAggRel
focal_class.modifiers: public static
focal_class.parameters: (
          RelOptCluster cluster,
          RelNode rel)
focal_class.return: RelNode
focal_class.signature: RelNode createSingleValueAggRel(
          RelOptCluster cluster,
          RelNode rel)
focal_class.class_method_signature: RelOptUtil.createDistinctRel(RelNode rel)
focal_class.full_signature: @Deprecated // to be removed before 2.0 public static RelNode createDistinctRel(RelNode rel)
focal_class.identifier: createDistinctRel
focal_class.modifiers: @Deprecated // to be removed before 2.0 public static
focal_class.parameters: (RelNode rel)
focal_class.return: RelNode
focal_class.signature: RelNode createDistinctRel(RelNode rel)
focal_class.class_method_signature: RelOptUtil.analyzeSimpleEquiJoin(
          LogicalJoin join,
          int[] joinFieldOrdinals)
focal_class.full_signature: @Deprecated // to be removed before 2.0 public static boolean analyzeSimpleEquiJoin(
          LogicalJoin join,
          int[] joinFieldOrdinals)
focal_class.identifier: analyzeSimpleEquiJoin
focal_class.modifiers: @Deprecated // to be removed before 2.0 public static
focal_class.parameters: (
          LogicalJoin join,
          int[] joinFieldOrdinals)
focal_class.return: boolean
focal_class.signature: boolean analyzeSimpleEquiJoin(
          LogicalJoin join,
          int[] joinFieldOrdinals)
focal_class.class_method_signature: RelOptUtil.splitJoinCondition(
          RelNode left,
          RelNode right,
          RexNode condition,
          List<Integer> leftKeys,
          List<Integer> rightKeys,
          List<Boolean> filterNulls)
focal_class.full_signature: public static @Nonnull RexNode splitJoinCondition(
          RelNode left,
          RelNode right,
          RexNode condition,
          List<Integer> leftKeys,
          List<Integer> rightKeys,
          List<Boolean> filterNulls)
focal_class.identifier: splitJoinCondition
focal_class.modifiers: public static @Nonnull
focal_class.parameters: (
          RelNode left,
          RelNode right,
          RexNode condition,
          List<Integer> leftKeys,
          List<Integer> rightKeys,
          List<Boolean> filterNulls)
focal_class.return: RexNode
focal_class.signature: RexNode splitJoinCondition(
          RelNode left,
          RelNode right,
          RexNode condition,
          List<Integer> leftKeys,
          List<Integer> rightKeys,
          List<Boolean> filterNulls)
focal_class.class_method_signature: RelOptUtil.splitJoinCondition(
          RelNode left,
          RelNode right,
          RexNode condition,
          List<Integer> leftKeys,
          List<Integer> rightKeys,
          List<Boolean> filterNulls,
          List<RexNode> nonEquiList)
focal_class.full_signature: public static void splitJoinCondition(
          RelNode left,
          RelNode right,
          RexNode condition,
          List<Integer> leftKeys,
          List<Integer> rightKeys,
          List<Boolean> filterNulls,
          List<RexNode> nonEquiList)
focal_class.identifier: splitJoinCondition
focal_class.modifiers: public static
focal_class.parameters: (
          RelNode left,
          RelNode right,
          RexNode condition,
          List<Integer> leftKeys,
          List<Integer> rightKeys,
          List<Boolean> filterNulls,
          List<RexNode> nonEquiList)
focal_class.return: void
focal_class.signature: void splitJoinCondition(
          RelNode left,
          RelNode right,
          RexNode condition,
          List<Integer> leftKeys,
          List<Integer> rightKeys,
          List<Boolean> filterNulls,
          List<RexNode> nonEquiList)
focal_class.class_method_signature: RelOptUtil.isEqui(
          RelNode left,
          RelNode right,
          RexNode condition)
focal_class.full_signature: @Deprecated // to be removed before 2.0 public static boolean isEqui(
          RelNode left,
          RelNode right,
          RexNode condition)
focal_class.identifier: isEqui
focal_class.modifiers: @Deprecated // to be removed before 2.0 public static
focal_class.parameters: (
          RelNode left,
          RelNode right,
          RexNode condition)
focal_class.return: boolean
focal_class.signature: boolean isEqui(
          RelNode left,
          RelNode right,
          RexNode condition)
focal_class.class_method_signature: RelOptUtil.splitJoinCondition(
          List<RelDataTypeField> sysFieldList,
          RelNode leftRel,
          RelNode rightRel,
          RexNode condition,
          List<RexNode> leftJoinKeys,
          List<RexNode> rightJoinKeys,
          List<Integer> filterNulls,
          List<SqlOperator> rangeOp)
focal_class.full_signature: public static RexNode splitJoinCondition(
          List<RelDataTypeField> sysFieldList,
          RelNode leftRel,
          RelNode rightRel,
          RexNode condition,
          List<RexNode> leftJoinKeys,
          List<RexNode> rightJoinKeys,
          List<Integer> filterNulls,
          List<SqlOperator> rangeOp)
focal_class.identifier: splitJoinCondition
focal_class.modifiers: public static
focal_class.parameters: (
          List<RelDataTypeField> sysFieldList,
          RelNode leftRel,
          RelNode rightRel,
          RexNode condition,
          List<RexNode> leftJoinKeys,
          List<RexNode> rightJoinKeys,
          List<Integer> filterNulls,
          List<SqlOperator> rangeOp)
focal_class.return: RexNode
focal_class.signature: RexNode splitJoinCondition(
          List<RelDataTypeField> sysFieldList,
          RelNode leftRel,
          RelNode rightRel,
          RexNode condition,
          List<RexNode> leftJoinKeys,
          List<RexNode> rightJoinKeys,
          List<Integer> filterNulls,
          List<SqlOperator> rangeOp)
focal_class.class_method_signature: RelOptUtil.splitJoinCondition(
          List<RelDataTypeField> sysFieldList,
          List<RelNode> inputs,
          RexNode condition,
          List<List<RexNode>> joinKeys,
          List<Integer> filterNulls,
          List<SqlOperator> rangeOp)
focal_class.full_signature: public static @Nonnull RexNode splitJoinCondition(
          List<RelDataTypeField> sysFieldList,
          List<RelNode> inputs,
          RexNode condition,
          List<List<RexNode>> joinKeys,
          List<Integer> filterNulls,
          List<SqlOperator> rangeOp)
focal_class.identifier: splitJoinCondition
focal_class.modifiers: public static @Nonnull
focal_class.parameters: (
          List<RelDataTypeField> sysFieldList,
          List<RelNode> inputs,
          RexNode condition,
          List<List<RexNode>> joinKeys,
          List<Integer> filterNulls,
          List<SqlOperator> rangeOp)
focal_class.return: RexNode
focal_class.signature: RexNode splitJoinCondition(
          List<RelDataTypeField> sysFieldList,
          List<RelNode> inputs,
          RexNode condition,
          List<List<RexNode>> joinKeys,
          List<Integer> filterNulls,
          List<SqlOperator> rangeOp)
focal_class.class_method_signature: RelOptUtil.splitCorrelatedFilterCondition(
          LogicalFilter filter,
          List<RexInputRef> joinKeys,
          List<RexNode> correlatedJoinKeys)
focal_class.full_signature: @Deprecated // to be removed before 2.0 public static RexNode splitCorrelatedFilterCondition(
          LogicalFilter filter,
          List<RexInputRef> joinKeys,
          List<RexNode> correlatedJoinKeys)
focal_class.identifier: splitCorrelatedFilterCondition
focal_class.modifiers: @Deprecated // to be removed before 2.0 public static
focal_class.parameters: (
          LogicalFilter filter,
          List<RexInputRef> joinKeys,
          List<RexNode> correlatedJoinKeys)
focal_class.return: RexNode
focal_class.signature: RexNode splitCorrelatedFilterCondition(
          LogicalFilter filter,
          List<RexInputRef> joinKeys,
          List<RexNode> correlatedJoinKeys)
focal_class.class_method_signature: RelOptUtil.splitCorrelatedFilterCondition(
          LogicalFilter filter,
          List<RexNode> joinKeys,
          List<RexNode> correlatedJoinKeys,
          boolean extractCorrelatedFieldAccess)
focal_class.full_signature: public static RexNode splitCorrelatedFilterCondition(
          LogicalFilter filter,
          List<RexNode> joinKeys,
          List<RexNode> correlatedJoinKeys,
          boolean extractCorrelatedFieldAccess)
focal_class.identifier: splitCorrelatedFilterCondition
focal_class.modifiers: public static
focal_class.parameters: (
          LogicalFilter filter,
          List<RexNode> joinKeys,
          List<RexNode> correlatedJoinKeys,
          boolean extractCorrelatedFieldAccess)
focal_class.return: RexNode
focal_class.signature: RexNode splitCorrelatedFilterCondition(
          LogicalFilter filter,
          List<RexNode> joinKeys,
          List<RexNode> correlatedJoinKeys,
          boolean extractCorrelatedFieldAccess)
focal_class.class_method_signature: RelOptUtil.splitCorrelatedFilterCondition(
          Filter filter,
          List<RexNode> joinKeys,
          List<RexNode> correlatedJoinKeys,
          boolean extractCorrelatedFieldAccess)
focal_class.full_signature: public static RexNode splitCorrelatedFilterCondition(
          Filter filter,
          List<RexNode> joinKeys,
          List<RexNode> correlatedJoinKeys,
          boolean extractCorrelatedFieldAccess)
focal_class.identifier: splitCorrelatedFilterCondition
focal_class.modifiers: public static
focal_class.parameters: (
          Filter filter,
          List<RexNode> joinKeys,
          List<RexNode> correlatedJoinKeys,
          boolean extractCorrelatedFieldAccess)
focal_class.return: RexNode
focal_class.signature: RexNode splitCorrelatedFilterCondition(
          Filter filter,
          List<RexNode> joinKeys,
          List<RexNode> correlatedJoinKeys,
          boolean extractCorrelatedFieldAccess)
focal_class.class_method_signature: RelOptUtil.splitJoinCondition(
          List<RelDataTypeField> sysFieldList,
          List<RelNode> inputs,
          RexNode condition,
          List<List<RexNode>> joinKeys,
          List<Integer> filterNulls,
          List<SqlOperator> rangeOp,
          List<RexNode> nonEquiList)
focal_class.full_signature: private static void splitJoinCondition(
          List<RelDataTypeField> sysFieldList,
          List<RelNode> inputs,
          RexNode condition,
          List<List<RexNode>> joinKeys,
          List<Integer> filterNulls,
          List<SqlOperator> rangeOp,
          List<RexNode> nonEquiList)
focal_class.identifier: splitJoinCondition
focal_class.modifiers: private static
focal_class.parameters: (
          List<RelDataTypeField> sysFieldList,
          List<RelNode> inputs,
          RexNode condition,
          List<List<RexNode>> joinKeys,
          List<Integer> filterNulls,
          List<SqlOperator> rangeOp,
          List<RexNode> nonEquiList)
focal_class.return: void
focal_class.signature: void splitJoinCondition(
          List<RelDataTypeField> sysFieldList,
          List<RelNode> inputs,
          RexNode condition,
          List<List<RexNode>> joinKeys,
          List<Integer> filterNulls,
          List<SqlOperator> rangeOp,
          List<RexNode> nonEquiList)
focal_class.class_method_signature: RelOptUtil.createEquiJoinCondition(
          final RelNode left, final List<Integer> leftKeys,
          final RelNode right, final List<Integer> rightKeys,
          final RexBuilder rexBuilder)
focal_class.full_signature: public static @Nonnull RexNode createEquiJoinCondition(
          final RelNode left, final List<Integer> leftKeys,
          final RelNode right, final List<Integer> rightKeys,
          final RexBuilder rexBuilder)
focal_class.identifier: createEquiJoinCondition
focal_class.modifiers: public static @Nonnull
focal_class.parameters: (
          final RelNode left, final List<Integer> leftKeys,
          final RelNode right, final List<Integer> rightKeys,
          final RexBuilder rexBuilder)
focal_class.return: RexNode
focal_class.signature: RexNode createEquiJoinCondition(
          final RelNode left, final List<Integer> leftKeys,
          final RelNode right, final List<Integer> rightKeys,
          final RexBuilder rexBuilder)
focal_class.class_method_signature: RelOptUtil.op(SqlKind kind, SqlOperator operator)
focal_class.full_signature: public static SqlOperator op(SqlKind kind, SqlOperator operator)
focal_class.identifier: op
focal_class.modifiers: public static
focal_class.parameters: (SqlKind kind, SqlOperator operator)
focal_class.return: SqlOperator
focal_class.signature: SqlOperator op(SqlKind kind, SqlOperator operator)
focal_class.class_method_signature: RelOptUtil.addJoinKey(
          List<RexNode> joinKeyList,
          RexNode key,
          boolean preserveLastElementInList)
focal_class.full_signature: private static void addJoinKey(
          List<RexNode> joinKeyList,
          RexNode key,
          boolean preserveLastElementInList)
focal_class.identifier: addJoinKey
focal_class.modifiers: private static
focal_class.parameters: (
          List<RexNode> joinKeyList,
          RexNode key,
          boolean preserveLastElementInList)
focal_class.return: void
focal_class.signature: void addJoinKey(
          List<RexNode> joinKeyList,
          RexNode key,
          boolean preserveLastElementInList)
focal_class.class_method_signature: RelOptUtil.splitCorrelatedFilterCondition(
          LogicalFilter filter,
          RexNode condition,
          List<RexInputRef> joinKeys,
          List<RexNode> correlatedJoinKeys,
          List<RexNode> nonEquiList)
focal_class.full_signature: private static void splitCorrelatedFilterCondition(
          LogicalFilter filter,
          RexNode condition,
          List<RexInputRef> joinKeys,
          List<RexNode> correlatedJoinKeys,
          List<RexNode> nonEquiList)
focal_class.identifier: splitCorrelatedFilterCondition
focal_class.modifiers: private static
focal_class.parameters: (
          LogicalFilter filter,
          RexNode condition,
          List<RexInputRef> joinKeys,
          List<RexNode> correlatedJoinKeys,
          List<RexNode> nonEquiList)
focal_class.return: void
focal_class.signature: void splitCorrelatedFilterCondition(
          LogicalFilter filter,
          RexNode condition,
          List<RexInputRef> joinKeys,
          List<RexNode> correlatedJoinKeys,
          List<RexNode> nonEquiList)
focal_class.class_method_signature: RelOptUtil.splitCorrelatedFilterCondition(
          LogicalFilter filter,
          RexNode condition,
          List<RexNode> joinKeys,
          List<RexNode> correlatedJoinKeys,
          List<RexNode> nonEquiList,
          boolean extractCorrelatedFieldAccess)
focal_class.full_signature: private static void splitCorrelatedFilterCondition(
          LogicalFilter filter,
          RexNode condition,
          List<RexNode> joinKeys,
          List<RexNode> correlatedJoinKeys,
          List<RexNode> nonEquiList,
          boolean extractCorrelatedFieldAccess)
focal_class.identifier: splitCorrelatedFilterCondition
focal_class.modifiers: private static
focal_class.parameters: (
          LogicalFilter filter,
          RexNode condition,
          List<RexNode> joinKeys,
          List<RexNode> correlatedJoinKeys,
          List<RexNode> nonEquiList,
          boolean extractCorrelatedFieldAccess)
focal_class.return: void
focal_class.signature: void splitCorrelatedFilterCondition(
          LogicalFilter filter,
          RexNode condition,
          List<RexNode> joinKeys,
          List<RexNode> correlatedJoinKeys,
          List<RexNode> nonEquiList,
          boolean extractCorrelatedFieldAccess)
focal_class.class_method_signature: RelOptUtil.splitCorrelatedFilterCondition(
          Filter filter,
          RexNode condition,
          List<RexNode> joinKeys,
          List<RexNode> correlatedJoinKeys,
          List<RexNode> nonEquiList,
          boolean extractCorrelatedFieldAccess)
focal_class.full_signature: private static void splitCorrelatedFilterCondition(
          Filter filter,
          RexNode condition,
          List<RexNode> joinKeys,
          List<RexNode> correlatedJoinKeys,
          List<RexNode> nonEquiList,
          boolean extractCorrelatedFieldAccess)
focal_class.identifier: splitCorrelatedFilterCondition
focal_class.modifiers: private static
focal_class.parameters: (
          Filter filter,
          RexNode condition,
          List<RexNode> joinKeys,
          List<RexNode> correlatedJoinKeys,
          List<RexNode> nonEquiList,
          boolean extractCorrelatedFieldAccess)
focal_class.return: void
focal_class.signature: void splitCorrelatedFilterCondition(
          Filter filter,
          RexNode condition,
          List<RexNode> joinKeys,
          List<RexNode> correlatedJoinKeys,
          List<RexNode> nonEquiList,
          boolean extractCorrelatedFieldAccess)
focal_class.class_method_signature: RelOptUtil.splitJoinCondition(
          final RexBuilder rexBuilder,
          final int leftFieldCount,
          RexNode condition,
          List<Integer> leftKeys,
          List<Integer> rightKeys,
          List<Boolean> filterNulls,
          List<RexNode> nonEquiList)
focal_class.full_signature: private static void splitJoinCondition(
          final RexBuilder rexBuilder,
          final int leftFieldCount,
          RexNode condition,
          List<Integer> leftKeys,
          List<Integer> rightKeys,
          List<Boolean> filterNulls,
          List<RexNode> nonEquiList)
focal_class.identifier: splitJoinCondition
focal_class.modifiers: private static
focal_class.parameters: (
          final RexBuilder rexBuilder,
          final int leftFieldCount,
          RexNode condition,
          List<Integer> leftKeys,
          List<Integer> rightKeys,
          List<Boolean> filterNulls,
          List<RexNode> nonEquiList)
focal_class.return: void
focal_class.signature: void splitJoinCondition(
          final RexBuilder rexBuilder,
          final int leftFieldCount,
          RexNode condition,
          List<Integer> leftKeys,
          List<Integer> rightKeys,
          List<Boolean> filterNulls,
          List<RexNode> nonEquiList)
focal_class.class_method_signature: RelOptUtil.collapseExpandedIsNotDistinctFromExpr(final RexCall call,
          final RexBuilder rexBuilder)
focal_class.full_signature: public static RexCall collapseExpandedIsNotDistinctFromExpr(final RexCall call,
          final RexBuilder rexBuilder)
focal_class.identifier: collapseExpandedIsNotDistinctFromExpr
focal_class.modifiers: public static
focal_class.parameters: (final RexCall call,
          final RexBuilder rexBuilder)
focal_class.return: RexCall
focal_class.signature: RexCall collapseExpandedIsNotDistinctFromExpr(final RexCall call,
          final RexBuilder rexBuilder)
focal_class.class_method_signature: RelOptUtil.doCollapseExpandedIsNotDistinctFromOrExpr(final RexCall call,
          final RexBuilder rexBuilder)
focal_class.full_signature: private static RexCall doCollapseExpandedIsNotDistinctFromOrExpr(final RexCall call,
          final RexBuilder rexBuilder)
focal_class.identifier: doCollapseExpandedIsNotDistinctFromOrExpr
focal_class.modifiers: private static
focal_class.parameters: (final RexCall call,
          final RexBuilder rexBuilder)
focal_class.return: RexCall
focal_class.signature: RexCall doCollapseExpandedIsNotDistinctFromOrExpr(final RexCall call,
          final RexBuilder rexBuilder)
focal_class.class_method_signature: RelOptUtil.doCollapseExpandedIsNotDistinctFromCaseExpr(final RexCall call,
          final RexBuilder rexBuilder)
focal_class.full_signature: private static RexCall doCollapseExpandedIsNotDistinctFromCaseExpr(final RexCall call,
          final RexBuilder rexBuilder)
focal_class.identifier: doCollapseExpandedIsNotDistinctFromCaseExpr
focal_class.modifiers: private static
focal_class.parameters: (final RexCall call,
          final RexBuilder rexBuilder)
focal_class.return: RexCall
focal_class.signature: RexCall doCollapseExpandedIsNotDistinctFromCaseExpr(final RexCall call,
          final RexBuilder rexBuilder)
focal_class.class_method_signature: RelOptUtil.doCollapseExpandedIsNotDistinctFrom(final RexBuilder rexBuilder,
          final RexCall call, RexCall ifNull0Call, RexCall ifNull1Call, RexCall equalsCall)
focal_class.full_signature: private static RexCall doCollapseExpandedIsNotDistinctFrom(final RexBuilder rexBuilder,
          final RexCall call, RexCall ifNull0Call, RexCall ifNull1Call, RexCall equalsCall)
focal_class.identifier: doCollapseExpandedIsNotDistinctFrom
focal_class.modifiers: private static
focal_class.parameters: (final RexBuilder rexBuilder,
          final RexCall call, RexCall ifNull0Call, RexCall ifNull1Call, RexCall equalsCall)
focal_class.return: RexCall
focal_class.signature: RexCall doCollapseExpandedIsNotDistinctFrom(final RexBuilder rexBuilder,
          final RexCall call, RexCall ifNull0Call, RexCall ifNull1Call, RexCall equalsCall)
focal_class.class_method_signature: RelOptUtil.projectJoinInputs(
          RelNode[] inputRels,
          List<RexNode> leftJoinKeys,
          List<RexNode> rightJoinKeys,
          int systemColCount,
          List<Integer> leftKeys,
          List<Integer> rightKeys,
          List<Integer> outputProj)
focal_class.full_signature: @Deprecated // to be removed before 2.0 public static void projectJoinInputs(
          RelNode[] inputRels,
          List<RexNode> leftJoinKeys,
          List<RexNode> rightJoinKeys,
          int systemColCount,
          List<Integer> leftKeys,
          List<Integer> rightKeys,
          List<Integer> outputProj)
focal_class.identifier: projectJoinInputs
focal_class.modifiers: @Deprecated // to be removed before 2.0 public static
focal_class.parameters: (
          RelNode[] inputRels,
          List<RexNode> leftJoinKeys,
          List<RexNode> rightJoinKeys,
          int systemColCount,
          List<Integer> leftKeys,
          List<Integer> rightKeys,
          List<Integer> outputProj)
focal_class.return: void
focal_class.signature: void projectJoinInputs(
          RelNode[] inputRels,
          List<RexNode> leftJoinKeys,
          List<RexNode> rightJoinKeys,
          int systemColCount,
          List<Integer> leftKeys,
          List<Integer> rightKeys,
          List<Integer> outputProj)
focal_class.class_method_signature: RelOptUtil.createProjectJoinRel(
          List<Integer> outputProj,
          RelNode joinRel)
focal_class.full_signature: @Deprecated // to be removed before 2.0 public static RelNode createProjectJoinRel(
          List<Integer> outputProj,
          RelNode joinRel)
focal_class.identifier: createProjectJoinRel
focal_class.modifiers: @Deprecated // to be removed before 2.0 public static
focal_class.parameters: (
          List<Integer> outputProj,
          RelNode joinRel)
focal_class.return: RelNode
focal_class.signature: RelNode createProjectJoinRel(
          List<Integer> outputProj,
          RelNode joinRel)
focal_class.class_method_signature: RelOptUtil.registerAbstractRels(RelOptPlanner planner)
focal_class.full_signature: @Deprecated // to be removed before 2.0 public static void registerAbstractRels(RelOptPlanner planner)
focal_class.identifier: registerAbstractRels
focal_class.modifiers: @Deprecated // to be removed before 2.0 public static
focal_class.parameters: (RelOptPlanner planner)
focal_class.return: void
focal_class.signature: void registerAbstractRels(RelOptPlanner planner)
focal_class.class_method_signature: RelOptUtil.registerAbstractRules(RelOptPlanner planner)
focal_class.full_signature: @Experimental public static void registerAbstractRules(RelOptPlanner planner)
focal_class.identifier: registerAbstractRules
focal_class.modifiers: @Experimental public static
focal_class.parameters: (RelOptPlanner planner)
focal_class.return: void
focal_class.signature: void registerAbstractRules(RelOptPlanner planner)
focal_class.class_method_signature: RelOptUtil.registerAbstractRelationalRules(RelOptPlanner planner)
focal_class.full_signature: @Experimental public static void registerAbstractRelationalRules(RelOptPlanner planner)
focal_class.identifier: registerAbstractRelationalRules
focal_class.modifiers: @Experimental public static
focal_class.parameters: (RelOptPlanner planner)
focal_class.return: void
focal_class.signature: void registerAbstractRelationalRules(RelOptPlanner planner)
focal_class.class_method_signature: RelOptUtil.registerEnumerableRules(RelOptPlanner planner)
focal_class.full_signature: private static void registerEnumerableRules(RelOptPlanner planner)
focal_class.identifier: registerEnumerableRules
focal_class.modifiers: private static
focal_class.parameters: (RelOptPlanner planner)
focal_class.return: void
focal_class.signature: void registerEnumerableRules(RelOptPlanner planner)
focal_class.class_method_signature: RelOptUtil.registerBaseRules(RelOptPlanner planner)
focal_class.full_signature: private static void registerBaseRules(RelOptPlanner planner)
focal_class.identifier: registerBaseRules
focal_class.modifiers: private static
focal_class.parameters: (RelOptPlanner planner)
focal_class.return: void
focal_class.signature: void registerBaseRules(RelOptPlanner planner)
focal_class.class_method_signature: RelOptUtil.registerReductionRules(RelOptPlanner planner)
focal_class.full_signature: private static void registerReductionRules(RelOptPlanner planner)
focal_class.identifier: registerReductionRules
focal_class.modifiers: private static
focal_class.parameters: (RelOptPlanner planner)
focal_class.return: void
focal_class.signature: void registerReductionRules(RelOptPlanner planner)
focal_class.class_method_signature: RelOptUtil.registerMaterializationRules(RelOptPlanner planner)
focal_class.full_signature: private static void registerMaterializationRules(RelOptPlanner planner)
focal_class.identifier: registerMaterializationRules
focal_class.modifiers: private static
focal_class.parameters: (RelOptPlanner planner)
focal_class.return: void
focal_class.signature: void registerMaterializationRules(RelOptPlanner planner)
focal_class.class_method_signature: RelOptUtil.registerCalcRules(RelOptPlanner planner)
focal_class.full_signature: private static void registerCalcRules(RelOptPlanner planner)
focal_class.identifier: registerCalcRules
focal_class.modifiers: private static
focal_class.parameters: (RelOptPlanner planner)
focal_class.return: void
focal_class.signature: void registerCalcRules(RelOptPlanner planner)
focal_class.class_method_signature: RelOptUtil.registerDefaultRules(RelOptPlanner planner,
          boolean enableMaterialziations, boolean enableBindable)
focal_class.full_signature: @Experimental public static void registerDefaultRules(RelOptPlanner planner,
          boolean enableMaterialziations, boolean enableBindable)
focal_class.identifier: registerDefaultRules
focal_class.modifiers: @Experimental public static
focal_class.parameters: (RelOptPlanner planner,
          boolean enableMaterialziations, boolean enableBindable)
focal_class.return: void
focal_class.signature: void registerDefaultRules(RelOptPlanner planner,
          boolean enableMaterialziations, boolean enableBindable)
focal_class.class_method_signature: RelOptUtil.dumpPlan(
          String header,
          RelNode rel,
          SqlExplainFormat format,
          SqlExplainLevel detailLevel)
focal_class.full_signature: public static String dumpPlan(
          String header,
          RelNode rel,
          SqlExplainFormat format,
          SqlExplainLevel detailLevel)
focal_class.identifier: dumpPlan
focal_class.modifiers: public static
focal_class.parameters: (
          String header,
          RelNode rel,
          SqlExplainFormat format,
          SqlExplainLevel detailLevel)
focal_class.return: String
focal_class.signature: String dumpPlan(
          String header,
          RelNode rel,
          SqlExplainFormat format,
          SqlExplainLevel detailLevel)
focal_class.class_method_signature: RelOptUtil.dumpPlan(
          String header,
          RelNode rel,
          boolean asXml,
          SqlExplainLevel detailLevel)
focal_class.full_signature: @Deprecated // to be removed before 2.0 public static String dumpPlan(
          String header,
          RelNode rel,
          boolean asXml,
          SqlExplainLevel detailLevel)
focal_class.identifier: dumpPlan
focal_class.modifiers: @Deprecated // to be removed before 2.0 public static
focal_class.parameters: (
          String header,
          RelNode rel,
          boolean asXml,
          SqlExplainLevel detailLevel)
focal_class.return: String
focal_class.signature: String dumpPlan(
          String header,
          RelNode rel,
          boolean asXml,
          SqlExplainLevel detailLevel)
focal_class.class_method_signature: RelOptUtil.createDmlRowType(
          SqlKind kind,
          RelDataTypeFactory typeFactory)
focal_class.full_signature: public static RelDataType createDmlRowType(
          SqlKind kind,
          RelDataTypeFactory typeFactory)
focal_class.identifier: createDmlRowType
focal_class.modifiers: public static
focal_class.parameters: (
          SqlKind kind,
          RelDataTypeFactory typeFactory)
focal_class.return: RelDataType
focal_class.signature: RelDataType createDmlRowType(
          SqlKind kind,
          RelDataTypeFactory typeFactory)
focal_class.class_method_signature: RelOptUtil.eq(
          final String desc1,
          RelDataType type1,
          final String desc2,
          RelDataType type2,
          Litmus litmus)
focal_class.full_signature: public static boolean eq(
          final String desc1,
          RelDataType type1,
          final String desc2,
          RelDataType type2,
          Litmus litmus)
focal_class.identifier: eq
focal_class.modifiers: public static
focal_class.parameters: (
          final String desc1,
          RelDataType type1,
          final String desc2,
          RelDataType type2,
          Litmus litmus)
focal_class.return: boolean
focal_class.signature: boolean eq(
          final String desc1,
          RelDataType type1,
          final String desc2,
          RelDataType type2,
          Litmus litmus)
focal_class.class_method_signature: RelOptUtil.equal(
          final String desc1,
          RelDataType type1,
          final String desc2,
          RelDataType type2,
          Litmus litmus)
focal_class.full_signature: public static boolean equal(
          final String desc1,
          RelDataType type1,
          final String desc2,
          RelDataType type2,
          Litmus litmus)
focal_class.identifier: equal
focal_class.modifiers: public static
focal_class.parameters: (
          final String desc1,
          RelDataType type1,
          final String desc2,
          RelDataType type2,
          Litmus litmus)
focal_class.return: boolean
focal_class.signature: boolean equal(
          final String desc1,
          RelDataType type1,
          final String desc2,
          RelDataType type2,
          Litmus litmus)
focal_class.class_method_signature: RelOptUtil.equalType(String desc0, RelNode rel0, String desc1,
          RelNode rel1, Litmus litmus)
focal_class.full_signature: public static boolean equalType(String desc0, RelNode rel0, String desc1,
          RelNode rel1, Litmus litmus)
focal_class.identifier: equalType
focal_class.modifiers: public static
focal_class.parameters: (String desc0, RelNode rel0, String desc1,
          RelNode rel1, Litmus litmus)
focal_class.return: boolean
focal_class.signature: boolean equalType(String desc0, RelNode rel0, String desc1,
          RelNode rel1, Litmus litmus)
focal_class.class_method_signature: RelOptUtil.isDistinctFrom(
          RexBuilder rexBuilder,
          RexNode x,
          RexNode y,
          boolean neg)
focal_class.full_signature: public static RexNode isDistinctFrom(
          RexBuilder rexBuilder,
          RexNode x,
          RexNode y,
          boolean neg)
focal_class.identifier: isDistinctFrom
focal_class.modifiers: public static
focal_class.parameters: (
          RexBuilder rexBuilder,
          RexNode x,
          RexNode y,
          boolean neg)
focal_class.return: RexNode
focal_class.signature: RexNode isDistinctFrom(
          RexBuilder rexBuilder,
          RexNode x,
          RexNode y,
          boolean neg)
focal_class.class_method_signature: RelOptUtil.isDistinctFromInternal(
          RexBuilder rexBuilder,
          RexNode x,
          RexNode y,
          boolean neg)
focal_class.full_signature: private static RexNode isDistinctFromInternal(
          RexBuilder rexBuilder,
          RexNode x,
          RexNode y,
          boolean neg)
focal_class.identifier: isDistinctFromInternal
focal_class.modifiers: private static
focal_class.parameters: (
          RexBuilder rexBuilder,
          RexNode x,
          RexNode y,
          boolean neg)
focal_class.return: RexNode
focal_class.signature: RexNode isDistinctFromInternal(
          RexBuilder rexBuilder,
          RexNode x,
          RexNode y,
          boolean neg)
focal_class.class_method_signature: RelOptUtil.toString(final RelNode rel)
focal_class.full_signature: public static String toString(final RelNode rel)
focal_class.identifier: toString
focal_class.modifiers: public static
focal_class.parameters: (final RelNode rel)
focal_class.return: String
focal_class.signature: String toString(final RelNode rel)
focal_class.class_method_signature: RelOptUtil.toString(
          final RelNode rel,
          SqlExplainLevel detailLevel)
focal_class.full_signature: public static String toString(
          final RelNode rel,
          SqlExplainLevel detailLevel)
focal_class.identifier: toString
focal_class.modifiers: public static
focal_class.parameters: (
          final RelNode rel,
          SqlExplainLevel detailLevel)
focal_class.return: String
focal_class.signature: String toString(
          final RelNode rel,
          SqlExplainLevel detailLevel)
focal_class.class_method_signature: RelOptUtil.renameIfNecessary(
          RelNode rel,
          RelDataType desiredRowType)
focal_class.full_signature: @Deprecated // to be removed before 2.0 public static RelNode renameIfNecessary(
          RelNode rel,
          RelDataType desiredRowType)
focal_class.identifier: renameIfNecessary
focal_class.modifiers: @Deprecated // to be removed before 2.0 public static
focal_class.parameters: (
          RelNode rel,
          RelDataType desiredRowType)
focal_class.return: RelNode
focal_class.signature: RelNode renameIfNecessary(
          RelNode rel,
          RelDataType desiredRowType)
focal_class.class_method_signature: RelOptUtil.dumpType(RelDataType type)
focal_class.full_signature: public static String dumpType(RelDataType type)
focal_class.identifier: dumpType
focal_class.modifiers: public static
focal_class.parameters: (RelDataType type)
focal_class.return: String
focal_class.signature: String dumpType(RelDataType type)
focal_class.class_method_signature: RelOptUtil.deduplicateColumns(
          List<RelDataTypeField> baseColumns, List<RelDataTypeField> extendedColumns)
focal_class.full_signature: public static List<RelDataTypeField> deduplicateColumns(
          List<RelDataTypeField> baseColumns, List<RelDataTypeField> extendedColumns)
focal_class.identifier: deduplicateColumns
focal_class.modifiers: public static
focal_class.parameters: (
          List<RelDataTypeField> baseColumns, List<RelDataTypeField> extendedColumns)
focal_class.return: List<RelDataTypeField>
focal_class.signature: List<RelDataTypeField> deduplicateColumns(
          List<RelDataTypeField> baseColumns, List<RelDataTypeField> extendedColumns)
focal_class.class_method_signature: RelOptUtil.decomposeConjunction(
          RexNode rexPredicate,
          List<RexNode> rexList)
focal_class.full_signature: public static void decomposeConjunction(
          RexNode rexPredicate,
          List<RexNode> rexList)
focal_class.identifier: decomposeConjunction
focal_class.modifiers: public static
focal_class.parameters: (
          RexNode rexPredicate,
          List<RexNode> rexList)
focal_class.return: void
focal_class.signature: void decomposeConjunction(
          RexNode rexPredicate,
          List<RexNode> rexList)
focal_class.class_method_signature: RelOptUtil.decomposeConjunction(
          RexNode rexPredicate,
          List<RexNode> rexList,
          List<RexNode> notList)
focal_class.full_signature: public static void decomposeConjunction(
          RexNode rexPredicate,
          List<RexNode> rexList,
          List<RexNode> notList)
focal_class.identifier: decomposeConjunction
focal_class.modifiers: public static
focal_class.parameters: (
          RexNode rexPredicate,
          List<RexNode> rexList,
          List<RexNode> notList)
focal_class.return: void
focal_class.signature: void decomposeConjunction(
          RexNode rexPredicate,
          List<RexNode> rexList,
          List<RexNode> notList)
focal_class.class_method_signature: RelOptUtil.decomposeDisjunction(
          RexNode rexPredicate,
          List<RexNode> rexList)
focal_class.full_signature: public static void decomposeDisjunction(
          RexNode rexPredicate,
          List<RexNode> rexList)
focal_class.identifier: decomposeDisjunction
focal_class.modifiers: public static
focal_class.parameters: (
          RexNode rexPredicate,
          List<RexNode> rexList)
focal_class.return: void
focal_class.signature: void decomposeDisjunction(
          RexNode rexPredicate,
          List<RexNode> rexList)
focal_class.class_method_signature: RelOptUtil.conjunctions(RexNode rexPredicate)
focal_class.full_signature: public static List<RexNode> conjunctions(RexNode rexPredicate)
focal_class.identifier: conjunctions
focal_class.modifiers: public static
focal_class.parameters: (RexNode rexPredicate)
focal_class.return: List<RexNode>
focal_class.signature: List<RexNode> conjunctions(RexNode rexPredicate)
focal_class.class_method_signature: RelOptUtil.disjunctions(RexNode rexPredicate)
focal_class.full_signature: public static List<RexNode> disjunctions(RexNode rexPredicate)
focal_class.identifier: disjunctions
focal_class.modifiers: public static
focal_class.parameters: (RexNode rexPredicate)
focal_class.return: List<RexNode>
focal_class.signature: List<RexNode> disjunctions(RexNode rexPredicate)
focal_class.class_method_signature: RelOptUtil.andJoinFilters(
          RexBuilder rexBuilder,
          RexNode left,
          RexNode right)
focal_class.full_signature: public static RexNode andJoinFilters(
          RexBuilder rexBuilder,
          RexNode left,
          RexNode right)
focal_class.identifier: andJoinFilters
focal_class.modifiers: public static
focal_class.parameters: (
          RexBuilder rexBuilder,
          RexNode left,
          RexNode right)
focal_class.return: RexNode
focal_class.signature: RexNode andJoinFilters(
          RexBuilder rexBuilder,
          RexNode left,
          RexNode right)
focal_class.class_method_signature: RelOptUtil.inferViewPredicates(Map<Integer, RexNode> projectMap,
          List<RexNode> filters, RexNode constraint)
focal_class.full_signature: public static void inferViewPredicates(Map<Integer, RexNode> projectMap,
          List<RexNode> filters, RexNode constraint)
focal_class.identifier: inferViewPredicates
focal_class.modifiers: public static
focal_class.parameters: (Map<Integer, RexNode> projectMap,
          List<RexNode> filters, RexNode constraint)
focal_class.return: void
focal_class.signature: void inferViewPredicates(Map<Integer, RexNode> projectMap,
          List<RexNode> filters, RexNode constraint)
focal_class.class_method_signature: RelOptUtil.getColumnConstraints(
          ModifiableView modifiableViewTable, RelDataType targetRowType,
          RelDataTypeFactory typeFactory)
focal_class.full_signature: public static Map<Integer, RexNode> getColumnConstraints(
          ModifiableView modifiableViewTable, RelDataType targetRowType,
          RelDataTypeFactory typeFactory)
focal_class.identifier: getColumnConstraints
focal_class.modifiers: public static
focal_class.parameters: (
          ModifiableView modifiableViewTable, RelDataType targetRowType,
          RelDataTypeFactory typeFactory)
focal_class.return: Map<Integer, RexNode>
focal_class.signature: Map<Integer, RexNode> getColumnConstraints(
          ModifiableView modifiableViewTable, RelDataType targetRowType,
          RelDataTypeFactory typeFactory)
focal_class.class_method_signature: RelOptUtil.validateValueAgainstConstraint(SqlNode sourceValue,
          RexNode targetConstraint,
          Supplier<CalciteContextException> errorSupplier)
focal_class.full_signature: public static void validateValueAgainstConstraint(SqlNode sourceValue,
          RexNode targetConstraint,
          Supplier<CalciteContextException> errorSupplier)
focal_class.identifier: validateValueAgainstConstraint
focal_class.modifiers: public static
focal_class.parameters: (SqlNode sourceValue,
          RexNode targetConstraint,
          Supplier<CalciteContextException> errorSupplier)
focal_class.return: void
focal_class.signature: void validateValueAgainstConstraint(SqlNode sourceValue,
          RexNode targetConstraint,
          Supplier<CalciteContextException> errorSupplier)
focal_class.class_method_signature: RelOptUtil.adjustKeys(List<Integer> keys, int adjustment)
focal_class.full_signature: public static List<Integer> adjustKeys(List<Integer> keys, int adjustment)
focal_class.identifier: adjustKeys
focal_class.modifiers: public static
focal_class.parameters: (List<Integer> keys, int adjustment)
focal_class.return: List<Integer>
focal_class.signature: List<Integer> adjustKeys(List<Integer> keys, int adjustment)
focal_class.class_method_signature: RelOptUtil.simplifyJoin(RelNode joinRel,
          ImmutableList<RexNode> aboveFilters,
          JoinRelType joinType)
focal_class.full_signature: public static JoinRelType simplifyJoin(RelNode joinRel,
          ImmutableList<RexNode> aboveFilters,
          JoinRelType joinType)
focal_class.identifier: simplifyJoin
focal_class.modifiers: public static
focal_class.parameters: (RelNode joinRel,
          ImmutableList<RexNode> aboveFilters,
          JoinRelType joinType)
focal_class.return: JoinRelType
focal_class.signature: JoinRelType simplifyJoin(RelNode joinRel,
          ImmutableList<RexNode> aboveFilters,
          JoinRelType joinType)
focal_class.class_method_signature: RelOptUtil.classifyFilters(
          RelNode joinRel,
          List<RexNode> filters,
          JoinRelType joinType,
          boolean pushInto,
          boolean pushLeft,
          boolean pushRight,
          List<RexNode> joinFilters,
          List<RexNode> leftFilters,
          List<RexNode> rightFilters)
focal_class.full_signature: public static boolean classifyFilters(
          RelNode joinRel,
          List<RexNode> filters,
          JoinRelType joinType,
          boolean pushInto,
          boolean pushLeft,
          boolean pushRight,
          List<RexNode> joinFilters,
          List<RexNode> leftFilters,
          List<RexNode> rightFilters)
focal_class.identifier: classifyFilters
focal_class.modifiers: public static
focal_class.parameters: (
          RelNode joinRel,
          List<RexNode> filters,
          JoinRelType joinType,
          boolean pushInto,
          boolean pushLeft,
          boolean pushRight,
          List<RexNode> joinFilters,
          List<RexNode> leftFilters,
          List<RexNode> rightFilters)
focal_class.return: boolean
focal_class.signature: boolean classifyFilters(
          RelNode joinRel,
          List<RexNode> filters,
          JoinRelType joinType,
          boolean pushInto,
          boolean pushLeft,
          boolean pushRight,
          List<RexNode> joinFilters,
          List<RexNode> leftFilters,
          List<RexNode> rightFilters)
focal_class.class_method_signature: RelOptUtil.shiftFilter(
          int start,
          int end,
          int offset,
          RexBuilder rexBuilder,
          List<RelDataTypeField> joinFields,
          int nTotalFields,
          List<RelDataTypeField> rightFields,
          RexNode filter)
focal_class.full_signature: private static RexNode shiftFilter(
          int start,
          int end,
          int offset,
          RexBuilder rexBuilder,
          List<RelDataTypeField> joinFields,
          int nTotalFields,
          List<RelDataTypeField> rightFields,
          RexNode filter)
focal_class.identifier: shiftFilter
focal_class.modifiers: private static
focal_class.parameters: (
          int start,
          int end,
          int offset,
          RexBuilder rexBuilder,
          List<RelDataTypeField> joinFields,
          int nTotalFields,
          List<RelDataTypeField> rightFields,
          RexNode filter)
focal_class.return: RexNode
focal_class.signature: RexNode shiftFilter(
          int start,
          int end,
          int offset,
          RexBuilder rexBuilder,
          List<RelDataTypeField> joinFields,
          int nTotalFields,
          List<RelDataTypeField> rightFields,
          RexNode filter)
focal_class.class_method_signature: RelOptUtil.splitFilters(
          ImmutableBitSet childBitmap,
          RexNode predicate,
          List<RexNode> pushable,
          List<RexNode> notPushable)
focal_class.full_signature: public static void splitFilters(
          ImmutableBitSet childBitmap,
          RexNode predicate,
          List<RexNode> pushable,
          List<RexNode> notPushable)
focal_class.identifier: splitFilters
focal_class.modifiers: public static
focal_class.parameters: (
          ImmutableBitSet childBitmap,
          RexNode predicate,
          List<RexNode> pushable,
          List<RexNode> notPushable)
focal_class.return: void
focal_class.signature: void splitFilters(
          ImmutableBitSet childBitmap,
          RexNode predicate,
          List<RexNode> pushable,
          List<RexNode> notPushable)
focal_class.class_method_signature: RelOptUtil.checkProjAndChildInputs(
          Project project,
          boolean checkNames)
focal_class.full_signature: @Deprecated // to be removed before 2.0 public static boolean checkProjAndChildInputs(
          Project project,
          boolean checkNames)
focal_class.identifier: checkProjAndChildInputs
focal_class.modifiers: @Deprecated // to be removed before 2.0 public static
focal_class.parameters: (
          Project project,
          boolean checkNames)
focal_class.return: boolean
focal_class.signature: boolean checkProjAndChildInputs(
          Project project,
          boolean checkNames)
focal_class.class_method_signature: RelOptUtil.createSwappedJoinExprs(
          RelNode newJoin,
          Join origJoin,
          boolean origOrder)
focal_class.full_signature: public static List<RexNode> createSwappedJoinExprs(
          RelNode newJoin,
          Join origJoin,
          boolean origOrder)
focal_class.identifier: createSwappedJoinExprs
focal_class.modifiers: public static
focal_class.parameters: (
          RelNode newJoin,
          Join origJoin,
          boolean origOrder)
focal_class.return: List<RexNode>
focal_class.signature: List<RexNode> createSwappedJoinExprs(
          RelNode newJoin,
          Join origJoin,
          boolean origOrder)
focal_class.class_method_signature: RelOptUtil.pushFilterPastProject(RexNode filter,
          final Project projRel)
focal_class.full_signature: @Deprecated // to be removed before 2.0 public static RexNode pushFilterPastProject(RexNode filter,
          final Project projRel)
focal_class.identifier: pushFilterPastProject
focal_class.modifiers: @Deprecated // to be removed before 2.0 public static
focal_class.parameters: (RexNode filter,
          final Project projRel)
focal_class.return: RexNode
focal_class.signature: RexNode pushFilterPastProject(RexNode filter,
          final Project projRel)
focal_class.class_method_signature: RelOptUtil.pushPastProject(RexNode node, Project project)
focal_class.full_signature: public static RexNode pushPastProject(RexNode node, Project project)
focal_class.identifier: pushPastProject
focal_class.modifiers: public static
focal_class.parameters: (RexNode node, Project project)
focal_class.return: RexNode
focal_class.signature: RexNode pushPastProject(RexNode node, Project project)
focal_class.class_method_signature: RelOptUtil.pushPastProject(List<? extends RexNode> nodes,
          Project project)
focal_class.full_signature: public static List<RexNode> pushPastProject(List<? extends RexNode> nodes,
          Project project)
focal_class.identifier: pushPastProject
focal_class.modifiers: public static
focal_class.parameters: (List<? extends RexNode> nodes,
          Project project)
focal_class.return: List<RexNode>
focal_class.signature: List<RexNode> pushPastProject(List<? extends RexNode> nodes,
          Project project)
focal_class.class_method_signature: RelOptUtil.pushShuttle(final Project project)
focal_class.full_signature: private static RexShuttle pushShuttle(final Project project)
focal_class.identifier: pushShuttle
focal_class.modifiers: private static
focal_class.parameters: (final Project project)
focal_class.return: RexShuttle
focal_class.signature: RexShuttle pushShuttle(final Project project)
focal_class.class_method_signature: RelOptUtil.projectMultiJoin(
          MultiJoin multiJoin,
          Project project)
focal_class.full_signature: public static MultiJoin projectMultiJoin(
          MultiJoin multiJoin,
          Project project)
focal_class.identifier: projectMultiJoin
focal_class.modifiers: public static
focal_class.parameters: (
          MultiJoin multiJoin,
          Project project)
focal_class.return: MultiJoin
focal_class.signature: MultiJoin projectMultiJoin(
          MultiJoin multiJoin,
          Project project)
focal_class.class_method_signature: RelOptUtil.addTrait(
          T rel, RelTrait trait)
focal_class.full_signature: public static T addTrait(
          T rel, RelTrait trait)
focal_class.identifier: addTrait
focal_class.modifiers: public static
focal_class.parameters: (
          T rel, RelTrait trait)
focal_class.return: T
focal_class.signature: T addTrait(
          T rel, RelTrait trait)
focal_class.class_method_signature: RelOptUtil.replaceInput(
          RelNode parent, int ordinal, RelNode newInput)
focal_class.full_signature: public static RelNode replaceInput(
          RelNode parent, int ordinal, RelNode newInput)
focal_class.identifier: replaceInput
focal_class.modifiers: public static
focal_class.parameters: (
          RelNode parent, int ordinal, RelNode newInput)
focal_class.return: RelNode
focal_class.signature: RelNode replaceInput(
          RelNode parent, int ordinal, RelNode newInput)
focal_class.class_method_signature: RelOptUtil.createProject(
          RelNode child,
          Mappings.TargetMapping mapping)
focal_class.full_signature: public static RelNode createProject(
          RelNode child,
          Mappings.TargetMapping mapping)
focal_class.identifier: createProject
focal_class.modifiers: public static
focal_class.parameters: (
          RelNode child,
          Mappings.TargetMapping mapping)
focal_class.return: RelNode
focal_class.signature: RelNode createProject(
          RelNode child,
          Mappings.TargetMapping mapping)
focal_class.class_method_signature: RelOptUtil.createProject(RelNode child, Mappings.TargetMapping mapping,
          RelFactories.ProjectFactory projectFactory)
focal_class.full_signature: public static RelNode createProject(RelNode child, Mappings.TargetMapping mapping,
          RelFactories.ProjectFactory projectFactory)
focal_class.identifier: createProject
focal_class.modifiers: public static
focal_class.parameters: (RelNode child, Mappings.TargetMapping mapping,
          RelFactories.ProjectFactory projectFactory)
focal_class.return: RelNode
focal_class.signature: RelNode createProject(RelNode child, Mappings.TargetMapping mapping,
          RelFactories.ProjectFactory projectFactory)
focal_class.class_method_signature: RelOptUtil.contains(RelNode ancestor, final RelNode target)
focal_class.full_signature: public static boolean contains(RelNode ancestor, final RelNode target)
focal_class.identifier: contains
focal_class.modifiers: public static
focal_class.parameters: (RelNode ancestor, final RelNode target)
focal_class.return: boolean
focal_class.signature: boolean contains(RelNode ancestor, final RelNode target)
focal_class.class_method_signature: RelOptUtil.replace(RelNode query, RelNode find, RelNode replace)
focal_class.full_signature: public static RelNode replace(RelNode query, RelNode find, RelNode replace)
focal_class.identifier: replace
focal_class.modifiers: public static
focal_class.parameters: (RelNode query, RelNode find, RelNode replace)
focal_class.return: RelNode
focal_class.signature: RelNode replace(RelNode query, RelNode find, RelNode replace)
focal_class.class_method_signature: RelOptUtil.replaceRecurse(
          RelNode query, RelNode find, RelNode replace)
focal_class.full_signature: private static RelNode replaceRecurse(
          RelNode query, RelNode find, RelNode replace)
focal_class.identifier: replaceRecurse
focal_class.modifiers: private static
focal_class.parameters: (
          RelNode query, RelNode find, RelNode replace)
focal_class.return: RelNode
focal_class.signature: RelNode replaceRecurse(
          RelNode query, RelNode find, RelNode replace)
focal_class.class_method_signature: RelOptUtil.getContext(RelOptCluster cluster)
focal_class.full_signature: @Deprecated // to be removed before 2.0 public static RelOptTable.ToRelContext getContext(RelOptCluster cluster)
focal_class.identifier: getContext
focal_class.modifiers: @Deprecated // to be removed before 2.0 public static
focal_class.parameters: (RelOptCluster cluster)
focal_class.return: RelOptTable.ToRelContext
focal_class.signature: RelOptTable.ToRelContext getContext(RelOptCluster cluster)
focal_class.class_method_signature: RelOptUtil.countJoins(RelNode rootRel)
focal_class.full_signature: public static int countJoins(RelNode rootRel)
focal_class.identifier: countJoins
focal_class.modifiers: public static
focal_class.parameters: (RelNode rootRel)
focal_class.return: int
focal_class.signature: int countJoins(RelNode rootRel)
focal_class.class_method_signature: RelOptUtil.permute(RelDataTypeFactory typeFactory,
          RelDataType rowType, Mapping mapping)
focal_class.full_signature: public static RelDataType permute(RelDataTypeFactory typeFactory,
          RelDataType rowType, Mapping mapping)
focal_class.identifier: permute
focal_class.modifiers: public static
focal_class.parameters: (RelDataTypeFactory typeFactory,
          RelDataType rowType, Mapping mapping)
focal_class.return: RelDataType
focal_class.signature: RelDataType permute(RelDataTypeFactory typeFactory,
          RelDataType rowType, Mapping mapping)
focal_class.class_method_signature: RelOptUtil.createProject(
          RelNode child,
          List<? extends RexNode> exprList,
          List<String> fieldNameList)
focal_class.full_signature: @Deprecated // to be removed before 2.0 public static RelNode createProject(
          RelNode child,
          List<? extends RexNode> exprList,
          List<String> fieldNameList)
focal_class.identifier: createProject
focal_class.modifiers: @Deprecated // to be removed before 2.0 public static
focal_class.parameters: (
          RelNode child,
          List<? extends RexNode> exprList,
          List<String> fieldNameList)
focal_class.return: RelNode
focal_class.signature: RelNode createProject(
          RelNode child,
          List<? extends RexNode> exprList,
          List<String> fieldNameList)
focal_class.class_method_signature: RelOptUtil.createProject(
          RelNode child,
          List<Pair<RexNode, String>> projectList,
          boolean optimize)
focal_class.full_signature: @Deprecated // to be removed before 2.0 public static RelNode createProject(
          RelNode child,
          List<Pair<RexNode, String>> projectList,
          boolean optimize)
focal_class.identifier: createProject
focal_class.modifiers: @Deprecated // to be removed before 2.0 public static
focal_class.parameters: (
          RelNode child,
          List<Pair<RexNode, String>> projectList,
          boolean optimize)
focal_class.return: RelNode
focal_class.signature: RelNode createProject(
          RelNode child,
          List<Pair<RexNode, String>> projectList,
          boolean optimize)
focal_class.class_method_signature: RelOptUtil.createProject(final RelNode child,
          final List<Integer> posList)
focal_class.full_signature: public static RelNode createProject(final RelNode child,
          final List<Integer> posList)
focal_class.identifier: createProject
focal_class.modifiers: public static
focal_class.parameters: (final RelNode child,
          final List<Integer> posList)
focal_class.return: RelNode
focal_class.signature: RelNode createProject(final RelNode child,
          final List<Integer> posList)
focal_class.class_method_signature: RelOptUtil.createProject(
          RelNode child,
          List<? extends RexNode> exprs,
          List<String> fieldNames,
          boolean optimize)
focal_class.full_signature: @Deprecated // to be removed before 2.0 public static RelNode createProject(
          RelNode child,
          List<? extends RexNode> exprs,
          List<String> fieldNames,
          boolean optimize)
focal_class.identifier: createProject
focal_class.modifiers: @Deprecated // to be removed before 2.0 public static
focal_class.parameters: (
          RelNode child,
          List<? extends RexNode> exprs,
          List<String> fieldNames,
          boolean optimize)
focal_class.return: RelNode
focal_class.signature: RelNode createProject(
          RelNode child,
          List<? extends RexNode> exprs,
          List<String> fieldNames,
          boolean optimize)
focal_class.class_method_signature: RelOptUtil.createProject(
          RelNode child,
          List<? extends RexNode> exprs,
          List<String> fieldNames,
          boolean optimize,
          RelBuilder relBuilder)
focal_class.full_signature: @Deprecated // to be removed before 2.0 public static RelNode createProject(
          RelNode child,
          List<? extends RexNode> exprs,
          List<String> fieldNames,
          boolean optimize,
          RelBuilder relBuilder)
focal_class.identifier: createProject
focal_class.modifiers: @Deprecated // to be removed before 2.0 public static
focal_class.parameters: (
          RelNode child,
          List<? extends RexNode> exprs,
          List<String> fieldNames,
          boolean optimize,
          RelBuilder relBuilder)
focal_class.return: RelNode
focal_class.signature: RelNode createProject(
          RelNode child,
          List<? extends RexNode> exprs,
          List<String> fieldNames,
          boolean optimize,
          RelBuilder relBuilder)
focal_class.class_method_signature: RelOptUtil.createRename(
          RelNode rel,
          List<String> fieldNames)
focal_class.full_signature: @Deprecated // to be removed before 2.0 public static RelNode createRename(
          RelNode rel,
          List<String> fieldNames)
focal_class.identifier: createRename
focal_class.modifiers: @Deprecated // to be removed before 2.0 public static
focal_class.parameters: (
          RelNode rel,
          List<String> fieldNames)
focal_class.return: RelNode
focal_class.signature: RelNode createRename(
          RelNode rel,
          List<String> fieldNames)
focal_class.class_method_signature: RelOptUtil.permute(
          RelNode rel,
          Permutation permutation,
          List<String> fieldNames)
focal_class.full_signature: public static RelNode permute(
          RelNode rel,
          Permutation permutation,
          List<String> fieldNames)
focal_class.identifier: permute
focal_class.modifiers: public static
focal_class.parameters: (
          RelNode rel,
          Permutation permutation,
          List<String> fieldNames)
focal_class.return: RelNode
focal_class.signature: RelNode permute(
          RelNode rel,
          Permutation permutation,
          List<String> fieldNames)
focal_class.class_method_signature: RelOptUtil.createProject(final RelFactories.ProjectFactory factory,
          final RelNode child, final List<Integer> posList)
focal_class.full_signature: public static RelNode createProject(final RelFactories.ProjectFactory factory,
          final RelNode child, final List<Integer> posList)
focal_class.identifier: createProject
focal_class.modifiers: public static
focal_class.parameters: (final RelFactories.ProjectFactory factory,
          final RelNode child, final List<Integer> posList)
focal_class.return: RelNode
focal_class.signature: RelNode createProject(final RelFactories.ProjectFactory factory,
          final RelNode child, final List<Integer> posList)
focal_class.class_method_signature: RelOptUtil.projectMapping(
          RelNode rel,
          Mapping mapping,
          List<String> fieldNames,
          RelFactories.ProjectFactory projectFactory)
focal_class.full_signature: @Deprecated // to be removed before 2.0 public static RelNode projectMapping(
          RelNode rel,
          Mapping mapping,
          List<String> fieldNames,
          RelFactories.ProjectFactory projectFactory)
focal_class.identifier: projectMapping
focal_class.modifiers: @Deprecated // to be removed before 2.0 public static
focal_class.parameters: (
          RelNode rel,
          Mapping mapping,
          List<String> fieldNames,
          RelFactories.ProjectFactory projectFactory)
focal_class.return: RelNode
focal_class.signature: RelNode projectMapping(
          RelNode rel,
          Mapping mapping,
          List<String> fieldNames,
          RelFactories.ProjectFactory projectFactory)
focal_class.class_method_signature: RelOptUtil.containsMultisetOrWindowedAgg(Calc calc)
focal_class.full_signature: public static boolean containsMultisetOrWindowedAgg(Calc calc)
focal_class.identifier: containsMultisetOrWindowedAgg
focal_class.modifiers: public static
focal_class.parameters: (Calc calc)
focal_class.return: boolean
focal_class.signature: boolean containsMultisetOrWindowedAgg(Calc calc)
focal_class.class_method_signature: RelOptUtil.containsMultisetOrWindowedAgg(Filter filter)
focal_class.full_signature: public static boolean containsMultisetOrWindowedAgg(Filter filter)
focal_class.identifier: containsMultisetOrWindowedAgg
focal_class.modifiers: public static
focal_class.parameters: (Filter filter)
focal_class.return: boolean
focal_class.signature: boolean containsMultisetOrWindowedAgg(Filter filter)
focal_class.class_method_signature: RelOptUtil.containsMultisetOrWindowedAgg(Project project)
focal_class.full_signature: public static boolean containsMultisetOrWindowedAgg(Project project)
focal_class.identifier: containsMultisetOrWindowedAgg
focal_class.modifiers: public static
focal_class.parameters: (Project project)
focal_class.return: boolean
focal_class.signature: boolean containsMultisetOrWindowedAgg(Project project)
focal_class.class_method_signature: RelOptUtil.pushDownJoinConditions(Join originalJoin,
          RelBuilder relBuilder)
focal_class.full_signature: public static RelNode pushDownJoinConditions(Join originalJoin,
          RelBuilder relBuilder)
focal_class.identifier: pushDownJoinConditions
focal_class.modifiers: public static
focal_class.parameters: (Join originalJoin,
          RelBuilder relBuilder)
focal_class.return: RelNode
focal_class.signature: RelNode pushDownJoinConditions(Join originalJoin,
          RelBuilder relBuilder)
focal_class.class_method_signature: RelOptUtil.pushDownJoinConditions(Join originalJoin)
focal_class.full_signature: @Deprecated // to be removed before 2.0 public static RelNode pushDownJoinConditions(Join originalJoin)
focal_class.identifier: pushDownJoinConditions
focal_class.modifiers: @Deprecated // to be removed before 2.0 public static
focal_class.parameters: (Join originalJoin)
focal_class.return: RelNode
focal_class.signature: RelNode pushDownJoinConditions(Join originalJoin)
focal_class.class_method_signature: RelOptUtil.pushDownJoinConditions(Join originalJoin,
          RelFactories.ProjectFactory projectFactory)
focal_class.full_signature: @Deprecated // to be removed before 2.0 public static RelNode pushDownJoinConditions(Join originalJoin,
          RelFactories.ProjectFactory projectFactory)
focal_class.identifier: pushDownJoinConditions
focal_class.modifiers: @Deprecated // to be removed before 2.0 public static
focal_class.parameters: (Join originalJoin,
          RelFactories.ProjectFactory projectFactory)
focal_class.return: RelNode
focal_class.signature: RelNode pushDownJoinConditions(Join originalJoin,
          RelFactories.ProjectFactory projectFactory)
focal_class.class_method_signature: RelOptUtil.pushDownJoinConditions(Join originalJoin,
          RelBuilderFactory relBuilderFactory)
focal_class.full_signature: private static RelNode pushDownJoinConditions(Join originalJoin,
          RelBuilderFactory relBuilderFactory)
focal_class.identifier: pushDownJoinConditions
focal_class.modifiers: private static
focal_class.parameters: (Join originalJoin,
          RelBuilderFactory relBuilderFactory)
focal_class.return: RelNode
focal_class.signature: RelNode pushDownJoinConditions(Join originalJoin,
          RelBuilderFactory relBuilderFactory)
focal_class.class_method_signature: RelOptUtil.containsGet(RexNode node)
focal_class.full_signature: private static boolean containsGet(RexNode node)
focal_class.identifier: containsGet
focal_class.modifiers: private static
focal_class.parameters: (RexNode node)
focal_class.return: boolean
focal_class.signature: boolean containsGet(RexNode node)
focal_class.class_method_signature: RelOptUtil.pushDownEqualJoinConditions(
          RexNode condition,
          int leftCount,
          int rightCount,
          List<RexNode> extraLeftExprs,
          List<RexNode> extraRightExprs,
          RexBuilder builder)
focal_class.full_signature: private static RexNode pushDownEqualJoinConditions(
          RexNode condition,
          int leftCount,
          int rightCount,
          List<RexNode> extraLeftExprs,
          List<RexNode> extraRightExprs,
          RexBuilder builder)
focal_class.identifier: pushDownEqualJoinConditions
focal_class.modifiers: private static
focal_class.parameters: (
          RexNode condition,
          int leftCount,
          int rightCount,
          List<RexNode> extraLeftExprs,
          List<RexNode> extraRightExprs,
          RexBuilder builder)
focal_class.return: RexNode
focal_class.signature: RexNode pushDownEqualJoinConditions(
          RexNode condition,
          int leftCount,
          int rightCount,
          List<RexNode> extraLeftExprs,
          List<RexNode> extraRightExprs,
          RexBuilder builder)
focal_class.class_method_signature: RelOptUtil.fix(List<RexNode> operands, int before, int after)
focal_class.full_signature: private static void fix(List<RexNode> operands, int before, int after)
focal_class.identifier: fix
focal_class.modifiers: private static
focal_class.parameters: (List<RexNode> operands, int before, int after)
focal_class.return: void
focal_class.signature: void fix(List<RexNode> operands, int before, int after)
focal_class.class_method_signature: RelOptUtil.containsNullableFields(RelNode r)
focal_class.full_signature: private static boolean containsNullableFields(RelNode r)
focal_class.identifier: containsNullableFields
focal_class.modifiers: private static
focal_class.parameters: (RelNode r)
focal_class.return: boolean
focal_class.signature: boolean containsNullableFields(RelNode r)
focal_method.body: public static RelNode pushDownJoinConditions(Join originalJoin,
          RelBuilder relBuilder) {
          RexNode joinCond = originalJoin.getCondition();
          final JoinRelType joinType = originalJoin.getJoinType();
  
          final List<RexNode> extraLeftExprs = new ArrayList<>();
          final List<RexNode> extraRightExprs = new ArrayList<>();
          final int leftCount = originalJoin.getLeft().getRowType().getFieldCount();
          final int rightCount = originalJoin.getRight().getRowType().getFieldCount();
  
          // You cannot push a 'get' because field names might change.
          //
          // Pushing sub-queries is OK in principle (if they don't reference both
          // sides of the join via correlating variables) but we'd rather not do it
          // yet.
          if (!containsGet(joinCond)
              && RexUtil.SubQueryFinder.find(joinCond) == null) {
              joinCond = pushDownEqualJoinConditions(joinCond, leftCount, rightCount, extraLeftExprs,
                  extraRightExprs, relBuilder.getRexBuilder());
          }
  
          relBuilder.push(originalJoin.getLeft());
          if (!extraLeftExprs.isEmpty()) {
              final List<RelDataTypeField> fields =
                  relBuilder.peek().getRowType().getFieldList();
              final List<Pair<RexNode, String>> pairs =
                  new AbstractList<Pair<RexNode, String>>() {
                      public int size() {
                          return leftCount + extraLeftExprs.size();
                      }
  
                      public Pair<RexNode, String> get(int index) {
                          if (index < leftCount) {
                              RelDataTypeField field = fields.get(index);
                              return Pair.of(
                                  new RexInputRef(index, field.getType()), field.getName());
                          } else {
                              return Pair.of(extraLeftExprs.get(index - leftCount), null);
                          }
                      }
                  };
              relBuilder.project(Pair.left(pairs), Pair.right(pairs));
          }
  
          relBuilder.push(originalJoin.getRight());
          if (!extraRightExprs.isEmpty()) {
              final List<RelDataTypeField> fields =
                  relBuilder.peek().getRowType().getFieldList();
              final int newLeftCount = leftCount + extraLeftExprs.size();
              final List<Pair<RexNode, String>> pairs =
                  new AbstractList<Pair<RexNode, String>>() {
                      public int size() {
                          return rightCount + extraRightExprs.size();
                      }
  
                      public Pair<RexNode, String> get(int index) {
                          if (index < rightCount) {
                              RelDataTypeField field = fields.get(index);
                              return Pair.of(
                                  new RexInputRef(index, field.getType()),
                                  field.getName());
                          } else {
                              return Pair.of(
                                  RexUtil.shift(
                                      extraRightExprs.get(index - rightCount),
                                      -newLeftCount),
                                  null);
                          }
                      }
                  };
              relBuilder.project(Pair.left(pairs), Pair.right(pairs));
          }
  
          final RelNode right = relBuilder.build();
          final RelNode left = relBuilder.build();
          relBuilder.push(
              originalJoin.copy(originalJoin.getTraitSet(),
                  joinCond, left, right, joinType, originalJoin.isSemiJoinDone()));
          if (!extraLeftExprs.isEmpty() || !extraRightExprs.isEmpty()) {
              final int totalFields = joinType.projectsRight()
                  ? leftCount + extraLeftExprs.size() + rightCount + extraRightExprs.size()
                  : leftCount + extraLeftExprs.size();
              final int[] mappingRanges = joinType.projectsRight()
                  ? new int[]{0, 0, leftCount, leftCount, leftCount + extraLeftExprs.size(), rightCount}
                  : new int[]{0, 0, leftCount};
              Mappings.TargetMapping mapping =
                  Mappings.createShiftMapping(
                      totalFields,
                      mappingRanges);
              relBuilder.project(relBuilder.fields(mapping.inverse()));
          }
          return relBuilder.build();
      }
focal_method.class_method_signature: RelOptUtil.pushDownJoinConditions(Join originalJoin,
          RelBuilder relBuilder)
focal_method.full_signature: public static RelNode pushDownJoinConditions(Join originalJoin,
          RelBuilder relBuilder)
focal_method.identifier: pushDownJoinConditions
focal_method.invocations: getCondition getJoinType getFieldCount getRowType getLeft getFieldCount getRowType getRight containsGet find pushDownEqualJoinConditions getRexBuilder push getLeft isEmpty getFieldList getRowType peek size get of getType getName of get project left right push getRight isEmpty getFieldList getRowType peek size size get of getType getName of shift get project left right build build push copy getTraitSet isSemiJoinDone isEmpty isEmpty projectsRight size size size projectsRight size createShiftMapping project fields inverse build
focal_method.modifiers: public static
focal_method.parameters: (Join originalJoin,
          RelBuilder relBuilder)
focal_method.return: RelNode
focal_method.signature: RelNode pushDownJoinConditions(Join originalJoin,
          RelBuilder relBuilder)