本文整理了Java中org.apache.calcite.rel.core.Join.getJoinType()
方法的一些代码示例,展示了Join.getJoinType()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Join.getJoinType()
方法的具体详情如下:
包路径:org.apache.calcite.rel.core.Join
类名称: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) {
内容来源于网络,如有侵权,请联系作者删除!