org.apache.calcite.rel.core.Join.getJoinType()方法的使用及代码示例

x33g5p2x  于2022-01-22 转载在 其他  
字(6.7k)|赞(0)|评价(0)|浏览(112)

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

Join.getJoinType介绍

暂无

代码示例

代码示例来源:origin: apache/hive

private static JoinType extractJoinType(Join join) {
 // OUTER AND INNER JOINS
 JoinType resultJoinType;
 switch (join.getJoinType()) {
 case FULL:
  resultJoinType = JoinType.FULLOUTER;
  break;
 case LEFT:
  resultJoinType = JoinType.LEFTOUTER;
  break;
 case RIGHT:
  resultJoinType = JoinType.RIGHTOUTER;
  break;
 default:
  // TODO: UNIQUE JOIN
  resultJoinType = JoinType.INNER;
  break;
 }
 return resultJoinType;
}

代码示例来源:origin: apache/drill

private static JoinType extractJoinType(Join join) {
 // OUTER AND INNER JOINS
 JoinType resultJoinType;
 switch (join.getJoinType()) {
 case FULL:
  resultJoinType = JoinType.FULLOUTER;
  break;
 case LEFT:
  resultJoinType = JoinType.LEFTOUTER;
  break;
 case RIGHT:
  resultJoinType = JoinType.RIGHTOUTER;
  break;
 default:
  // TODO: UNIQUE JOIN
  resultJoinType = JoinType.INNER;
  break;
 }
 return resultJoinType;
}

代码示例来源:origin: apache/hive

private static double pkSelectivity(Join joinRel, RelMetadataQuery mq, boolean leftChild,
  RelNode child,
  double childRowCount) {
 if ((leftChild && joinRel.getJoinType().generatesNullsOnRight()) ||
   (!leftChild && joinRel.getJoinType().generatesNullsOnLeft())) {
  return 1.0;
 } else {
  HiveTableScan tScan = EstimateUniqueKeys.getTableScan(child, true);
  if (tScan != null) {
   double tRowCount = mq.getRowCount(tScan);
   return childRowCount / tRowCount;
  } else {
   return 1.0;
  }
 }
}

代码示例来源:origin: apache/hive

public Double getSelectivity(Join j, RelMetadataQuery mq, RexNode predicate) {
 if (j.getJoinType().equals(JoinRelType.INNER)) {
  return computeInnerJoinSelectivity(j, mq, predicate);
 } else if (j.getJoinType().equals(JoinRelType.LEFT) ||
     j.getJoinType().equals(JoinRelType.RIGHT)) {
  double left = mq.getRowCount(j.getLeft());
  double right = mq.getRowCount(j.getRight());
  double product = left * right;
  double innerJoinSelectivity = computeInnerJoinSelectivity(j, mq, predicate);
  if (j.getJoinType().equals(JoinRelType.LEFT)) {
   return Math.max(innerJoinSelectivity, left/product);
  }
  return Math.max(innerJoinSelectivity, right/product);
 }
 return 1.0;
}

代码示例来源:origin: apache/drill

private static double pkSelectivity(Join joinRel, RelMetadataQuery mq, boolean leftChild,
  RelNode child,
  double childRowCount) {
 if ((leftChild && joinRel.getJoinType().generatesNullsOnRight()) ||
   (!leftChild && joinRel.getJoinType().generatesNullsOnLeft())) {
  return 1.0;
 } else {
  HiveTableScan tScan = HiveRelMdUniqueKeys.getTableScan(child, true);
  if (tScan != null) {
   double tRowCount = mq.getRowCount(tScan);
   return childRowCount / tRowCount;
  } else {
   return 1.0;
  }
 }
}

代码示例来源:origin: apache/drill

public Double getSelectivity(Join j, RelMetadataQuery mq, RexNode predicate) {
 if (j.getJoinType().equals(JoinRelType.INNER)) {
  return computeInnerJoinSelectivity(j, mq, predicate);
 } else if (j.getJoinType().equals(JoinRelType.LEFT) ||
     j.getJoinType().equals(JoinRelType.RIGHT)) {
  double left = mq.getRowCount(j.getLeft());
  double right = mq.getRowCount(j.getRight());
  double product = left * right;
  double innerJoinSelectivity = computeInnerJoinSelectivity(j, mq, predicate);
  if (j.getJoinType().equals(JoinRelType.LEFT)) {
   return Math.max(innerJoinSelectivity, left/product);
  }
  return Math.max(innerJoinSelectivity, right/product);
 }
 return 1.0;
}

代码示例来源:origin: apache/hive

@Override
public Double getDistinctRowCount(Join rel, RelMetadataQuery mq, ImmutableBitSet groupKey,
  RexNode predicate) {
 if (rel instanceof HiveJoin) {
  HiveJoin hjRel = (HiveJoin) rel;
  //TODO: Improve this
  if (rel instanceof SemiJoin) {
   return mq.getDistinctRowCount(hjRel.getLeft(), groupKey,
     rel.getCluster().getRexBuilder().makeLiteral(true));
  } else {
   return RelMdUtil.getJoinDistinctRowCount(mq, rel, rel.getJoinType(),
     groupKey, predicate, true);
  }
 }
 return mq.getDistinctRowCount(rel, groupKey, predicate);
}

代码示例来源:origin: apache/hive

rightFrame.r, decorrelateExpr(rel.getCondition()), rel.getJoinType());

代码示例来源:origin: apache/drill

@Override
public Double getDistinctRowCount(Join rel, RelMetadataQuery mq, ImmutableBitSet groupKey,
  RexNode predicate) {
 if (rel instanceof HiveJoin) {
  HiveJoin hjRel = (HiveJoin) rel;
  //TODO: Improve this
  if (rel instanceof SemiJoin) {
   return mq.getDistinctRowCount(hjRel.getLeft(), groupKey,
     rel.getCluster().getRexBuilder().makeLiteral(true));
  } else {
   return RelMdUtil.getJoinDistinctRowCount(mq, rel, rel.getJoinType(),
     groupKey, predicate, true);
  }
 }
 return mq.getDistinctRowCount(rel, groupKey, predicate);
}

代码示例来源:origin: apache/hive

final RelDataTypeFactory typeFactory = join.getCluster().getTypeFactory();
final RelNode left = join.getLeft();
final JoinRelType joinType = join.getJoinType();

代码示例来源:origin: apache/hive

@Override
 public void onMatch(RelOptRuleCall call) {
  final Join join = call.rel(0);
  final RexBuilder rexBuilder = join.getCluster().getRexBuilder();
  final RexNode condition = RexUtil.pullFactors(rexBuilder, join.getCondition());
  RexNode newCondition = analyzeRexNode(rexBuilder, condition);
  // If we could not transform anything, we bail out
  if (newCondition.toString().equals(condition.toString())) {
   return;
  }
  RelNode newNode = join.copy(join.getTraitSet(),
    newCondition,
    join.getLeft(),
    join.getRight(),
    join.getJoinType(),
    join.isSemiJoinDone());
  call.transformTo(newNode);
 }
}

代码示例来源:origin: apache/hive

@Override public void onMatch(RelOptRuleCall call) {
  final Join topJoin= call.rel(0);
  final Join join = call.rel(2);
  final Aggregate aggregate = call.rel(6);

  // in presence of grouping sets we can't remove sq_count_check
  if(aggregate.indicator) {
   return;
  }
  if(isAggregateWithoutGbyKeys(aggregate) || isAggWithConstantGbyKeys(aggregate, call)) {
   // join(left, join.getRight)
   RelNode newJoin = HiveJoin.getJoin(topJoin.getCluster(), join.getLeft(),  topJoin.getRight(),
     topJoin.getCondition(), topJoin.getJoinType());
   call.transformTo(newJoin);
  }
 }
}

代码示例来源:origin: apache/hive

assert registry != null;
if (join.getJoinType() != JoinRelType.INNER) {
 return;
    lChild, rChild, join.getJoinType(), join.isSemiJoinDone());
call.getPlanner().onCopy(join, newJoin);

代码示例来源:origin: apache/hive

Join swappedJoin = (Join)builder.push(join.getRight()).push(join.getLeft()).join(join.getJoinType(),
                                         newJoinCond).build();

代码示例来源:origin: apache/hive

if (join.getJoinType() == JoinRelType.LEFT) {
 type = JoinRelType.RIGHT;
} else if (join.getJoinType() == JoinRelType.RIGHT) {
 type = JoinRelType.LEFT;
} else {
 type = join.getJoinType();
ast = ASTBuilder.join(left.ast, right.ast, join.getJoinType(), cond, semiJoin);

代码示例来源:origin: apache/hive

if(join.getJoinType() == JoinRelType.LEFT) {
if (join.getJoinType() != JoinRelType.INNER) {
 return;

代码示例来源:origin: apache/hive

lChild, rChild, join.getJoinType(), join.isSemiJoinDone());
call.getPlanner().onCopy(join, newRel);

代码示例来源:origin: apache/drill

final MutableRel right = toMutable(join.getRight());
return MutableJoin.of(join.getCluster(), left, right,
  join.getCondition(), join.getJoinType(), join.getVariablesSet());

代码示例来源:origin: apache/drill

lChild, rChild, join.getJoinType(), join.isSemiJoinDone());
call.getPlanner().onCopy(join, newRel);

代码示例来源:origin: apache/incubator-druid

if (join.getJoinType() == JoinRelType.LEFT) {

相关文章