diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/CascadesContext.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/CascadesContext.java index bb091d7105..542ec6d868 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/CascadesContext.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/CascadesContext.java @@ -120,6 +120,8 @@ public class CascadesContext implements ScheduleContext { private final List materializationContexts; private boolean isLeadingJoin = false; + private boolean isLeadingDisableJoinReorder = false; + private final Map hintMap = Maps.newLinkedHashMap(); private final boolean shouldCheckRelationAuthentication; private final ThreadLocal showPlanProcess = new ThreadLocal<>(); @@ -657,6 +659,14 @@ public class CascadesContext implements ScheduleContext { return shouldCheckRelationAuthentication; } + public boolean isLeadingDisableJoinReorder() { + return isLeadingDisableJoinReorder; + } + + public void setLeadingDisableJoinReorder(boolean leadingDisableJoinReorder) { + isLeadingDisableJoinReorder = leadingDisableJoinReorder; + } + public Map getHintMap() { return hintMap; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/hint/LeadingHint.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/hint/LeadingHint.java index 00a1c01b0a..9087dd83e8 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/hint/LeadingHint.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/hint/LeadingHint.java @@ -503,7 +503,8 @@ public class LeadingHint extends Hint { distributeHint, Optional.empty(), newStackTop.second.first, - logicalPlan); + logicalPlan, null); + logicalJoin.getJoinReorderContext().setLeadingJoin(true); distributeIndex = newStackTop.second.second; logicalJoin.setBitmap(LongBitmap.or(getBitmap(newStackTop.second.first), getBitmap(logicalPlan))); if (stackTopLevel > 0) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/OptimizeGroupExpressionJob.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/OptimizeGroupExpressionJob.java index 8c8e7e4399..0d18cd54b1 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/OptimizeGroupExpressionJob.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/OptimizeGroupExpressionJob.java @@ -75,6 +75,7 @@ public class OptimizeGroupExpressionJob extends Job { private List getJoinRules() { boolean isDisableJoinReorder = context.getCascadesContext().getConnectContext().getSessionVariable() .isDisableJoinReorder() + || context.getCascadesContext().isLeadingDisableJoinReorder() || context.getCascadesContext().getMemo().getGroupExpressionsSize() > context.getCascadesContext() .getConnectContext().getSessionVariable().memoMaxGroupExpressionSize; boolean isDpHyp = context.getCascadesContext().getStatementContext().isDpHyp(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/executor/Optimizer.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/executor/Optimizer.java index 5f945ab838..6735f2fc7b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/executor/Optimizer.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/executor/Optimizer.java @@ -68,6 +68,7 @@ public class Optimizer { || maxJoinCount > maxTableCount; cascadesContext.getStatementContext().setDpHyp(isDpHyp); if (!getSessionVariable().isDisableJoinReorder() && isDpHyp + && !cascadesContext.isLeadingDisableJoinReorder() && maxJoinCount <= getSessionVariable().getMaxJoinNumberOfReorder()) { //RightNow, dphyper can only order 64 join operators dpHypOptimize(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/joinorder/hypergraph/GraphSimplifier.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/joinorder/hypergraph/GraphSimplifier.java index 61738f2fca..f7b309608d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/joinorder/hypergraph/GraphSimplifier.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/joinorder/hypergraph/GraphSimplifier.java @@ -413,7 +413,7 @@ public class GraphSimplifier { .mapToObj(i -> graph.getJoinEdge(i).getJoin().getHashJoinConjuncts()) .flatMap(Collection::stream) .collect(Collectors.toList()); - join = edge.getJoin().withJoinConjuncts(hashConditions, otherConditions); + join = edge.getJoin().withJoinConjuncts(hashConditions, otherConditions, null); } JoinEdge newEdge = new JoinEdge(join, edge.getIndex(), diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/joinorder/hypergraph/HyperGraph.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/joinorder/hypergraph/HyperGraph.java index 0099ab30af..3b3c2f410c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/joinorder/hypergraph/HyperGraph.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/joinorder/hypergraph/HyperGraph.java @@ -551,7 +551,7 @@ public class HyperGraph { LogicalJoin singleJoin = new LogicalJoin<>(join.getJoinType(), entry.getValue().first, entry.getValue().second, new DistributeHint(DistributeType.NONE), join.getMarkJoinSlotReference(), - Lists.newArrayList(join.left(), join.right())); + Lists.newArrayList(join.left(), join.right()), null); Pair ends = entry.getKey(); JoinEdge edge = new JoinEdge(singleJoin, joinEdges.size(), leftEdgeNodes.first, rightEdgeNodes.first, LongBitmap.newBitmapUnion(leftEdgeNodes.second, rightEdgeNodes.second), diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/joinorder/hypergraph/edge/JoinEdge.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/joinorder/hypergraph/edge/JoinEdge.java index 94f4b30e8d..59a7bc8993 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/joinorder/hypergraph/edge/JoinEdge.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/joinorder/hypergraph/edge/JoinEdge.java @@ -67,7 +67,7 @@ public class JoinEdge extends Edge { } public JoinEdge withJoinTypeAndCleanCR(JoinType joinType) { - return new JoinEdge(join.withJoinType(joinType), getIndex(), getLeftChildEdges(), getRightChildEdges(), + return new JoinEdge(join.withJoinType(joinType, null), getIndex(), getLeftChildEdges(), getRightChildEdges(), getSubTreeNodes(), getLeftRequiredNodes(), getRightRequiredNodes(), leftInputSlots, rightInputSlots); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/joinorder/hypergraph/receiver/PlanReceiver.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/joinorder/hypergraph/receiver/PlanReceiver.java index 8af8a51709..b4629ef9de 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/joinorder/hypergraph/receiver/PlanReceiver.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/joinorder/hypergraph/receiver/PlanReceiver.java @@ -198,7 +198,7 @@ public class PlanReceiver implements AbstractReceiver { private LogicalPlan proposeJoin(JoinType joinType, Plan left, Plan right, List hashConjuncts, List otherConjuncts) { - return new LogicalJoin<>(joinType, hashConjuncts, otherConjuncts, left, right); + return new LogicalJoin<>(joinType, hashConjuncts, otherConjuncts, left, right, null); } @Override diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java index eee7c787c6..bc5926f263 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java @@ -2907,7 +2907,7 @@ public class LogicalPlanBuilder extends DorisParserBaseVisitor { distributeHint, Optional.empty(), last, - plan(join.relationPrimary())); + plan(join.relationPrimary()), null); } else { last = new UsingJoin<>(joinType, last, plan(join.relationPrimary()), ImmutableList.of(), ids, distributeHint); @@ -3025,7 +3025,7 @@ public class LogicalPlanBuilder extends DorisParserBaseVisitor { new DistributeHint(DistributeType.NONE), Optional.empty(), left, - right); + right, null); // TODO: pivot and lateral view } return left; diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/pre/PlanPreprocessors.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/pre/PlanPreprocessors.java index dad0a4d07f..c962c55b55 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/pre/PlanPreprocessors.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/pre/PlanPreprocessors.java @@ -43,11 +43,16 @@ public class PlanPreprocessors { return resultPlan; } + /** + * get preprocessors before doing optimize + * @return preprocessors + */ public List getProcessors() { // add processor if we need return ImmutableList.of( new TurnOffPipelineForDml(), - new TurnOffPageCacheForInsertIntoSelect() + new TurnOffPageCacheForInsertIntoSelect(), + new PullUpSubqueryAliasToCTE() ); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/pre/PullUpSubqueryAliasToCTE.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/pre/PullUpSubqueryAliasToCTE.java new file mode 100644 index 0000000000..e5d5c0fdf9 --- /dev/null +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/pre/PullUpSubqueryAliasToCTE.java @@ -0,0 +1,76 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package org.apache.doris.nereids.processor.pre; + +import org.apache.doris.nereids.StatementContext; +import org.apache.doris.nereids.analyzer.UnboundRelation; +import org.apache.doris.nereids.analyzer.UnboundResultSink; +import org.apache.doris.nereids.trees.expressions.StatementScopeIdGenerator; +import org.apache.doris.nereids.trees.plans.Plan; +import org.apache.doris.nereids.trees.plans.logical.LogicalCTE; +import org.apache.doris.nereids.trees.plans.logical.LogicalPlan; +import org.apache.doris.nereids.trees.plans.logical.LogicalSelectHint; +import org.apache.doris.nereids.trees.plans.logical.LogicalSubQueryAlias; + +import java.util.ArrayList; +import java.util.List; + +/** + * TODO turnoff pipeline for any dml temporary, remove this pre-process when pipeline-sink is ok. + */ +public class PullUpSubqueryAliasToCTE extends PlanPreprocessor { + private List> aliasQueries = new ArrayList<>(); + + @Override + public Plan visitUnboundResultSink(UnboundResultSink unboundResultSink, + StatementContext context) { + Plan topPlan = visitChildren(this, unboundResultSink, context); + if (!aliasQueries.isEmpty()) { + return topPlan.withChildren( + new LogicalCTE<>(aliasQueries, (LogicalPlan) ((UnboundResultSink) topPlan).child())); + } + return topPlan; + } + + @Override + public Plan visitLogicalSubQueryAlias(LogicalSubQueryAlias alias, + StatementContext context) { + if (alias.child() instanceof LogicalSelectHint + && ((LogicalSelectHint) alias.child()).isIncludeLeading()) { + aliasQueries.add((LogicalSubQueryAlias) alias); + List tableName = new ArrayList<>(); + tableName.add(alias.getAlias()); + return new UnboundRelation(StatementScopeIdGenerator.newRelationId(), tableName); + } + return alias; + } + + @Override + public Plan visitLogicalCTE(LogicalCTE logicalCTE, StatementContext context) { + List> subQueryAliases = logicalCTE.getAliasQueries(); + for (LogicalSubQueryAlias subQueryAlias : subQueryAliases) { + Plan newSubQueryAlias = subQueryAlias.accept(new PullUpSubqueryAliasToCTE(), context); + if (newSubQueryAlias instanceof LogicalSubQueryAlias) { + subQueryAlias = (LogicalSubQueryAlias) newSubQueryAlias; + } else { + subQueryAlias = new LogicalSubQueryAlias<>(subQueryAlias.getAlias(), newSubQueryAlias); + } + } + return visitChildren(this, logicalCTE, context); + } +} diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindExpression.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindExpression.java index f31f1f15e1..9704de7e25 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindExpression.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindExpression.java @@ -184,7 +184,7 @@ public class BindExpression implements AnalysisRuleFactory { ? JoinType.INNER_JOIN : using.getJoinType(), using.getHashJoinConjuncts(), using.getOtherJoinConjuncts(), using.getDistributeHint(), using.getMarkJoinSlotReference(), - using.children()); + using.children(), null); List unboundSlots = lj.getHashJoinConjuncts(); Set slotNames = new HashSet<>(); List leftOutput = new ArrayList<>(lj.left().getOutput()); @@ -216,7 +216,7 @@ public class BindExpression implements AnalysisRuleFactory { for (int i = 0; i < size; i++) { hashEqExpr.add(new EqualTo(leftSlots.get(i), rightSlots.get(i))); } - return lj.withJoinConjuncts(hashEqExpr, lj.getOtherJoinConjuncts()); + return lj.withJoinConjuncts(hashEqExpr, lj.getOtherJoinConjuncts(), null); }) ), RuleType.BINDING_JOIN_SLOT.build( @@ -234,7 +234,7 @@ public class BindExpression implements AnalysisRuleFactory { .collect(Collectors.toList()); return new LogicalJoin<>(join.getJoinType(), hashJoinConjuncts, cond, join.getDistributeHint(), join.getMarkJoinSlotReference(), - join.children()); + join.children(), null); }) ), RuleType.BINDING_AGGREGATE_SLOT.build( diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/EliminateLogicalSelectHint.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/EliminateLogicalSelectHint.java index a11d52e2d6..9ca2070949 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/EliminateLogicalSelectHint.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/EliminateLogicalSelectHint.java @@ -126,7 +126,8 @@ public class EliminateLogicalSelectHint extends OneRewriteRuleFactory { } statementContext.addHint(hint); context.getHintMap().put("Leading", hint); - if (hints.get("ordered") != null || ConnectContext.get().getSessionVariable().isDisableJoinReorder()) { + if (hints.get("ordered") != null || ConnectContext.get().getSessionVariable().isDisableJoinReorder() + || context.isLeadingDisableJoinReorder()) { context.setLeadingJoin(false); hint.setStatus(Hint.HintStatus.UNUSED); } else { diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/LeadingJoin.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/LeadingJoin.java index 8332016346..c8b19a1e9d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/LeadingJoin.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/LeadingJoin.java @@ -17,7 +17,6 @@ package org.apache.doris.nereids.rules.analysis; -import org.apache.doris.common.DdlException; import org.apache.doris.nereids.hint.Hint; import org.apache.doris.nereids.hint.LeadingHint; import org.apache.doris.nereids.jobs.joinorder.hypergraph.bitmap.LongBitmap; @@ -25,7 +24,6 @@ import org.apache.doris.nereids.rules.Rule; import org.apache.doris.nereids.rules.RuleType; import org.apache.doris.nereids.rules.rewrite.RewriteRuleFactory; import org.apache.doris.nereids.trees.plans.Plan; -import org.apache.doris.qe.ConnectContext; import com.google.common.collect.ImmutableList; @@ -40,9 +38,8 @@ public class LeadingJoin implements RewriteRuleFactory { public List buildRules() { return ImmutableList.of( logicalJoin() - .whenNot(join -> ConnectContext.get().getSessionVariable().isDisableJoinReorder()) .thenApply(ctx -> { - if (!ctx.cascadesContext.isLeadingJoin()) { + if (!ctx.cascadesContext.isLeadingJoin() || ctx.cascadesContext.isLeadingDisableJoinReorder()) { return ctx.root; } Hint leadingHint = ctx.cascadesContext.getHintMap().get("Leading"); @@ -52,13 +49,8 @@ public class LeadingJoin implements RewriteRuleFactory { && leadingHint.isSuccess()) { Plan leadingJoin = ((LeadingHint) leadingHint).generateLeadingJoinPlan(); if (leadingHint.isSuccess() && leadingJoin != null) { - try { - ctx.cascadesContext.getConnectContext().getSessionVariable() - .disableNereidsJoinReorderOnce(); - ctx.cascadesContext.setLeadingJoin(false); - } catch (DdlException e) { - throw new RuntimeException(e); - } + ctx.cascadesContext.setLeadingDisableJoinReorder(true); + ctx.cascadesContext.setLeadingJoin(false); return leadingJoin; } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/SubqueryToApply.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/SubqueryToApply.java index 4bb89588b8..b0f78be54a 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/SubqueryToApply.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/SubqueryToApply.java @@ -261,7 +261,7 @@ public class SubqueryToApply implements AnalysisRuleFactory { newConjuncts.addAll(simpleConjuncts); } Plan newJoin = join.withConjunctsChildren(join.getHashJoinConjuncts(), - newConjuncts.build(), leftChildPlan, rightChildPlan); + newConjuncts.build(), leftChildPlan, rightChildPlan, null); return newJoin; })) ); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/InnerJoinLAsscom.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/InnerJoinLAsscom.java index 21060fec96..e044273871 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/InnerJoinLAsscom.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/InnerJoinLAsscom.java @@ -80,10 +80,10 @@ public class InnerJoinLAsscom extends OneExplorationRuleFactory { } LogicalJoin newBottomJoin = topJoin.withConjunctsChildren(newBottomHashConjuncts, - newBottomOtherConjuncts, a, c); + newBottomOtherConjuncts, a, c, null); LogicalJoin newTopJoin = bottomJoin.withConjunctsChildren(newTopHashConjuncts, - newTopOtherConjuncts, newBottomJoin, b); + newTopOtherConjuncts, newBottomJoin, b, null); newTopJoin.getJoinReorderContext().copyFrom(topJoin.getJoinReorderContext()); newTopJoin.getJoinReorderContext().setHasLAsscom(true); @@ -96,6 +96,10 @@ public class InnerJoinLAsscom extends OneExplorationRuleFactory { */ public static boolean checkReorder(LogicalJoin topJoin, LogicalJoin bottomJoin, boolean leftZigZag) { + if (topJoin.isLeadingJoin() + || bottomJoin.isLeadingJoin()) { + return false; + } if (leftZigZag) { double bRows = bottomJoin.right().getGroup().getStatistics().getRowCount(); double cRows = topJoin.right().getGroup().getStatistics().getRowCount(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/InnerJoinLAsscomProject.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/InnerJoinLAsscomProject.java index 086e6fb3ab..fc9f8f98a5 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/InnerJoinLAsscomProject.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/InnerJoinLAsscomProject.java @@ -88,7 +88,7 @@ public class InnerJoinLAsscomProject extends OneExplorationRuleFactory { /* ********** new Plan ********** */ LogicalJoin newBottomJoin = topJoin.withConjunctsChildren(newBottomHashConjuncts, - newBottomOtherConjuncts, a, c); + newBottomOtherConjuncts, a, c, null); // merge newTopHashConjuncts newTopOtherConjuncts topJoin.getOutputExprIdSet() Set topUsedExprIds = new HashSet<>(topJoin.getOutputExprIdSet()); @@ -98,7 +98,7 @@ public class InnerJoinLAsscomProject extends OneExplorationRuleFactory { Plan right = CBOUtils.newProject(topUsedExprIds, b); LogicalJoin newTopJoin = bottomJoin.withConjunctsChildren(newTopHashConjuncts, - newTopOtherConjuncts, left, right); + newTopOtherConjuncts, left, right, null); newTopJoin.getJoinReorderContext().copyFrom(topJoin.getJoinReorderContext()); newTopJoin.getJoinReorderContext().setHasLAsscom(true); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/InnerJoinLeftAssociate.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/InnerJoinLeftAssociate.java index 0ec7ba0088..a661db81bf 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/InnerJoinLeftAssociate.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/InnerJoinLeftAssociate.java @@ -85,9 +85,9 @@ public class InnerJoinLeftAssociate extends OneExplorationRuleFactory { // new join. LogicalJoin newBottomJoin = topJoin.withConjunctsChildren( - newBottomHashJoinConjuncts, newBottomOtherJoinConjuncts, a, b); + newBottomHashJoinConjuncts, newBottomOtherJoinConjuncts, a, b, null); LogicalJoin newTopJoin = bottomJoin.withConjunctsChildren( - newTopHashJoinConjuncts, newTopOtherJoinConjuncts, newBottomJoin, c); + newTopHashJoinConjuncts, newTopOtherJoinConjuncts, newBottomJoin, c, null); newTopJoin.getJoinReorderContext().setHasLeftAssociate(true); return newTopJoin; @@ -96,6 +96,10 @@ public class InnerJoinLeftAssociate extends OneExplorationRuleFactory { /** Check JoinReorderContext. */ public static boolean checkReorder(LogicalJoin topJoin) { + if (topJoin.isLeadingJoin() + || JoinExchange.isChildLeadingJoin(topJoin.right())) { + return false; + } return !topJoin.getJoinReorderContext().hasCommute() && !topJoin.getJoinReorderContext().hasLeftAssociate() && !topJoin.getJoinReorderContext().hasRightAssociate() diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/InnerJoinLeftAssociateProject.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/InnerJoinLeftAssociateProject.java index ea66ef8475..45363ea426 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/InnerJoinLeftAssociateProject.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/InnerJoinLeftAssociateProject.java @@ -77,7 +77,7 @@ public class InnerJoinLeftAssociateProject extends OneExplorationRuleFactory { // new join. LogicalJoin newBottomJoin = topJoin.withConjunctsChildren( - newBottomHashConjuncts, newBottomOtherConjuncts, a, b); + newBottomHashConjuncts, newBottomOtherConjuncts, a, b, null); // new Project. Set topUsedExprIds = new HashSet<>(topJoin.getOutputExprIdSet()); @@ -87,7 +87,7 @@ public class InnerJoinLeftAssociateProject extends OneExplorationRuleFactory { Plan right = CBOUtils.newProject(topUsedExprIds, c); LogicalJoin newTopJoin = bottomJoin.withConjunctsChildren( - newTopHashConjuncts, newTopOtherConjuncts, left, right); + newTopHashConjuncts, newTopOtherConjuncts, left, right, null); newTopJoin.getJoinReorderContext().setHasLeftAssociate(true); return CBOUtils.projectOrSelf(ImmutableList.copyOf(topJoin.getOutput()), newTopJoin); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/InnerJoinRightAssociate.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/InnerJoinRightAssociate.java index 0f4d910af7..4fb21bbe37 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/InnerJoinRightAssociate.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/InnerJoinRightAssociate.java @@ -83,9 +83,9 @@ public class InnerJoinRightAssociate extends OneExplorationRuleFactory { } LogicalJoin newBottomJoin = topJoin.withConjunctsChildren( - newBottomHashJoinConjuncts, newBottomOtherJoinConjuncts, b, c); + newBottomHashJoinConjuncts, newBottomOtherJoinConjuncts, b, c, null); LogicalJoin newTopJoin = bottomJoin.withConjunctsChildren(newTopHashJoinConjuncts, - newTopOtherJoinConjuncts, a, newBottomJoin); + newTopOtherJoinConjuncts, a, newBottomJoin, null); newTopJoin.getJoinReorderContext().setHasRightAssociate(true); return newTopJoin; @@ -94,6 +94,10 @@ public class InnerJoinRightAssociate extends OneExplorationRuleFactory { /** Check JoinReorderContext */ public static boolean checkReorder(LogicalJoin topJoin) { + if (topJoin.isLeadingJoin() + || JoinExchange.isChildLeadingJoin(topJoin.left())) { + return false; + } return !topJoin.getJoinReorderContext().hasCommute() && !topJoin.getJoinReorderContext().hasRightAssociate() && !topJoin.getJoinReorderContext().hasLeftAssociate() diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/InnerJoinRightAssociateProject.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/InnerJoinRightAssociateProject.java index 910d5ebd00..916078a0ad 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/InnerJoinRightAssociateProject.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/InnerJoinRightAssociateProject.java @@ -74,7 +74,7 @@ public class InnerJoinRightAssociateProject extends OneExplorationRuleFactory { } LogicalJoin newBottomJoin = topJoin.withConjunctsChildren( - newBottomHashConjuncts, newBottomOtherConjuncts, b, c); + newBottomHashConjuncts, newBottomOtherConjuncts, b, c, null); // new Project. Set topUsedExprIds = new HashSet<>(topJoin.getOutputExprIdSet()); @@ -84,7 +84,7 @@ public class InnerJoinRightAssociateProject extends OneExplorationRuleFactory { Plan right = CBOUtils.newProject(topUsedExprIds, newBottomJoin); LogicalJoin newTopJoin = bottomJoin.withConjunctsChildren( - newTopHashConjuncts, newTopOtherConjuncts, left, right); + newTopHashConjuncts, newTopOtherConjuncts, left, right, null); newTopJoin.getJoinReorderContext().setHasRightAssociate(true); return CBOUtils.projectOrSelf(ImmutableList.copyOf(topJoin.getOutput()), newTopJoin); @@ -95,6 +95,10 @@ public class InnerJoinRightAssociateProject extends OneExplorationRuleFactory { * Check JoinReorderContext */ public static boolean checkReorder(LogicalJoin topJoin) { + if (topJoin.isLeadingJoin() + || ((LogicalJoin) topJoin.left().child(0)).isLeadingJoin()) { + return false; + } return !topJoin.getJoinReorderContext().hasCommute() && !topJoin.getJoinReorderContext().hasRightAssociate() && !topJoin.getJoinReorderContext().hasLeftAssociate() diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/JoinCommute.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/JoinCommute.java index 85ad5a5418..5d402feec2 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/JoinCommute.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/JoinCommute.java @@ -62,7 +62,7 @@ public class JoinCommute extends OneExplorationRuleFactory { .whenNot(LogicalJoin::isMarkJoin) .then(join -> { LogicalJoin newJoin = join.withTypeChildren(join.getJoinType().swap(), - join.right(), join.left()); + join.right(), join.left(), null); newJoin.getJoinReorderContext().copyFrom(join.getJoinReorderContext()); newJoin.getJoinReorderContext().setHasCommute(true); if (swapType == SwapType.ZIG_ZAG && isNotBottomJoin(join)) { @@ -100,6 +100,9 @@ public class JoinCommute extends OneExplorationRuleFactory { } private boolean checkReorder(LogicalJoin join) { + if (join.isLeadingJoin()) { + return false; + } return !join.getJoinReorderContext().hasCommute() && !join.getJoinReorderContext().hasExchange(); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/JoinExchange.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/JoinExchange.java index b24724c3f8..4f37a28efd 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/JoinExchange.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/JoinExchange.java @@ -28,6 +28,7 @@ import org.apache.doris.nereids.trees.plans.GroupPlan; import org.apache.doris.nereids.trees.plans.JoinType; import org.apache.doris.nereids.trees.plans.Plan; import org.apache.doris.nereids.trees.plans.logical.LogicalJoin; +import org.apache.doris.nereids.trees.plans.logical.LogicalProject; import org.apache.doris.nereids.util.JoinUtils; import com.google.common.collect.Lists; @@ -88,14 +89,14 @@ public class JoinExchange extends OneExplorationRuleFactory { LogicalJoin newLeftJoin = new LogicalJoin<>(JoinType.INNER_JOIN, newLeftJoinHashJoinConjuncts, newLeftJoinOtherJoinConjuncts, - new DistributeHint(DistributeType.NONE), a, c); + new DistributeHint(DistributeType.NONE), a, c, null); LogicalJoin newRightJoin = new LogicalJoin<>(JoinType.INNER_JOIN, newRightJoinHashJoinConjuncts, newRightJoinOtherJoinConjuncts, - new DistributeHint(DistributeType.NONE), b, d); + new DistributeHint(DistributeType.NONE), b, d, null); LogicalJoin newTopJoin = new LogicalJoin<>(JoinType.INNER_JOIN, newTopJoinHashJoinConjuncts, newTopJoinOtherJoinConjuncts, new DistributeHint(DistributeType.NONE), - newLeftJoin, newRightJoin); + newLeftJoin, newRightJoin, null); newTopJoin.getJoinReorderContext().setHasExchange(true); return newTopJoin; @@ -106,6 +107,10 @@ public class JoinExchange extends OneExplorationRuleFactory { * check reorder masks. */ public static boolean checkReorder(LogicalJoin topJoin) { + if (topJoin.isLeadingJoin() + || isChildLeadingJoin(topJoin.left()) || isChildLeadingJoin(topJoin.right())) { + return false; + } if (topJoin.getJoinReorderContext().hasCommute() || topJoin.getJoinReorderContext().hasLeftAssociate() || topJoin.getJoinReorderContext().hasRightAssociate() @@ -116,6 +121,24 @@ public class JoinExchange extends OneExplorationRuleFactory { } } + /** + * check whether a child plan is generate by leading + * @param child input plan by rule + * @return boolean value if child is generate by leading + */ + public static boolean isChildLeadingJoin(Plan child) { + if (child instanceof LogicalProject) { + if (((LogicalJoin) (child.child(0))).isLeadingJoin()) { + return true; + } + } else if (child instanceof LogicalJoin) { + if (((LogicalJoin) child).isLeadingJoin()) { + return true; + } + } + return false; + } + /** * split condition. */ diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/JoinExchangeBothProject.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/JoinExchangeBothProject.java index ec9f016863..97e37c3716 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/JoinExchangeBothProject.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/JoinExchangeBothProject.java @@ -92,10 +92,10 @@ public class JoinExchangeBothProject extends OneExplorationRuleFactory { LogicalJoin newLeftJoin = new LogicalJoin<>(JoinType.INNER_JOIN, newLeftJoinHashJoinConjuncts, newLeftJoinOtherJoinConjuncts, - new DistributeHint(DistributeType.NONE), a, c); + new DistributeHint(DistributeType.NONE), a, c, null); LogicalJoin newRightJoin = new LogicalJoin<>(JoinType.INNER_JOIN, newRightJoinHashJoinConjuncts, newRightJoinOtherJoinConjuncts, - new DistributeHint(DistributeType.NONE), b, d); + new DistributeHint(DistributeType.NONE), b, d, null); Set topUsedExprIds = new HashSet<>(topJoin.getOutputExprIdSet()); newTopJoinHashJoinConjuncts.forEach(expr -> topUsedExprIds.addAll(expr.getInputSlotExprIds())); newTopJoinOtherJoinConjuncts.forEach(expr -> topUsedExprIds.addAll(expr.getInputSlotExprIds())); @@ -104,7 +104,7 @@ public class JoinExchangeBothProject extends OneExplorationRuleFactory { LogicalJoin newTopJoin = new LogicalJoin<>(JoinType.INNER_JOIN, newTopJoinHashJoinConjuncts, newTopJoinOtherJoinConjuncts, new DistributeHint(DistributeType.NONE), - left, right); + left, right, null); newTopJoin.getJoinReorderContext().setHasExchange(true); return CBOUtils.projectOrSelf(ImmutableList.copyOf(topJoin.getOutput()), newTopJoin); @@ -115,6 +115,11 @@ public class JoinExchangeBothProject extends OneExplorationRuleFactory { * check reorder masks. */ public static boolean checkReorder(LogicalJoin topJoin) { + if (topJoin.isLeadingJoin() + || ((LogicalJoin) topJoin.left().child(0)).isLeadingJoin() + || ((LogicalJoin) topJoin.right().child(0)).isLeadingJoin()) { + return false; + } if (topJoin.getJoinReorderContext().hasCommute() || topJoin.getJoinReorderContext().hasLeftAssociate() || topJoin.getJoinReorderContext().hasRightAssociate() diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/JoinExchangeLeftProject.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/JoinExchangeLeftProject.java index 0010943ef5..b8f88e08d6 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/JoinExchangeLeftProject.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/JoinExchangeLeftProject.java @@ -92,10 +92,10 @@ public class JoinExchangeLeftProject extends OneExplorationRuleFactory { LogicalJoin newLeftJoin = new LogicalJoin<>(JoinType.INNER_JOIN, newLeftJoinHashJoinConjuncts, newLeftJoinOtherJoinConjuncts, - new DistributeHint(DistributeType.NONE), a, c); + new DistributeHint(DistributeType.NONE), a, c, null); LogicalJoin newRightJoin = new LogicalJoin<>(JoinType.INNER_JOIN, newRightJoinHashJoinConjuncts, newRightJoinOtherJoinConjuncts, - new DistributeHint(DistributeType.NONE), b, d); + new DistributeHint(DistributeType.NONE), b, d, null); Set topUsedExprIds = new HashSet<>(topJoin.getOutputExprIdSet()); newTopJoinHashJoinConjuncts.forEach(expr -> topUsedExprIds.addAll(expr.getInputSlotExprIds())); newTopJoinOtherJoinConjuncts.forEach(expr -> topUsedExprIds.addAll(expr.getInputSlotExprIds())); @@ -104,24 +104,10 @@ public class JoinExchangeLeftProject extends OneExplorationRuleFactory { LogicalJoin newTopJoin = new LogicalJoin<>(JoinType.INNER_JOIN, newTopJoinHashJoinConjuncts, newTopJoinOtherJoinConjuncts, new DistributeHint(DistributeType.NONE), - left, right); + left, right, null); newTopJoin.getJoinReorderContext().setHasExchange(true); return CBOUtils.projectOrSelf(ImmutableList.copyOf(topJoin.getOutput()), newTopJoin); }).toRule(RuleType.LOGICAL_JOIN_EXCHANGE_LEFT_PROJECT); } - - /** - * check reorder masks. - */ - public static boolean checkReorder(LogicalJoin topJoin) { - if (topJoin.getJoinReorderContext().hasCommute() - || topJoin.getJoinReorderContext().hasLeftAssociate() - || topJoin.getJoinReorderContext().hasRightAssociate() - || topJoin.getJoinReorderContext().hasExchange()) { - return false; - } else { - return true; - } - } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/JoinExchangeRightProject.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/JoinExchangeRightProject.java index 8ba74373e5..dce4f75724 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/JoinExchangeRightProject.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/JoinExchangeRightProject.java @@ -92,10 +92,10 @@ public class JoinExchangeRightProject extends OneExplorationRuleFactory { LogicalJoin newLeftJoin = new LogicalJoin<>(JoinType.INNER_JOIN, newLeftJoinHashJoinConjuncts, newLeftJoinOtherJoinConjuncts, - new DistributeHint(DistributeType.NONE), a, c); + new DistributeHint(DistributeType.NONE), a, c, null); LogicalJoin newRightJoin = new LogicalJoin<>(JoinType.INNER_JOIN, newRightJoinHashJoinConjuncts, newRightJoinOtherJoinConjuncts, - new DistributeHint(DistributeType.NONE), b, d); + new DistributeHint(DistributeType.NONE), b, d, null); Set topUsedExprIds = new HashSet<>(topJoin.getOutputExprIdSet()); newTopJoinHashJoinConjuncts.forEach(expr -> topUsedExprIds.addAll(expr.getInputSlotExprIds())); newTopJoinOtherJoinConjuncts.forEach(expr -> topUsedExprIds.addAll(expr.getInputSlotExprIds())); @@ -104,7 +104,7 @@ public class JoinExchangeRightProject extends OneExplorationRuleFactory { LogicalJoin newTopJoin = new LogicalJoin<>(JoinType.INNER_JOIN, newTopJoinHashJoinConjuncts, newTopJoinOtherJoinConjuncts, new DistributeHint(DistributeType.NONE), - left, right); + left, right, null); newTopJoin.getJoinReorderContext().setHasExchange(true); return CBOUtils.projectOrSelf(ImmutableList.copyOf(topJoin.getOutput()), newTopJoin); @@ -115,6 +115,10 @@ public class JoinExchangeRightProject extends OneExplorationRuleFactory { * check reorder masks. */ public static boolean checkReorder(LogicalJoin topJoin) { + if (topJoin.isLeadingJoin() + || ((LogicalJoin) topJoin.right().child(0)).isLeadingJoin()) { + return false; + } if (topJoin.getJoinReorderContext().hasCommute() || topJoin.getJoinReorderContext().hasLeftAssociate() || topJoin.getJoinReorderContext().hasRightAssociate() diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/JoinReorderContext.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/JoinReorderContext.java index 373fbbe8d9..376e75a7aa 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/JoinReorderContext.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/JoinReorderContext.java @@ -39,6 +39,8 @@ public class JoinReorderContext { private boolean hasRightAssociate = false; private boolean hasLeftAssociate = false; + private boolean isLeadingJoin = false; + public JoinReorderContext() { } @@ -52,6 +54,7 @@ public class JoinReorderContext { this.hasLeftAssociate = joinReorderContext.hasLeftAssociate; this.hasRightAssociate = joinReorderContext.hasRightAssociate; this.hasCommuteZigZag = joinReorderContext.hasCommuteZigZag; + this.isLeadingJoin = joinReorderContext.isLeadingJoin; } /** @@ -64,6 +67,7 @@ public class JoinReorderContext { hasExchange = false; hasRightAssociate = false; hasLeftAssociate = false; + isLeadingJoin = false; } public boolean hasCommute() { @@ -113,4 +117,12 @@ public class JoinReorderContext { public void setHasCommuteZigZag(boolean hasCommuteZigZag) { this.hasCommuteZigZag = hasCommuteZigZag; } + + public boolean isLeadingJoin() { + return isLeadingJoin; + } + + public void setLeadingJoin(boolean leadingJoin) { + isLeadingJoin = leadingJoin; + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/LogicalJoinSemiJoinTranspose.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/LogicalJoinSemiJoinTranspose.java index ea4bc59dbb..2504cd18d3 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/LogicalJoinSemiJoinTranspose.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/LogicalJoinSemiJoinTranspose.java @@ -52,8 +52,8 @@ public class LogicalJoinSemiJoinTranspose implements ExplorationRuleFactory { GroupPlan b = bottomJoin.right(); GroupPlan c = topJoin.right(); - Plan newBottomJoin = topJoin.withChildrenNoContext(a, c); - return bottomJoin.withChildrenNoContext(newBottomJoin, b); + Plan newBottomJoin = topJoin.withChildrenNoContext(a, c, null); + return bottomJoin.withChildrenNoContext(newBottomJoin, b, null); }).toRule(RuleType.LOGICAL_JOIN_LOGICAL_SEMI_JOIN_TRANSPOSE_LEFT), logicalJoin(group(), logicalJoin()) @@ -69,8 +69,8 @@ public class LogicalJoinSemiJoinTranspose implements ExplorationRuleFactory { GroupPlan b = bottomJoin.left(); GroupPlan c = bottomJoin.right(); - Plan newBottomJoin = topJoin.withChildrenNoContext(a, b); - return bottomJoin.withChildrenNoContext(newBottomJoin, c); + Plan newBottomJoin = topJoin.withChildrenNoContext(a, b, null); + return bottomJoin.withChildrenNoContext(newBottomJoin, c, null); }).toRule(RuleType.LOGICAL_JOIN_LOGICAL_SEMI_JOIN_TRANSPOSE_RIGHT) ); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/LogicalJoinSemiJoinTransposeProject.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/LogicalJoinSemiJoinTransposeProject.java index 455f526aec..cf2889095b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/LogicalJoinSemiJoinTransposeProject.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/LogicalJoinSemiJoinTransposeProject.java @@ -55,8 +55,8 @@ public class LogicalJoinSemiJoinTransposeProject implements ExplorationRuleFacto GroupPlan c = topJoin.right(); // Discard this project, because it is useless. - Plan newBottomJoin = topJoin.withChildrenNoContext(a, c); - Plan newTopJoin = bottomJoin.withChildrenNoContext(newBottomJoin, b); + Plan newBottomJoin = topJoin.withChildrenNoContext(a, c, null); + Plan newTopJoin = bottomJoin.withChildrenNoContext(newBottomJoin, b, null); return CBOUtils.projectOrSelf(ImmutableList.copyOf(topJoin.getOutput()), newTopJoin); }).toRule(RuleType.LOGICAL_JOIN_LOGICAL_SEMI_JOIN_TRANSPOSE_LEFT_PROJECT), @@ -76,8 +76,8 @@ public class LogicalJoinSemiJoinTransposeProject implements ExplorationRuleFacto GroupPlan c = bottomJoin.right(); // Discard this project, because it is useless. - Plan newBottomJoin = topJoin.withChildrenNoContext(a, b); - Plan newTopJoin = bottomJoin.withChildrenNoContext(newBottomJoin, c); + Plan newBottomJoin = topJoin.withChildrenNoContext(a, b, null); + Plan newTopJoin = bottomJoin.withChildrenNoContext(newBottomJoin, c, null); return CBOUtils.projectOrSelf(ImmutableList.copyOf(topJoin.getOutput()), newTopJoin); }).toRule(RuleType.LOGICAL_JOIN_LOGICAL_SEMI_JOIN_TRANSPOSE_RIGHT_PROJECT) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/OuterJoinAssoc.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/OuterJoinAssoc.java index 3208654fa7..5b7f430ca5 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/OuterJoinAssoc.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/OuterJoinAssoc.java @@ -84,9 +84,9 @@ public class OuterJoinAssoc extends OneExplorationRuleFactory { } } - LogicalJoin newBottomJoin = topJoin.withChildrenNoContext(b, c); + LogicalJoin newBottomJoin = topJoin.withChildrenNoContext(b, c, null); newBottomJoin.getJoinReorderContext().copyFrom(bottomJoin.getJoinReorderContext()); - LogicalJoin newTopJoin = bottomJoin.withChildrenNoContext(a, newBottomJoin); + LogicalJoin newTopJoin = bottomJoin.withChildrenNoContext(a, newBottomJoin, null); newTopJoin.getJoinReorderContext().copyFrom(topJoin.getJoinReorderContext()); setReorderContext(newTopJoin, newBottomJoin); return newTopJoin; diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/OuterJoinAssocProject.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/OuterJoinAssocProject.java index 5cd22058c0..709cd129c8 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/OuterJoinAssocProject.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/OuterJoinAssocProject.java @@ -86,7 +86,7 @@ public class OuterJoinAssocProject extends OneExplorationRuleFactory { } /* ********** new Plan ********** */ - LogicalJoin newBottomJoin = topJoin.withChildrenNoContext(b, c); + LogicalJoin newBottomJoin = topJoin.withChildrenNoContext(b, c, null); newBottomJoin.getJoinReorderContext().copyFrom(bottomJoin.getJoinReorderContext()); Set topUsedExprIds = new HashSet<>(topJoin.getOutputExprIdSet()); @@ -95,7 +95,7 @@ public class OuterJoinAssocProject extends OneExplorationRuleFactory { Plan left = CBOUtils.newProject(topUsedExprIds, a); Plan right = CBOUtils.newProject(topUsedExprIds, newBottomJoin); - LogicalJoin newTopJoin = bottomJoin.withChildrenNoContext(left, right); + LogicalJoin newTopJoin = bottomJoin.withChildrenNoContext(left, right, null); newTopJoin.getJoinReorderContext().copyFrom(topJoin.getJoinReorderContext()); OuterJoinAssoc.setReorderContext(newTopJoin, newBottomJoin); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/OuterJoinLAsscom.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/OuterJoinLAsscom.java index 729c1efa2e..b2485171f5 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/OuterJoinLAsscom.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/OuterJoinLAsscom.java @@ -71,12 +71,12 @@ public class OuterJoinLAsscom extends OneExplorationRuleFactory { GroupPlan b = bottomJoin.right(); GroupPlan c = topJoin.right(); - LogicalJoin newBottomJoin = topJoin.withChildrenNoContext(a, c); + LogicalJoin newBottomJoin = topJoin.withChildrenNoContext(a, c, null); newBottomJoin.getJoinReorderContext().copyFrom(bottomJoin.getJoinReorderContext()); newBottomJoin.getJoinReorderContext().setHasLAsscom(false); newBottomJoin.getJoinReorderContext().setHasCommute(false); - LogicalJoin newTopJoin = bottomJoin.withChildrenNoContext(newBottomJoin, b); + LogicalJoin newTopJoin = bottomJoin.withChildrenNoContext(newBottomJoin, b, null); newTopJoin.getJoinReorderContext().copyFrom(topJoin.getJoinReorderContext()); newTopJoin.getJoinReorderContext().setHasLAsscom(true); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/OuterJoinLAsscomProject.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/OuterJoinLAsscomProject.java index 8349559bbc..4e2833f2ed 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/OuterJoinLAsscomProject.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/OuterJoinLAsscomProject.java @@ -66,7 +66,7 @@ public class OuterJoinLAsscomProject extends OneExplorationRuleFactory { GroupPlan c = topJoin.right(); /* ********** new Plan ********** */ - LogicalJoin newBottomJoin = topJoin.withChildrenNoContext(a, c); + LogicalJoin newBottomJoin = topJoin.withChildrenNoContext(a, c, null); newBottomJoin.getJoinReorderContext().copyFrom(bottomJoin.getJoinReorderContext()); newBottomJoin.getJoinReorderContext().setHasLAsscom(false); newBottomJoin.getJoinReorderContext().setHasCommute(false); @@ -77,7 +77,7 @@ public class OuterJoinLAsscomProject extends OneExplorationRuleFactory { Plan left = CBOUtils.newProject(topUsedExprIds, newBottomJoin); Plan right = CBOUtils.newProject(topUsedExprIds, b); - LogicalJoin newTopJoin = bottomJoin.withChildrenNoContext(left, right); + LogicalJoin newTopJoin = bottomJoin.withChildrenNoContext(left, right, null); newTopJoin.getJoinReorderContext().copyFrom(topJoin.getJoinReorderContext()); newTopJoin.getJoinReorderContext().setHasLAsscom(true); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/SemiJoinSemiJoinTranspose.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/SemiJoinSemiJoinTranspose.java index a2fedbd1be..9dbc689457 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/SemiJoinSemiJoinTranspose.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/SemiJoinSemiJoinTranspose.java @@ -70,8 +70,8 @@ public class SemiJoinSemiJoinTranspose extends OneExplorationRuleFactory { GroupPlan b = bottomJoin.right(); GroupPlan c = topJoin.right(); - Plan newBottomJoin = topJoin.withChildrenNoContext(a, c); - Plan newTopJoin = bottomJoin.withChildrenNoContext(newBottomJoin, b); + Plan newBottomJoin = topJoin.withChildrenNoContext(a, c, null); + Plan newTopJoin = bottomJoin.withChildrenNoContext(newBottomJoin, b, null); return newTopJoin; }).toRule(RuleType.LOGICAL_SEMI_JOIN_SEMI_JOIN_TRANSPOSE); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/SemiJoinSemiJoinTransposeProject.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/SemiJoinSemiJoinTransposeProject.java index 8c16d529e2..f7cc68ef8a 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/SemiJoinSemiJoinTransposeProject.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/SemiJoinSemiJoinTransposeProject.java @@ -72,13 +72,13 @@ public class SemiJoinSemiJoinTransposeProject extends OneExplorationRuleFactory acProjects.add(slot); } }); - LogicalJoin newBottomSemi = topSemi.withChildrenNoContext(a, c); + LogicalJoin newBottomSemi = topSemi.withChildrenNoContext(a, c, null); newBottomSemi.getJoinReorderContext().copyFrom(bottomSemi.getJoinReorderContext()); newBottomSemi.getJoinReorderContext().setHasCommute(false); newBottomSemi.getJoinReorderContext().setHasLAsscom(false); LogicalProject acProject = new LogicalProject<>(Lists.newArrayList(acProjects), newBottomSemi); - LogicalJoin newTopSemi = bottomSemi.withChildrenNoContext(acProject, b); + LogicalJoin newTopSemi = bottomSemi.withChildrenNoContext(acProject, b, null); newTopSemi.getJoinReorderContext().copyFrom(topSemi.getJoinReorderContext()); newTopSemi.getJoinReorderContext().setHasLAsscom(true); return CBOUtils.projectOrSelf(ImmutableList.copyOf(topSemi.getOutput()), newTopSemi); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/ExpressionRewrite.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/ExpressionRewrite.java index 116cf426a4..912793e61d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/ExpressionRewrite.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/ExpressionRewrite.java @@ -197,7 +197,8 @@ public class ExpressionRewrite implements RewriteRuleFactory { return new LogicalJoin<>(join.getJoinType(), newHashJoinConjuncts.second, newOtherJoinConjuncts.second, newMarkJoinConjuncts.second, - join.getDistributeHint(), join.getMarkJoinSlotReference(), join.children()); + join.getDistributeHint(), join.getMarkJoinSlotReference(), join.children(), + join.getJoinReorderContext()); }).toRule(RuleType.REWRITE_JOIN_EXPRESSION); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/AdjustConjunctsReturnType.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/AdjustConjunctsReturnType.java index a3c4263b2b..fcf3e82737 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/AdjustConjunctsReturnType.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/AdjustConjunctsReturnType.java @@ -67,6 +67,6 @@ public class AdjustConjunctsReturnType extends DefaultPlanRewriter impleme List markConjuncts = join.getMarkJoinConjuncts().stream() .map(expr -> TypeCoercionUtils.castIfNotSameType(expr, BooleanType.INSTANCE)) .collect(Collectors.toList()); - return join.withJoinConjuncts(hashConjuncts, otherConjuncts, markConjuncts); + return join.withJoinConjuncts(hashConjuncts, otherConjuncts, markConjuncts, join.getJoinReorderContext()); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/AdjustNullable.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/AdjustNullable.java index 7bb4251f16..f30d55ad0f 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/AdjustNullable.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/AdjustNullable.java @@ -133,7 +133,8 @@ public class AdjustNullable extends DefaultPlanRewriter> imple markConjuncts = updateExpressions(join.getMarkJoinConjuncts(), replaceMap); } List otherConjuncts = updateExpressions(join.getOtherJoinConjuncts(), replaceMap); - return join.withJoinConjuncts(hashConjuncts, otherConjuncts, markConjuncts).recomputeLogicalProperties(); + return join.withJoinConjuncts(hashConjuncts, otherConjuncts, markConjuncts, + join.getJoinReorderContext()).recomputeLogicalProperties(); } @Override diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ConvertInnerOrCrossJoin.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ConvertInnerOrCrossJoin.java index 6f67ce9fc9..dc96e5ff06 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ConvertInnerOrCrossJoin.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ConvertInnerOrCrossJoin.java @@ -39,12 +39,12 @@ public class ConvertInnerOrCrossJoin implements RewriteRuleFactory { innerLogicalJoin() .when(join -> join.getHashJoinConjuncts().isEmpty() && join.getOtherJoinConjuncts().isEmpty() && join.getMarkJoinConjuncts().isEmpty()) - .then(join -> join.withJoinType(JoinType.CROSS_JOIN)) + .then(join -> join.withJoinType(JoinType.CROSS_JOIN, join.getJoinReorderContext())) .toRule(RuleType.INNER_TO_CROSS_JOIN), crossLogicalJoin() .when(join -> !join.getHashJoinConjuncts().isEmpty() || !join.getOtherJoinConjuncts().isEmpty() || !join.getMarkJoinConjuncts().isEmpty()) - .then(join -> join.withJoinType(JoinType.INNER_JOIN)) + .then(join -> join.withJoinType(JoinType.INNER_JOIN, join.getJoinReorderContext())) .toRule(RuleType.CROSS_TO_INNER_JOIN) ); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ConvertOuterJoinToAntiJoin.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ConvertOuterJoinToAntiJoin.java index 74bd7e2914..0ebc840e7d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ConvertOuterJoinToAntiJoin.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ConvertOuterJoinToAntiJoin.java @@ -84,7 +84,7 @@ public class ConvertOuterJoinToAntiJoin extends OneRewriteRuleFactory { .flatMap(p -> p.getInputSlots().stream()) .anyMatch(join.right().getOutputSet()::contains); if (!containRightSlot) { - res = join.withJoinType(JoinType.LEFT_ANTI_JOIN); + res = join.withJoinType(JoinType.LEFT_ANTI_JOIN, join.getJoinReorderContext()); res = predicates.isEmpty() ? res : filter.withConjuncts(predicates).withChildren(res); res = project.withChildren(res); } @@ -98,7 +98,7 @@ public class ConvertOuterJoinToAntiJoin extends OneRewriteRuleFactory { .flatMap(p -> p.getInputSlots().stream()) .anyMatch(join.left().getOutputSet()::contains); if (!containLeftSlot) { - res = join.withJoinType(JoinType.RIGHT_ANTI_JOIN); + res = join.withJoinType(JoinType.RIGHT_ANTI_JOIN, join.getJoinReorderContext()); res = predicates.isEmpty() ? res : filter.withConjuncts(predicates).withChildren(res); res = project.withChildren(res); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateDedupJoinCondition.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateDedupJoinCondition.java index f8baaefb39..0486d7b1ef 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateDedupJoinCondition.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateDedupJoinCondition.java @@ -44,7 +44,8 @@ public class EliminateDedupJoinCondition extends OneRewriteRuleFactory { && dedupMarkJoinConjuncts.size() == join.getMarkJoinConjuncts().size()) { return null; } - return join.withJoinConjuncts(dedupHashJoinConjuncts, dedupOtherJoinConjuncts, dedupMarkJoinConjuncts); + return join.withJoinConjuncts(dedupHashJoinConjuncts, dedupOtherJoinConjuncts, dedupMarkJoinConjuncts, + join.getJoinReorderContext()); }).toRule(RuleType.ELIMINATE_DEDUP_JOIN_CONDITION); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateJoinCondition.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateJoinCondition.java index c997ad328a..23625afb58 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateJoinCondition.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateJoinCondition.java @@ -47,7 +47,8 @@ public class EliminateJoinCondition extends OneRewriteRuleFactory { && markJoinConjuncts.size() == join.getMarkJoinConjuncts().size()) { return null; } - return join.withJoinConjuncts(hashJoinConjuncts, otherJoinConjuncts, markJoinConjuncts); + return join.withJoinConjuncts(hashJoinConjuncts, otherJoinConjuncts, markJoinConjuncts, + join.getJoinReorderContext()); }).toRule(RuleType.ELIMINATE_JOIN_CONDITION); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateMarkJoin.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateMarkJoin.java index a5d59291cc..2c5a4bbdd1 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateMarkJoin.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateMarkJoin.java @@ -54,6 +54,6 @@ public class EliminateMarkJoin extends OneRewriteRuleFactory { newHashConjuncts.addAll(join.getHashJoinConjuncts()); newHashConjuncts.addAll(join.getMarkJoinConjuncts()); return join.withJoinConjuncts(newHashConjuncts.build(), join.getOtherJoinConjuncts(), - ExpressionUtils.EMPTY_CONDITION); + ExpressionUtils.EMPTY_CONDITION, join.getJoinReorderContext()); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateNotNull.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateNotNull.java index 5bfc8778d2..db95d1fefa 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateNotNull.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateNotNull.java @@ -70,7 +70,8 @@ public class EliminateNotNull implements RewriteRuleFactory { if (newOtherJoinConjuncts.size() == join.getOtherJoinConjuncts().size()) { return null; } - return join.withJoinConjuncts(join.getHashJoinConjuncts(), newOtherJoinConjuncts); + return join.withJoinConjuncts(join.getHashJoinConjuncts(), newOtherJoinConjuncts, + join.getJoinReorderContext()); }) .toRule(RuleType.ELIMINATE_NOT_NULL) ); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateNullAwareLeftAntiJoin.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateNullAwareLeftAntiJoin.java index 0621d23575..94181892e4 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateNullAwareLeftAntiJoin.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateNullAwareLeftAntiJoin.java @@ -36,7 +36,7 @@ public class EliminateNullAwareLeftAntiJoin extends OneRewriteRuleFactory { antiJoin.getOtherJoinConjuncts().stream()), antiJoin.getMarkJoinConjuncts().stream()) .noneMatch(expression -> expression.nullable())) { - return antiJoin.withJoinType(JoinType.LEFT_ANTI_JOIN); + return antiJoin.withJoinType(JoinType.LEFT_ANTI_JOIN, antiJoin.getJoinReorderContext()); } else { return null; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateOuterJoin.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateOuterJoin.java index 08d916bc20..0fc348e183 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateOuterJoin.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateOuterJoin.java @@ -106,9 +106,9 @@ public class EliminateOuterJoin extends OneRewriteRuleFactory { } if (conjunctsChanged) { return filter.withConjuncts(conjuncts.stream().collect(ImmutableSet.toImmutableSet())) - .withChildren(join.withJoinType(newJoinType)); + .withChildren(join.withJoinType(newJoinType, join.getJoinReorderContext())); } - return filter.withChildren(join.withJoinType(newJoinType)); + return filter.withChildren(join.withJoinType(newJoinType, join.getJoinReorderContext())); }).toRule(RuleType.ELIMINATE_OUTER_JOIN); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ExistsApplyToJoin.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ExistsApplyToJoin.java index 5da56d42ee..003aa10286 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ExistsApplyToJoin.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ExistsApplyToJoin.java @@ -96,13 +96,13 @@ public class ExistsApplyToJoin extends OneRewriteRuleFactory { correlationFilter.map(ExpressionUtils::extractConjunction).orElse(ExpressionUtils.EMPTY_CONDITION), new DistributeHint(DistributeType.NONE), apply.getMarkJoinSlotReference(), - apply.children()); + apply.children(), null); } else { return new LogicalJoin<>(JoinType.LEFT_SEMI_JOIN, ExpressionUtils.EMPTY_CONDITION, correlationFilter.map(ExpressionUtils::extractConjunction).orElse(ExpressionUtils.EMPTY_CONDITION), new DistributeHint(DistributeType.NONE), apply.getMarkJoinSlotReference(), - apply.children()); + apply.children(), null); } } @@ -123,7 +123,7 @@ public class ExistsApplyToJoin extends OneRewriteRuleFactory { ExpressionUtils.EMPTY_CONDITION, new DistributeHint(DistributeType.NONE), unapply.getMarkJoinSlotReference(), - (LogicalPlan) unapply.left(), newAgg); + (LogicalPlan) unapply.left(), newAgg, null); return new LogicalFilter<>(ImmutableSet.of(new EqualTo(newAgg.getOutput().get(0), new IntegerLiteral(0))), newJoin); } @@ -133,6 +133,6 @@ public class ExistsApplyToJoin extends OneRewriteRuleFactory { return new LogicalJoin<>(JoinType.CROSS_JOIN, ExpressionUtils.EMPTY_CONDITION, ExpressionUtils.EMPTY_CONDITION, new DistributeHint(DistributeType.NONE), unapply.getMarkJoinSlotReference(), - (LogicalPlan) unapply.left(), newLimit); + (LogicalPlan) unapply.left(), newLimit, null); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ExtractFilterFromCrossJoin.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ExtractFilterFromCrossJoin.java index f5b2e41502..e5205514fe 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ExtractFilterFromCrossJoin.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ExtractFilterFromCrossJoin.java @@ -43,7 +43,7 @@ public class ExtractFilterFromCrossJoin extends OneRewriteRuleFactory { ExpressionUtils.EMPTY_CONDITION, ExpressionUtils.EMPTY_CONDITION, join.getMarkJoinConjuncts(), join.getDistributeHint(), - join.getMarkJoinSlotReference(), join.children()); + join.getMarkJoinSlotReference(), join.children(), join.getJoinReorderContext()); Set predicates = Stream.concat(join.getHashJoinConjuncts().stream(), join.getOtherJoinConjuncts().stream()) .collect(ImmutableSet.toImmutableSet()); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/FindHashConditionForJoin.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/FindHashConditionForJoin.java index a3d2cacfb6..2826d70906 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/FindHashConditionForJoin.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/FindHashConditionForJoin.java @@ -76,7 +76,7 @@ public class FindHashConditionForJoin extends OneRewriteRuleFactory { join.getMarkJoinConjuncts(), join.getDistributeHint(), join.getMarkJoinSlotReference(), - join.children()); + join.children(), join.getJoinReorderContext()); }).toRule(RuleType.FIND_HASH_CONDITION_FOR_JOIN); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/InApplyToJoin.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/InApplyToJoin.java index e3702f2a93..d2db018346 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/InApplyToJoin.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/InApplyToJoin.java @@ -90,7 +90,7 @@ public class InApplyToJoin extends OneRewriteRuleFactory { return new LogicalJoin<>(JoinType.LEFT_SEMI_JOIN, Lists.newArrayList(), Lists.newArrayList(expr), new DistributeHint(DistributeType.NONE), - apply.left(), agg); + apply.left(), agg, null); } //in-predicate to equal @@ -119,7 +119,7 @@ public class InApplyToJoin extends OneRewriteRuleFactory { inSubquery.isNot() ? JoinType.LEFT_ANTI_JOIN : JoinType.LEFT_SEMI_JOIN, Lists.newArrayList(), joinConjuncts, markConjuncts, new DistributeHint(DistributeType.NONE), apply.getMarkJoinSlotReference(), - apply.children()); + apply.children(), null); } else { if (apply.isCorrelated()) { if (inSubquery.isNot()) { @@ -141,12 +141,12 @@ public class InApplyToJoin extends OneRewriteRuleFactory { ? JoinType.NULL_AWARE_LEFT_ANTI_JOIN : JoinType.LEFT_ANTI_JOIN, Lists.newArrayList(), conjuncts, new DistributeHint(DistributeType.NONE), - apply.getMarkJoinSlotReference(), apply.children()); + apply.getMarkJoinSlotReference(), apply.children(), null); } else { return new LogicalJoin<>(JoinType.LEFT_SEMI_JOIN, Lists.newArrayList(), conjuncts, new DistributeHint(DistributeType.NONE), apply.getMarkJoinSlotReference(), - apply.children()); + apply.children(), null); } } }).toRule(RuleType.IN_APPLY_TO_JOIN); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/OrExpansion.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/OrExpansion.java index 3968f817e8..987bfebc40 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/OrExpansion.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/OrExpansion.java @@ -178,7 +178,7 @@ public class OrExpansion extends OneExplorationRuleFactory { hashCond = hashCond.rewriteUp(s -> replaced.containsKey(s) ? replaced.get(s) : s); Plan newPlan = new LogicalJoin<>(JoinType.LEFT_ANTI_JOIN, Lists.newArrayList(hashCond), otherConditions, originJoin.getDistributeHint(), - originJoin.getMarkJoinSlotReference(), left, right); + originJoin.getMarkJoinSlotReference(), left, right, null); if (hashCond.children().stream().anyMatch(e -> !(e instanceof Slot))) { Plan normalizedPlan = PushDownExpressionsInHashCondition.pushDownHashExpression( (LogicalJoin) newPlan); @@ -195,7 +195,7 @@ public class OrExpansion extends OneExplorationRuleFactory { hashCond = hashCond.rewriteUp(s -> newReplaced.containsKey(s) ? newReplaced.get(s) : s); newPlan = new LogicalJoin<>(JoinType.LEFT_ANTI_JOIN, Lists.newArrayList(hashCond), new ArrayList<>(), originJoin.getDistributeHint(), - originJoin.getMarkJoinSlotReference(), newPlan, newRight); + originJoin.getMarkJoinSlotReference(), newPlan, newRight, null); if (hashCond.children().stream().anyMatch(e -> !(e instanceof Slot))) { newPlan = PushDownExpressionsInHashCondition.pushDownHashExpression( (LogicalJoin) newPlan); @@ -255,7 +255,7 @@ public class OrExpansion extends OneExplorationRuleFactory { LogicalJoin newJoin = new LogicalJoin<>( JoinType.INNER_JOIN, hashCond, otherCond, join.getDistributeHint(), - join.getMarkJoinSlotReference(), left, right); + join.getMarkJoinSlotReference(), left, right, null); if (newJoin.getHashJoinConjuncts().stream() .anyMatch(equalTo -> equalTo.children().stream().anyMatch(e -> !(e instanceof Slot)))) { Plan plan = PushDownExpressionsInHashCondition.pushDownHashExpression(newJoin); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PullUpJoinFromUnionAll.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PullUpJoinFromUnionAll.java index 7492319d4b..28d70ad558 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PullUpJoinFromUnionAll.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PullUpJoinFromUnionAll.java @@ -525,7 +525,7 @@ public class PullUpJoinFromUnionAll extends OneRewriteRuleFactory { new DistributeHint(DistributeType.NONE), Optional.empty(), newUnionNode, - pullUpTable); + pullUpTable, null); } private LogicalUnion makeNewUnionNode(LogicalUnion origUnion, @@ -637,7 +637,7 @@ public class PullUpJoinFromUnionAll extends OneRewriteRuleFactory { join.getOtherJoinConjuncts(), new DistributeHint(DistributeType.NONE), Optional.empty(), - leftChild, rightChild); + leftChild, rightChild, null); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownAliasThroughJoin.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownAliasThroughJoin.java index 0618ffc5f5..3ee951e41a 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownAliasThroughJoin.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownAliasThroughJoin.java @@ -98,7 +98,8 @@ public class PushDownAliasThroughJoin extends OneRewriteRuleFactory { List newOther = replaceJoinConjuncts(join.getOtherJoinConjuncts(), replaceMap); List newMark = replaceJoinConjuncts(join.getMarkJoinConjuncts(), replaceMap); - Plan newJoin = join.withConjunctsChildren(newHash, newOther, newMark, left, right); + Plan newJoin = join.withConjunctsChildren(newHash, newOther, newMark, left, right, + join.getJoinReorderContext()); return project.withProjectsAndChild(newProjects, newJoin); }).toRule(RuleType.PUSH_DOWN_ALIAS_THROUGH_JOIN); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownExpressionsInHashCondition.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownExpressionsInHashCondition.java index 594498cf6b..731fea0497 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownExpressionsInHashCondition.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownExpressionsInHashCondition.java @@ -120,7 +120,7 @@ public class PushDownExpressionsInHashCondition extends OneRewriteRuleFactory { return join.withHashJoinConjunctsAndChildren( newHashConjuncts, createChildProjectPlan(join.left(), join, leftProjectExprs), - createChildProjectPlan(join.right(), join, rightProjectExprs)); + createChildProjectPlan(join.right(), join, rightProjectExprs), join.getJoinReorderContext()); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownFilterThroughJoin.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownFilterThroughJoin.java index c31c05c8a7..6dcf1258ce 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownFilterThroughJoin.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownFilterThroughJoin.java @@ -141,7 +141,8 @@ public class PushDownFilterThroughJoin extends OneRewriteRuleFactory { join.getDistributeHint(), join.getMarkJoinSlotReference(), PlanUtils.filterOrSelf(leftPredicates, join.left()), - PlanUtils.filterOrSelf(rightPredicates, join.right()))); + PlanUtils.filterOrSelf(rightPredicates, join.right()), + join.getJoinReorderContext())); }).toRule(RuleType.PUSH_DOWN_FILTER_THROUGH_JOIN); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownJoinOtherCondition.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownJoinOtherCondition.java index cec7413cd6..9fbf952122 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownJoinOtherCondition.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownJoinOtherCondition.java @@ -91,7 +91,7 @@ public class PushDownJoinOtherCondition extends OneRewriteRuleFactory { return new LogicalJoin<>(join.getJoinType(), join.getHashJoinConjuncts(), remainingOther, join.getMarkJoinConjuncts(), join.getDistributeHint(), - join.getMarkJoinSlotReference(), left, right); + join.getMarkJoinSlotReference(), left, right, join.getJoinReorderContext()); }).toRule(RuleType.PUSH_DOWN_JOIN_OTHER_CONDITION); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushFilterInsideJoin.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushFilterInsideJoin.java index 386e9864a3..c9174e1fbd 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushFilterInsideJoin.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushFilterInsideJoin.java @@ -49,7 +49,7 @@ public class PushFilterInsideJoin extends OneRewriteRuleFactory { otherConditions.addAll(join.getOtherJoinConjuncts()); return new LogicalJoin<>(join.getJoinType(), join.getHashJoinConjuncts(), otherConditions, join.getDistributeHint(), join.getMarkJoinSlotReference(), - join.children()); + join.children(), join.getJoinReorderContext()); }).toRule(RuleType.PUSH_FILTER_INSIDE_JOIN); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ReorderJoin.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ReorderJoin.java index 5707e9cde7..200e1796a8 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ReorderJoin.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ReorderJoin.java @@ -79,7 +79,9 @@ public class ReorderJoin extends OneRewriteRuleFactory { .whenNot(filter -> filter.child() instanceof LogicalJoin && ((LogicalJoin) filter.child()).isMarkJoin()) .thenApply(ctx -> { - if (ctx.statementContext.getConnectContext().getSessionVariable().isDisableJoinReorder()) { + if (ctx.statementContext.getConnectContext().getSessionVariable().isDisableJoinReorder() + || ctx.cascadesContext.isLeadingDisableJoinReorder() + || ((LogicalJoin) ctx.root.child()).isLeadingJoin()) { return null; } LogicalFilter filter = ctx.root; @@ -286,7 +288,7 @@ public class ReorderJoin extends OneRewriteRuleFactory { new DistributeHint(DistributeType.fromRightPlanHintType( planToHintType.getOrDefault(right, JoinDistributeType.NONE))), Optional.empty(), - left, right)); + left, right, null)); } // following this multiJoin just contain INNER/CROSS. @@ -362,7 +364,7 @@ public class ReorderJoin extends OneRewriteRuleFactory { new DistributeHint(DistributeType.fromRightPlanHintType( planToHintType.getOrDefault(candidate, JoinDistributeType.NONE))), Optional.empty(), - left, candidate); + left, candidate, null); } } // All { left -> one in [candidates] } is CrossJoin @@ -375,7 +377,7 @@ public class ReorderJoin extends OneRewriteRuleFactory { new DistributeHint(DistributeType.fromRightPlanHintType( planToHintType.getOrDefault(right, JoinDistributeType.NONE))), Optional.empty(), - left, right); + left, right, null); } private boolean nonJoinAndNonFilter(Plan plan) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ScalarApplyToJoin.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ScalarApplyToJoin.java index 1f94d4f744..e24e410f9e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ScalarApplyToJoin.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ScalarApplyToJoin.java @@ -65,7 +65,7 @@ public class ScalarApplyToJoin extends OneRewriteRuleFactory { ExpressionUtils.EMPTY_CONDITION, new DistributeHint(DistributeType.NONE), apply.getMarkJoinSlotReference(), - (LogicalPlan) apply.left(), assertNumRows); + (LogicalPlan) apply.left(), assertNumRows, null); } private Plan correlatedToJoin(LogicalApply apply) { @@ -88,6 +88,6 @@ public class ScalarApplyToJoin extends OneRewriteRuleFactory { ExpressionUtils.extractConjunction(correlationFilter.get()), new DistributeHint(DistributeType.NONE), apply.getMarkJoinSlotReference(), - apply.children()); + apply.children(), null); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/SemiJoinCommute.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/SemiJoinCommute.java index 3c6a6d6c81..23d9844927 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/SemiJoinCommute.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/SemiJoinCommute.java @@ -33,9 +33,10 @@ public class SemiJoinCommute extends OneRewriteRuleFactory { return logicalJoin() .when(join -> join.getJoinType().isRightSemiOrAntiJoin() || join.getJoinType().isRightOuterJoin()) .whenNot(join -> ConnectContext.get().getSessionVariable().isDisableJoinReorder()) + .whenNot(join -> join.isLeadingJoin()) .whenNot(LogicalJoin::hasDistributeHint) .whenNot(LogicalJoin::isMarkJoin) - .then(join -> join.withTypeChildren(join.getJoinType().swap(), join.right(), join.left())) + .then(join -> join.withTypeChildren(join.getJoinType().swap(), join.right(), join.left(), null)) .toRule(RuleType.LOGICAL_SEMI_JOIN_COMMUTE); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/TransposeSemiJoinLogicalJoin.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/TransposeSemiJoinLogicalJoin.java index 609f66bb6c..572d5ff4bf 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/TransposeSemiJoinLogicalJoin.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/TransposeSemiJoinLogicalJoin.java @@ -45,6 +45,7 @@ public class TransposeSemiJoinLogicalJoin extends OneRewriteRuleFactory { || topJoin.left().getJoinType().isRightOuterJoin()))) .whenNot(topJoin -> topJoin.hasDistributeHint() || topJoin.left().hasDistributeHint()) .whenNot(LogicalJoin::isMarkJoin) + .whenNot(topJoin -> topJoin.isLeadingJoin() || topJoin.left().isLeadingJoin()) .then(topSemiJoin -> { LogicalJoin bottomJoin = topSemiJoin.left(); Plan a = bottomJoin.left(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/TransposeSemiJoinLogicalJoinProject.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/TransposeSemiJoinLogicalJoinProject.java index 783dca5f9d..f8c03d2c59 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/TransposeSemiJoinLogicalJoinProject.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/TransposeSemiJoinLogicalJoinProject.java @@ -50,6 +50,7 @@ public class TransposeSemiJoinLogicalJoinProject extends OneRewriteRuleFactory { .when(join -> join.left().isAllSlots()) .whenNot(join -> join.hasDistributeHint() || join.left().child().hasDistributeHint()) .whenNot(join -> join.isMarkJoin() || join.left().child().isMarkJoin()) + .whenNot(topJoin -> topJoin.isLeadingJoin() || topJoin.left().child().isLeadingJoin()) .when(join -> join.left().getProjects().stream().allMatch(expr -> expr instanceof Slot)) .then(topSemiJoin -> { LogicalProject> project = topSemiJoin.left(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/copier/LogicalPlanDeepCopier.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/copier/LogicalPlanDeepCopier.java index ee4e08ac64..dfa881aa2e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/copier/LogicalPlanDeepCopier.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/copier/LogicalPlanDeepCopier.java @@ -341,7 +341,7 @@ public class LogicalPlanDeepCopier extends DefaultPlanRewriter ExpressionDeepCopier.INSTANCE.deepCopy(c, context)) .collect(ImmutableList.toImmutableList()); return new LogicalJoin<>(join.getJoinType(), hashJoinConjuncts, otherJoinConjuncts, markJoinConjuncts, - join.getDistributeHint(), join.getMarkJoinSlotReference(), children); + join.getDistributeHint(), join.getMarkJoinSlotReference(), children, join.getJoinReorderContext()); } @Override diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalJoin.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalJoin.java index d0f7063fa3..ba34a13c2e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalJoin.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalJoin.java @@ -84,76 +84,69 @@ public class LogicalJoin hashJoinConjuncts, - LEFT_CHILD_TYPE leftChild, RIGHT_CHILD_TYPE rightChild) { + LEFT_CHILD_TYPE leftChild, RIGHT_CHILD_TYPE rightChild, JoinReorderContext otherJoinReorderContext) { this(joinType, hashJoinConjuncts, ExpressionUtils.EMPTY_CONDITION, ExpressionUtils.EMPTY_CONDITION, new DistributeHint(DistributeType.NONE), Optional.empty(), Optional.empty(), Optional.empty(), - ImmutableList.of(leftChild, rightChild), null); + ImmutableList.of(leftChild, rightChild), otherJoinReorderContext); } public LogicalJoin(JoinType joinType, List hashJoinConjuncts, List otherJoinConjuncts, - LEFT_CHILD_TYPE leftChild, RIGHT_CHILD_TYPE rightChild) { + LEFT_CHILD_TYPE leftChild, RIGHT_CHILD_TYPE rightChild, JoinReorderContext otherJoinReorderContext) { this(joinType, hashJoinConjuncts, otherJoinConjuncts, ExpressionUtils.EMPTY_CONDITION, new DistributeHint(DistributeType.NONE), Optional.empty(), - Optional.empty(), Optional.empty(), ImmutableList.of(leftChild, rightChild), null); + Optional.empty(), Optional.empty(), ImmutableList.of(leftChild, rightChild), otherJoinReorderContext); } public LogicalJoin(JoinType joinType, List hashJoinConjuncts, List otherJoinConjuncts, DistributeHint hint, LEFT_CHILD_TYPE leftChild, - RIGHT_CHILD_TYPE rightChild) { + RIGHT_CHILD_TYPE rightChild, JoinReorderContext otherJoinReorderContext) { this(joinType, hashJoinConjuncts, otherJoinConjuncts, ExpressionUtils.EMPTY_CONDITION, hint, Optional.empty(), Optional.empty(), Optional.empty(), - ImmutableList.of(leftChild, rightChild), null); + ImmutableList.of(leftChild, rightChild), otherJoinReorderContext); } public LogicalJoin(JoinType joinType, List hashJoinConjuncts, List otherJoinConjuncts, DistributeHint hint, Optional markJoinSlotReference, LEFT_CHILD_TYPE leftChild, - RIGHT_CHILD_TYPE rightChild) { + RIGHT_CHILD_TYPE rightChild, JoinReorderContext otherJoinReorderContext) { this(joinType, hashJoinConjuncts, otherJoinConjuncts, ExpressionUtils.EMPTY_CONDITION, hint, markJoinSlotReference, Optional.empty(), Optional.empty(), - ImmutableList.of(leftChild, rightChild), null); + ImmutableList.of(leftChild, rightChild), otherJoinReorderContext); } public LogicalJoin(JoinType joinType, List hashJoinConjuncts, List otherJoinConjuncts, List markJoinConjuncts, DistributeHint hint, Optional markJoinSlotReference, LEFT_CHILD_TYPE leftChild, - RIGHT_CHILD_TYPE rightChild) { + RIGHT_CHILD_TYPE rightChild, JoinReorderContext joinReorderContext) { this(joinType, hashJoinConjuncts, otherJoinConjuncts, markJoinConjuncts, hint, markJoinSlotReference, Optional.empty(), Optional.empty(), - ImmutableList.of(leftChild, rightChild), null); - } - - public LogicalJoin(long bitmap, JoinType joinType, List hashJoinConjuncts, - List otherJoinConjuncts, DistributeHint hint, - Optional markJoinSlotReference, LEFT_CHILD_TYPE leftChild, - RIGHT_CHILD_TYPE rightChild) { - this(joinType, hashJoinConjuncts, otherJoinConjuncts, ExpressionUtils.EMPTY_CONDITION, hint, - markJoinSlotReference, Optional.empty(), Optional.empty(), - ImmutableList.of(leftChild, rightChild), null); - this.bitmap = LongBitmap.or(this.bitmap, bitmap); + ImmutableList.of(leftChild, rightChild), joinReorderContext); } public LogicalJoin(JoinType joinType, List hashJoinConjuncts, List otherJoinConjuncts, DistributeHint hint, - Optional markJoinSlotReference, List children) { + Optional markJoinSlotReference, List children, + JoinReorderContext otherJoinReorderContext) { this(joinType, hashJoinConjuncts, otherJoinConjuncts, ExpressionUtils.EMPTY_CONDITION, hint, - markJoinSlotReference, Optional.empty(), Optional.empty(), children, null); + markJoinSlotReference, Optional.empty(), Optional.empty(), children, otherJoinReorderContext); } public LogicalJoin(JoinType joinType, List hashJoinConjuncts, List otherJoinConjuncts, List markJoinConjuncts, DistributeHint hint, - Optional markJoinSlotReference, List children) { + Optional markJoinSlotReference, List children, + JoinReorderContext otherJoinReorderContext) { this(joinType, hashJoinConjuncts, otherJoinConjuncts, markJoinConjuncts, hint, - markJoinSlotReference, Optional.empty(), Optional.empty(), children, null); + markJoinSlotReference, Optional.empty(), Optional.empty(), children, otherJoinReorderContext); } private LogicalJoin(JoinType joinType, List hashJoinConjuncts, @@ -177,7 +170,7 @@ public class LogicalJoin swap() { return withTypeChildren(getJoinType().swap(), - right(), left()); + right(), left(), null); } public List getOtherJoinConjuncts() { @@ -256,6 +249,10 @@ public class LogicalJoin getMarkJoinConjuncts() { return markJoinConjuncts; } @@ -370,63 +367,67 @@ public class LogicalJoin withChildrenNoContext(Plan left, Plan right) { + public LogicalJoin withChildrenNoContext(Plan left, Plan right, + JoinReorderContext otherJoinReorderContext) { return new LogicalJoin<>(joinType, hashJoinConjuncts, otherJoinConjuncts, markJoinConjuncts, hint, markJoinSlotReference, Optional.empty(), Optional.empty(), - ImmutableList.of(left, right), null); + ImmutableList.of(left, right), otherJoinReorderContext); } /** * Using in binding using join, and must set logical properties to empty. */ public LogicalJoin withJoinConjuncts(List hashJoinConjuncts, - List otherJoinConjuncts) { + List otherJoinConjuncts, JoinReorderContext otherJoinReorderContext) { return new LogicalJoin<>(joinType, hashJoinConjuncts, otherJoinConjuncts, markJoinConjuncts, hint, markJoinSlotReference, Optional.empty(), Optional.empty(), - children, null); + children, otherJoinReorderContext); } public LogicalJoin withJoinConjuncts(List hashJoinConjuncts, List otherJoinConjuncts, - List markJoinConjuncts) { + List markJoinConjuncts, + JoinReorderContext otherJoinReorderContext) { return new LogicalJoin<>(joinType, hashJoinConjuncts, otherJoinConjuncts, markJoinConjuncts, hint, markJoinSlotReference, Optional.empty(), Optional.of(getLogicalProperties()), - children, null); + children, otherJoinReorderContext); } public LogicalJoin withHashJoinConjunctsAndChildren( - List hashJoinConjuncts, Plan left, Plan right) { + List hashJoinConjuncts, Plan left, Plan right, JoinReorderContext otherJoinReorderContext) { Preconditions.checkArgument(children.size() == 2); return new LogicalJoin<>(joinType, hashJoinConjuncts, otherJoinConjuncts, markJoinConjuncts, hint, markJoinSlotReference, Optional.empty(), Optional.empty(), - ImmutableList.of(left, right), null); + ImmutableList.of(left, right), otherJoinReorderContext); } public LogicalJoin withConjunctsChildren(List hashJoinConjuncts, - List otherJoinConjuncts, Plan left, Plan right) { + List otherJoinConjuncts, Plan left, Plan right, JoinReorderContext otherJoinReorderContext) { return new LogicalJoin<>(joinType, hashJoinConjuncts, otherJoinConjuncts, markJoinConjuncts, hint, markJoinSlotReference, Optional.empty(), Optional.empty(), - ImmutableList.of(left, right), null); + ImmutableList.of(left, right), otherJoinReorderContext); } public LogicalJoin withConjunctsChildren(List hashJoinConjuncts, List otherJoinConjuncts, - List markJoinConjuncts, Plan left, Plan right) { + List markJoinConjuncts, Plan left, Plan right, + JoinReorderContext otherJoinReorderContext) { return new LogicalJoin<>(joinType, hashJoinConjuncts, otherJoinConjuncts, markJoinConjuncts, hint, markJoinSlotReference, Optional.empty(), Optional.empty(), - ImmutableList.of(left, right), null); + ImmutableList.of(left, right), otherJoinReorderContext); } - public LogicalJoin withJoinType(JoinType joinType) { + public LogicalJoin withJoinType(JoinType joinType, JoinReorderContext otherJoinReorderContext) { return new LogicalJoin<>(joinType, hashJoinConjuncts, otherJoinConjuncts, markJoinConjuncts, hint, markJoinSlotReference, Optional.empty(), Optional.empty(), - children, null); + children, otherJoinReorderContext); } - public LogicalJoin withTypeChildren(JoinType joinType, Plan left, Plan right) { + public LogicalJoin withTypeChildren(JoinType joinType, Plan left, Plan right, + JoinReorderContext otherJoinReorderContext) { return new LogicalJoin<>(joinType, hashJoinConjuncts, otherJoinConjuncts, markJoinConjuncts, hint, markJoinSlotReference, Optional.empty(), Optional.empty(), - ImmutableList.of(left, right), null); + ImmutableList.of(left, right), otherJoinReorderContext); } /** diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSelectHint.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSelectHint.java index 1595666285..127889ea7e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSelectHint.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSelectHint.java @@ -68,6 +68,10 @@ public class LogicalSelectHint extends LogicalUnary withChildren(List children) { Preconditions.checkArgument(children.size() == 1); diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/memo/MemoTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/memo/MemoTest.java index 8943787a30..c5e998b4ea 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/memo/MemoTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/memo/MemoTest.java @@ -69,10 +69,10 @@ class MemoTest implements MemoPatternMatchSupported { private final LogicalJoin logicalJoinAB = new LogicalJoin<>(JoinType.INNER_JOIN, PlanConstructor.newLogicalOlapScan(0, "A", 0), - PlanConstructor.newLogicalOlapScan(1, "B", 0)); + PlanConstructor.newLogicalOlapScan(1, "B", 0), null); private final LogicalJoin, LogicalOlapScan> logicalJoinABC = new LogicalJoin<>( - JoinType.INNER_JOIN, logicalJoinAB, PlanConstructor.newLogicalOlapScan(2, "C", 0)); + JoinType.INNER_JOIN, logicalJoinAB, PlanConstructor.newLogicalOlapScan(2, "C", 0), null); /* * ┌─────────────────────────┐ ┌───────────┐ @@ -161,7 +161,7 @@ class MemoTest implements MemoPatternMatchSupported { logicalJoin(logicalOlapScan(), logicalOlapScan()).then(joinBA -> // this project eliminate when copy in, because it's output same with child. new LogicalProject<>(Lists.newArrayList(joinBA.getOutput()), - new LogicalJoin<>(JoinType.INNER_JOIN, joinBA.right(), joinBA.left())) + new LogicalJoin<>(JoinType.INNER_JOIN, joinBA.right(), joinBA.left(), null)) )) .checkGroupNum(5) .checkGroupExpressionNum(6) @@ -211,7 +211,7 @@ class MemoTest implements MemoPatternMatchSupported { UnboundRelation scanA = new UnboundRelation(StatementScopeIdGenerator.newRelationId(), ImmutableList.of("a")); // when unboundRelation contains id, the case is illegal. - LogicalJoin topJoin = new LogicalJoin<>(JoinType.INNER_JOIN, scanA, scanA); + LogicalJoin topJoin = new LogicalJoin<>(JoinType.INNER_JOIN, scanA, scanA, null); Assertions.assertThrows(IllegalStateException.class, () -> PlanChecker.from(connectContext, topJoin)); } @@ -222,7 +222,7 @@ class MemoTest implements MemoPatternMatchSupported { LogicalOlapScan scanA = new LogicalOlapScan(StatementScopeIdGenerator.newRelationId(), tableA); LogicalOlapScan scanA1 = new LogicalOlapScan(StatementScopeIdGenerator.newRelationId(), tableA); - LogicalJoin topJoin = new LogicalJoin<>(JoinType.INNER_JOIN, scanA, scanA1); + LogicalJoin topJoin = new LogicalJoin<>(JoinType.INNER_JOIN, scanA, scanA1, null); PlanChecker.from(connectContext, topJoin) .checkGroupNum(3) @@ -241,7 +241,7 @@ class MemoTest implements MemoPatternMatchSupported { LogicalOlapScan scanA = new LogicalOlapScan(StatementScopeIdGenerator.newRelationId(), tableA); LogicalOlapScan scanB = new LogicalOlapScan(StatementScopeIdGenerator.newRelationId(), tableB); - LogicalJoin topJoin = new LogicalJoin<>(JoinType.INNER_JOIN, scanA, scanB); + LogicalJoin topJoin = new LogicalJoin<>(JoinType.INNER_JOIN, scanA, scanB, null); PlanChecker.from(connectContext, topJoin) .checkGroupNum(3) @@ -283,9 +283,9 @@ class MemoTest implements MemoPatternMatchSupported { LogicalOlapScan scanC = new LogicalOlapScan(StatementScopeIdGenerator.newRelationId(), tableC); LogicalOlapScan scanD = new LogicalOlapScan(StatementScopeIdGenerator.newRelationId(), tableD); - LogicalJoin leftJoin = new LogicalJoin<>(JoinType.CROSS_JOIN, scanA, scanB); - LogicalJoin rightJoin = new LogicalJoin<>(JoinType.CROSS_JOIN, scanC, scanD); - LogicalJoin topJoin = new LogicalJoin<>(JoinType.CROSS_JOIN, leftJoin, rightJoin); + LogicalJoin leftJoin = new LogicalJoin<>(JoinType.CROSS_JOIN, scanA, scanB, null); + LogicalJoin rightJoin = new LogicalJoin<>(JoinType.CROSS_JOIN, scanC, scanD, null); + LogicalJoin topJoin = new LogicalJoin<>(JoinType.CROSS_JOIN, leftJoin, rightJoin, null); PlanChecker.from(connectContext, topJoin) .checkGroupNum(7) @@ -1007,7 +1007,8 @@ class MemoTest implements MemoPatternMatchSupported { LimitPhase.ORIGIN, new LogicalJoin<>(JoinType.LEFT_OUTER_JOIN, ImmutableList.of(new EqualTo(new UnboundSlot("sid"), new UnboundSlot("id"))), new LogicalOlapScan(StatementScopeIdGenerator.newRelationId(), PlanConstructor.score), - new LogicalOlapScan(StatementScopeIdGenerator.newRelationId(), PlanConstructor.student) + new LogicalOlapScan(StatementScopeIdGenerator.newRelationId(), PlanConstructor.student), + null ) )) .applyTopDownInMemo( diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/pattern/GroupExpressionMatchingTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/pattern/GroupExpressionMatchingTest.java index 6a4d38b5ad..c363e3575c 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/pattern/GroupExpressionMatchingTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/pattern/GroupExpressionMatchingTest.java @@ -162,8 +162,8 @@ class GroupExpressionMatchingTest { void testInnerLogicalJoinMatch() { Plan root = new LogicalJoin(JoinType.INNER_JOIN, new UnboundRelation(StatementScopeIdGenerator.newRelationId(), ImmutableList.of("a")), - new UnboundRelation(StatementScopeIdGenerator.newRelationId(), ImmutableList.of("b")) - ); + new UnboundRelation(StatementScopeIdGenerator.newRelationId(), ImmutableList.of("b")), + null); Memo memo = new Memo(null, root); @@ -184,8 +184,8 @@ class GroupExpressionMatchingTest { void testInnerLogicalJoinMismatch() { Plan root = new LogicalJoin(JoinType.LEFT_OUTER_JOIN, new UnboundRelation(StatementScopeIdGenerator.newRelationId(), ImmutableList.of("a")), - new UnboundRelation(StatementScopeIdGenerator.newRelationId(), ImmutableList.of("b")) - ); + new UnboundRelation(StatementScopeIdGenerator.newRelationId(), ImmutableList.of("b")), + null); Memo memo = new Memo(null, root); @@ -201,8 +201,8 @@ class GroupExpressionMatchingTest { void testTopMatchButChildrenNotMatch() { Plan root = new LogicalJoin(JoinType.LEFT_OUTER_JOIN, new UnboundRelation(StatementScopeIdGenerator.newRelationId(), ImmutableList.of("a")), - new UnboundRelation(StatementScopeIdGenerator.newRelationId(), ImmutableList.of("b")) - ); + new UnboundRelation(StatementScopeIdGenerator.newRelationId(), ImmutableList.of("b")), + null); Memo memo = new Memo(null, root); @@ -223,8 +223,8 @@ class GroupExpressionMatchingTest { new LogicalJoin<>(JoinType.INNER_JOIN, new LogicalJoin<>(JoinType.LEFT_OUTER_JOIN, new UnboundRelation(StatementScopeIdGenerator.newRelationId(), ImmutableList.of("a")), - new UnboundRelation(StatementScopeIdGenerator.newRelationId(), ImmutableList.of("b"))), - new UnboundRelation(StatementScopeIdGenerator.newRelationId(), ImmutableList.of("c"))) + new UnboundRelation(StatementScopeIdGenerator.newRelationId(), ImmutableList.of("b")), null), + new UnboundRelation(StatementScopeIdGenerator.newRelationId(), ImmutableList.of("c")), null) ); Pattern p1 = patterns().logicalFilter(patterns().subTree(LogicalFilter.class, LogicalJoin.class)).pattern; Iterator matchResult1 = match(root, p1); diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/BindSlotReferenceTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/BindSlotReferenceTest.java index 1e03874cf5..097bf79c05 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/BindSlotReferenceTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/BindSlotReferenceTest.java @@ -61,7 +61,7 @@ class BindSlotReferenceTest { LogicalOlapScan scan1 = new LogicalOlapScan(StatementScopeIdGenerator.newRelationId(), PlanConstructor.student); LogicalOlapScan scan2 = new LogicalOlapScan(StatementScopeIdGenerator.newRelationId(), PlanConstructor.student); LogicalJoin join = new LogicalJoin<>( - JoinType.CROSS_JOIN, scan1, scan2); + JoinType.CROSS_JOIN, scan1, scan2, null); LogicalProject> project = new LogicalProject<>( ImmutableList.of(new UnboundSlot("id")), join); @@ -83,7 +83,7 @@ class BindSlotReferenceTest { LogicalOlapScan scan2 = new LogicalOlapScan(StatementScopeIdGenerator.newRelationId(), PlanConstructor.student); LogicalSubQueryAlias sub2 = new LogicalSubQueryAlias<>("t2", scan2); LogicalJoin, LogicalSubQueryAlias> join = - new LogicalJoin<>(JoinType.CROSS_JOIN, sub1, sub2); + new LogicalJoin<>(JoinType.CROSS_JOIN, sub1, sub2, null); LogicalAggregate aggregate = new LogicalAggregate<>( Lists.newArrayList(new UnboundSlot("id")), //group by Lists.newArrayList(new UnboundSlot("t1", "id")), //output @@ -110,7 +110,7 @@ class BindSlotReferenceTest { LogicalOlapScan scan2 = new LogicalOlapScan(StatementScopeIdGenerator.newRelationId(), PlanConstructor.student); LogicalSubQueryAlias sub2 = new LogicalSubQueryAlias<>("t2", scan2); LogicalJoin, LogicalSubQueryAlias> join = - new LogicalJoin<>(JoinType.CROSS_JOIN, sub1, sub2); + new LogicalJoin<>(JoinType.CROSS_JOIN, sub1, sub2, null); LogicalAggregate> aggregate = new LogicalAggregate<>( Lists.newArrayList(new UnboundSlot("id")), //group by Lists.newArrayList(new Alias(new Count(new IntegerLiteral(1)), "count(1)")), //output diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/ExtractSingleTableExpressionFromDisjunctionTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/ExtractSingleTableExpressionFromDisjunctionTest.java index 391e76b7ef..fc55f473ee 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/ExtractSingleTableExpressionFromDisjunctionTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/ExtractSingleTableExpressionFromDisjunctionTest.java @@ -82,7 +82,7 @@ public class ExtractSingleTableExpressionFromDisjunctionTest implements MemoPatt new EqualTo(courseName, new StringLiteral("abc")) ) ); - Plan join = new LogicalJoin<>(JoinType.CROSS_JOIN, student, course); + Plan join = new LogicalJoin<>(JoinType.CROSS_JOIN, student, course, null); LogicalFilter root = new LogicalFilter<>(ImmutableSet.of(expr), join); PlanChecker.from(MemoTestUtils.createConnectContext(), root) .applyTopDown(new ExtractSingleTableExpressionFromDisjunction()) @@ -124,7 +124,7 @@ public class ExtractSingleTableExpressionFromDisjunctionTest implements MemoPatt new EqualTo(courseName, new StringLiteral("abc")) ) ); - Plan join = new LogicalJoin<>(JoinType.CROSS_JOIN, student, course); + Plan join = new LogicalJoin<>(JoinType.CROSS_JOIN, student, course, null); LogicalFilter root = new LogicalFilter<>(ImmutableSet.of(expr), join); PlanChecker.from(MemoTestUtils.createConnectContext(), root) .applyTopDown(new ExtractSingleTableExpressionFromDisjunction()) @@ -160,7 +160,7 @@ public class ExtractSingleTableExpressionFromDisjunctionTest implements MemoPatt ), new EqualTo(studentGender, new IntegerLiteral(1)) ); - Plan join = new LogicalJoin<>(JoinType.CROSS_JOIN, student, course); + Plan join = new LogicalJoin<>(JoinType.CROSS_JOIN, student, course, null); LogicalFilter root = new LogicalFilter<>(ImmutableSet.of(expr), join); PlanChecker.from(MemoTestUtils.createConnectContext(), root) .applyTopDown(new ExtractSingleTableExpressionFromDisjunction()) diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/FindHashConditionForJoinTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/FindHashConditionForJoinTest.java index 7351f39ffa..15af312218 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/FindHashConditionForJoinTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/FindHashConditionForJoinTest.java @@ -87,7 +87,7 @@ class FindHashConditionForJoinTest implements MemoPatternMatchSupported { Expression eq5 = new EqualTo(studentId, new Add(studentId, cid)); List expr = ImmutableList.of(eq1, eq2, eq3, or, less, eq4, eq5); LogicalJoin join = new LogicalJoin<>(JoinType.INNER_JOIN, new ArrayList<>(), - expr, new DistributeHint(DistributeType.NONE), Optional.empty(), studentScan, scoreScan); + expr, new DistributeHint(DistributeType.NONE), Optional.empty(), studentScan, scoreScan, null); PlanChecker.from(new ConnectContext(), join) .applyTopDown(new FindHashConditionForJoin()) @@ -106,7 +106,7 @@ class FindHashConditionForJoinTest implements MemoPatternMatchSupported { Expression eq2 = new EqualTo(studentId, new IntegerLiteral(1)); // a=1 LogicalJoin join = new LogicalJoin<>(JoinType.CROSS_JOIN, new ArrayList<>(), - ImmutableList.of(eq1, eq2), new DistributeHint(DistributeType.NONE), Optional.empty(), studentScan, scoreScan); + ImmutableList.of(eq1, eq2), new DistributeHint(DistributeType.NONE), Optional.empty(), studentScan, scoreScan, null); PlanChecker.from(MemoTestUtils.createConnectContext(), join) .applyTopDown(new FindHashConditionForJoin()) diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PushDownLimitTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PushDownLimitTest.java index 07a131260a..d3681358de 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PushDownLimitTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PushDownLimitTest.java @@ -376,8 +376,8 @@ class PushDownLimitTest extends TestWithFeService implements MemoPatternMatchSup joinType, joinConditions, new LogicalOlapScan(scanScore.getRelationId(), PlanConstructor.score), - new LogicalOlapScan(scanStudent.getRelationId(), PlanConstructor.student) - ); + new LogicalOlapScan(scanStudent.getRelationId(), PlanConstructor.student), + null); if (hasProject) { // return limit -> project -> join diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/stats/JoinEstimateTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/stats/JoinEstimateTest.java index 282f88fc77..6f924c60c8 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/stats/JoinEstimateTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/stats/JoinEstimateTest.java @@ -83,7 +83,7 @@ public class JoinEstimateTest { } }, () -> FunctionalDependencies.EMPTY_FUNC_DEPS))); LogicalJoin join = new LogicalJoin(JoinType.INNER_JOIN, Lists.newArrayList(eq), - left, right); + left, right, null); Statistics outputStats = JoinEstimation.estimate(leftStats, rightStats, join); ColumnStatistic outAStats = outputStats.findColumnStatistics(a); Assertions.assertNotNull(outAStats); @@ -134,7 +134,7 @@ public class JoinEstimateTest { } }, () -> FunctionalDependencies.EMPTY_FUNC_DEPS))); LogicalJoin join = new LogicalJoin(JoinType.LEFT_OUTER_JOIN, Lists.newArrayList(eq), - left, right); + left, right, null); Statistics outputStats = JoinEstimation.estimate(leftStats, rightStats, join); ColumnStatistic outAStats = outputStats.findColumnStatistics(a); Assertions.assertNotNull(outAStats); diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/PlanEqualsTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/PlanEqualsTest.java index 2affdd9560..f76f2a83d5 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/PlanEqualsTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/PlanEqualsTest.java @@ -107,18 +107,18 @@ class PlanEqualsTest { LogicalJoin actual = new LogicalJoin<>(JoinType.INNER_JOIN, Lists.newArrayList(new EqualTo( new SlotReference(new ExprId(0), "a", BigIntType.INSTANCE, true, Lists.newArrayList()), new SlotReference(new ExprId(1), "b", BigIntType.INSTANCE, true, Lists.newArrayList()))), - left, right); + left, right, null); LogicalJoin expected = new LogicalJoin<>(JoinType.INNER_JOIN, Lists.newArrayList(new EqualTo( new SlotReference(new ExprId(0), "a", BigIntType.INSTANCE, true, Lists.newArrayList()), new SlotReference(new ExprId(1), "b", BigIntType.INSTANCE, true, Lists.newArrayList()))), - left, right); + left, right, null); Assertions.assertEquals(expected, actual); LogicalJoin unexpected = new LogicalJoin<>(JoinType.INNER_JOIN, Lists.newArrayList(new EqualTo( new SlotReference(new ExprId(2), "a", BigIntType.INSTANCE, false, Lists.newArrayList()), new SlotReference(new ExprId(3), "b", BigIntType.INSTANCE, true, Lists.newArrayList()))), - left, right); + left, right, null); Assertions.assertNotEquals(unexpected, actual); } diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/PlanToStringTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/PlanToStringTest.java index 229b90f00e..44cb6c296a 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/PlanToStringTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/PlanToStringTest.java @@ -72,7 +72,7 @@ public class PlanToStringTest { LogicalJoin plan = new LogicalJoin<>(JoinType.INNER_JOIN, Lists.newArrayList( new EqualTo(new SlotReference(new ExprId(0), "a", BigIntType.INSTANCE, true, Lists.newArrayList()), new SlotReference(new ExprId(1), "b", BigIntType.INSTANCE, true, Lists.newArrayList()))), - left, right); + left, right, null); System.out.println(plan.toString()); Assertions.assertTrue(plan.toString().matches( "LogicalJoin\\[\\d+\\] \\( type=INNER_JOIN, markJoinSlotReference=Optional.empty, hashJoinConjuncts=\\[\\(a#\\d+ = b#\\d+\\)], otherJoinConjuncts=\\[], markJoinConjuncts=\\[] \\)")); diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/util/HyperGraphBuilder.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/util/HyperGraphBuilder.java index d167054c29..43e2d89f12 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/util/HyperGraphBuilder.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/util/HyperGraphBuilder.java @@ -231,7 +231,7 @@ public class HyperGraphBuilder { "can not find plan %s-%s", leftBitmap, rightBitmap); Plan leftPlan = plans.get(leftKey.get()); Plan rightPlan = plans.get(rightKey.get()); - LogicalJoin join = new LogicalJoin<>(joinType, leftPlan, rightPlan); + LogicalJoin join = new LogicalJoin<>(joinType, leftPlan, rightPlan, null); BitSet key = new BitSet(); key.or(leftKey.get()); @@ -289,11 +289,11 @@ public class HyperGraphBuilder { Random random = new Random(); int randomIndex = random.nextInt(values.length); DistributeType hint = values[randomIndex]; - Plan hintJoin = ((LogicalJoin) join.withChildren(left, right)).withJoinType(joinType); + Plan hintJoin = ((LogicalJoin) join.withChildren(left, right)).withJoinType(joinType, null); ((LogicalJoin) hintJoin).setHint(new DistributeHint(hint)); return hintJoin; } - return ((LogicalJoin) join.withChildren(left, right)).withJoinType(joinType); + return ((LogicalJoin) join.withChildren(left, right)).withJoinType(joinType, null); } private Optional findPlan(BitSet bitSet) { @@ -388,7 +388,7 @@ public class HyperGraphBuilder { } else { conditions.add(condition); } - return new LogicalJoin<>(join.getJoinType(), conditions, left, right); + return new LogicalJoin<>(join.getJoinType(), conditions, left, right, null); } private Expression makeCondition(int node1, int node2, BitSet bitSet) { diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/util/LogicalPlanBuilder.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/util/LogicalPlanBuilder.java index 697a830279..053f0e2d80 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/util/LogicalPlanBuilder.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/util/LogicalPlanBuilder.java @@ -108,7 +108,7 @@ public class LogicalPlanBuilder { LogicalJoin join = new LogicalJoin<>(joinType, new ArrayList<>(hashConjuncts), Collections.emptyList(), Collections.emptyList(), new DistributeHint(DistributeType.NONE), Optional.of(new MarkJoinSlotReference("fake")), - this.plan, right); + this.plan, right, null); return from(join); } @@ -117,7 +117,7 @@ public class LogicalPlanBuilder { new EqualTo(this.plan.getOutput().get(hashOnSlots.first), right.getOutput().get(hashOnSlots.second))); LogicalJoin join = new LogicalJoin<>(joinType, new ArrayList<>(hashConjuncts), - this.plan, right); + this.plan, right, null); return from(join); } @@ -128,19 +128,19 @@ public class LogicalPlanBuilder { .collect(Collectors.toList()); LogicalJoin join = new LogicalJoin<>(joinType, new ArrayList<>(hashConjuncts), - this.plan, right); + this.plan, right, null); return from(join); } public LogicalPlanBuilder join(LogicalPlan right, JoinType joinType, List hashJoinConjuncts, List otherJoinConjucts) { LogicalJoin join = new LogicalJoin<>(joinType, hashJoinConjuncts, otherJoinConjucts, - new DistributeHint(DistributeType.NONE), Optional.empty(), this.plan, right); + new DistributeHint(DistributeType.NONE), Optional.empty(), this.plan, right, null); return from(join); } public LogicalPlanBuilder joinEmptyOn(LogicalPlan right, JoinType joinType) { - LogicalJoin join = new LogicalJoin<>(joinType, this.plan, right); + LogicalJoin join = new LogicalJoin<>(joinType, this.plan, right, null); return from(join); } diff --git a/regression-test/data/nereids_p0/cte/cte.out b/regression-test/data/nereids_p0/cte/cte.out new file mode 100644 index 0000000000..cd1c7f2a7a --- /dev/null +++ b/regression-test/data/nereids_p0/cte/cte.out @@ -0,0 +1,243 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !sql_1 -- +5 21 9 51 +5 21 9 7 +5 21 8 9 +5 21 5 21 +5 21 5 3 +5 21 5 6 +5 21 5 1 +5 21 8 933 +5 3 9 51 +5 3 9 7 +5 3 8 9 +5 3 5 21 +5 3 5 3 +5 3 5 6 +5 3 5 1 +5 3 8 933 +5 6 9 51 +5 6 9 7 +5 6 8 9 +5 6 5 21 +5 6 5 3 +5 6 5 6 +5 6 5 1 +5 6 8 933 +5 1 9 51 +5 1 9 7 +5 1 8 9 +5 1 5 21 +5 1 5 3 +5 1 5 6 +5 1 5 1 +5 1 8 933 +8 933 9 51 +8 933 9 7 +8 933 8 9 +8 933 5 21 +8 933 5 3 +8 933 5 6 +8 933 5 1 +8 933 8 933 +9 51 9 51 +9 51 9 7 +9 51 8 9 +9 51 5 21 +9 51 5 3 +9 51 5 6 +9 51 5 1 +9 51 8 933 +9 7 9 51 +9 7 9 7 +9 7 8 9 +9 7 5 21 +9 7 5 3 +9 7 5 6 +9 7 5 1 +9 7 8 933 +8 9 9 51 +8 9 9 7 +8 9 8 9 +8 9 5 21 +8 9 5 3 +8 9 5 6 +8 9 5 1 +8 9 8 933 + +-- !sql2 -- +5 1 +8 933 +5 21 +5 3 +5 6 +9 51 +9 7 +8 9 + +-- !sql3 -- +5 1 5 1 +5 1 8 933 +5 1 9 51 +5 1 9 7 +5 1 8 9 +5 1 5 21 +5 1 5 3 +5 1 5 6 +8 933 5 1 +8 933 8 933 +8 933 9 51 +8 933 9 7 +8 933 8 9 +8 933 5 21 +8 933 5 3 +8 933 5 6 +5 21 5 1 +5 21 8 933 +5 21 9 51 +5 21 9 7 +5 21 8 9 +5 21 5 21 +5 21 5 3 +5 21 5 6 +5 3 5 1 +5 3 8 933 +5 3 9 51 +5 3 9 7 +5 3 8 9 +5 3 5 21 +5 3 5 3 +5 3 5 6 +5 6 5 1 +5 6 8 933 +5 6 9 51 +5 6 9 7 +5 6 8 9 +5 6 5 21 +5 6 5 3 +5 6 5 6 +9 51 5 1 +9 51 8 933 +9 51 9 51 +9 51 9 7 +9 51 8 9 +9 51 5 21 +9 51 5 3 +9 51 5 6 +9 7 5 1 +9 7 8 933 +9 7 9 51 +9 7 9 7 +9 7 8 9 +9 7 5 21 +9 7 5 3 +9 7 5 6 +8 9 5 1 +8 9 8 933 +8 9 9 51 +8 9 9 7 +8 9 8 9 +8 9 5 21 +8 9 5 3 +8 9 5 6 + +-- !sql4 -- +933 +21 +1 +7 +9 +3 +6 +51 + +-- !sql6 -- + +-- !sql7 -- + +-- !sql8 -- +51 +7 +1 +9 +3 +21 +933 +6 + +-- !sql9 -- +6 +933 +1 +7 +3 +9 +51 +21 + +-- !sql10 -- +21 5 +21 8 +21 9 +21 9 +21 8 +21 5 +21 5 +21 5 +3 5 +3 8 +3 9 +3 9 +3 8 +3 5 +3 5 +3 5 +6 5 +6 8 +6 9 +6 9 +6 8 +6 5 +6 5 +6 5 +51 5 +51 8 +51 9 +51 9 +51 8 +51 5 +51 5 +51 5 +7 5 +7 8 +7 9 +7 9 +7 8 +7 5 +7 5 +7 5 +9 5 +9 8 +9 9 +9 9 +9 8 +9 5 +9 5 +9 5 +1 5 +1 8 +1 9 +1 9 +1 8 +1 5 +1 5 +1 5 +933 5 +933 8 +933 9 +933 9 +933 8 +933 5 +933 5 +933 5 + diff --git a/regression-test/data/nereids_p0/hint/multi_leading.out b/regression-test/data/nereids_p0/hint/multi_leading.out new file mode 100644 index 0000000000..4ded091a3d --- /dev/null +++ b/regression-test/data/nereids_p0/hint/multi_leading.out @@ -0,0 +1,649 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !sql1_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((cte.c1 = t1.c1)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((cte.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------filter((t2.c2 > 300)) +--------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------filter((cte.c1 > 300)) +----------------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------filter((t1.c1 > 300)) +------------------PhysicalOlapScan[t1] + +-- !sql1_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((cte.c1 = t1.c1)) otherCondition=() +------------PhysicalProject +--------------filter((t1.c1 > 300)) +----------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((cte.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------filter((t2.c2 > 300)) +----------------------PhysicalOlapScan[t2] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------filter((cte.c1 > 300)) +------------------------PhysicalOlapScan[t1] + +Hint log: +Used: leading(t2 t1 ) leading(t1 cte ) +UnUsed: +SyntaxError: + +-- !sql1_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((cte.c1 = t1.c1)) otherCondition=() +------------PhysicalProject +--------------filter((t1.c1 > 300)) +----------------PhysicalOlapScan[t1] +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((cte.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------filter((cte.c1 > 300)) +--------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------filter((t2.c2 > 300)) +----------------------PhysicalOlapScan[t2] + +Hint log: +Used: leading(t1 t2 ) leading(t1 cte ) +UnUsed: +SyntaxError: + +-- !sql1_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((cte.c1 = t1.c1)) otherCondition=() +------------PhysicalProject +--------------filter((t1.c1 > 300)) +----------------PhysicalOlapScan[t1] +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((cte.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------filter((cte.c1 > 300)) +--------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------filter((t2.c2 > 300)) +----------------------PhysicalOlapScan[t2] + +Hint log: +Used: leading(t1 t2 ) leading(t1 cte ) +UnUsed: +SyntaxError: + +-- !sql1_res_1 -- +1686 + +-- !sql1_res_2 -- +1686 + +-- !sql1_res_3 -- +1686 + +-- !sql1_res_4 -- +1686 + +-- !sql2_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((alias1.c1 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +-- !sql2_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((alias1.c1 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] + +Hint log: +Used: leading(t3 alias1 ) +UnUsed: +SyntaxError: + +-- !sql2_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((alias1.c1 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((alias1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: leading(t2 t1 ) +UnUsed: +SyntaxError: + +-- !sql2_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((alias1.c1 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((alias1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] + +Hint log: +Used: leading(t2 t1 ) leading(t3 alias1 ) +UnUsed: +SyntaxError: + +-- !sql2_res_1 -- +3103 + +-- !sql2_res_2 -- +3103 + +-- !sql2_res_3 -- +3103 + +-- !sql2_res_4 -- +3103 + +-- !sql3_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((alias1.c1 = cte.c11)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((alias1.c1 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((cte.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] + +-- !sql3_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((alias1.c1 = cte.c11)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((alias1.c1 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t1] +----------------------PhysicalDistribute[DistributionSpecHash] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((cte.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] + +Hint log: +Used: leading(t2 t1 ) leading(t3 alias1 ) +UnUsed: +SyntaxError: + +-- !sql3_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((alias1.c1 = cte.c11)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((alias1.c1 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------hashJoin[INNER_JOIN] hashCondition=((alias1.c1 = t2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((cte.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] + +Hint log: +Used: leading(t2 t1 ) +UnUsed: +SyntaxError: + +-- !sql3_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((alias1.c1 = cte.c11)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((alias1.c1 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------hashJoin[INNER_JOIN] hashCondition=((alias1.c1 = t2.c2)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------------PhysicalDistribute[DistributionSpecHash] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((cte.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] + +Hint log: +Used: leading(t2 t1 ) leading(t2 t1 ) leading(t3 alias1 ) +UnUsed: +SyntaxError: + +-- !sql3_res_1 -- +10411 + +-- !sql3_res_2 -- +10411 + +-- !sql3_res_3 -- +10411 + +-- !sql3_res_4 -- +10411 + +-- !sql4_0 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((alias1.c1 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t4.c4)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------------PhysicalDistribute[DistributionSpecHash] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t4] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +-- !sql4_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((alias1.c1 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t2] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: leading(t3 alias1 ) +UnUsed: +SyntaxError: + +-- !sql4_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((alias1.c1 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((alias1.c1 = alias2.c2)) otherCondition=() +----------------PhysicalProject +------------------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t4.c4)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t4] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: leading(alias2 t1 ) +UnUsed: +SyntaxError: + +-- !sql4_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((alias1.c1 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t4.c4)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t4] +----------------------PhysicalDistribute[DistributionSpecHash] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: leading(t4 t2 ) +UnUsed: +SyntaxError: + +-- !sql4_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((alias1.c1 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((alias1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t4.c4)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------------PhysicalDistribute[DistributionSpecHash] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t4] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] + +Hint log: +Used: leading(alias2 t1 ) leading(t3 alias1 ) +UnUsed: +SyntaxError: + +-- !sql4_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((alias1.c1 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t4.c4)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------------PhysicalDistribute[DistributionSpecHash] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t4] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: +UnUsed: leading(t3 alias1) +SyntaxError: leading(t4 t2) Msg:one query block can only have one leading clause + +-- !sql4_6 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((alias1.c1 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((alias1.c1 = alias2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t4.c4)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------------PhysicalDistribute[DistributionSpecHash] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t4] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: +UnUsed: leading(alias2 t1) +SyntaxError: leading(t4 t2) Msg:one query block can only have one leading clause + +-- !sql4_7 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((alias1.c1 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((alias1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t2] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: leading(t3 alias1 ) +UnUsed: leading(alias2 t1) +SyntaxError: leading(t4 t2) Msg:one query block can only have one leading clause + +-- !sql4_res_0 -- +6224 + +-- !sql4_res_1 -- +6224 + +-- !sql4_res_2 -- +6224 + +-- !sql4_res_3 -- +6224 + +-- !sql4_res_4 -- +6224 + +-- !sql4_res_5 -- +6224 + +-- !sql4_res_6 -- +6224 + +-- !sql4_res_7 -- +6224 + +-- !sql5_1 -- +PhysicalCteAnchor ( cteId=CTEId#0 ) +--PhysicalCteProducer ( cteId=CTEId#0 ) +----PhysicalProject +------PhysicalOlapScan[t1] +--PhysicalResultSink +----PhysicalDistribute[DistributionSpecGather] +------PhysicalProject +--------NestedLoopJoin[INNER_JOIN](cast(sum(c11) as DOUBLE) > (cast(0.05 as DOUBLE) * avg(c11))) +----------hashAgg[GLOBAL] +------------PhysicalDistribute[DistributionSpecHash] +--------------hashAgg[LOCAL] +----------------PhysicalDistribute[DistributionSpecExecutionAny] +------------------PhysicalCteConsumer ( cteId=CTEId#0 ) +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------hashAgg[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------hashAgg[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = cte.c11)) otherCondition=() +------------------------PhysicalOlapScan[t1] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalCteConsumer ( cteId=CTEId#0 ) + +-- !sql5_2 -- +PhysicalCteAnchor ( cteId=CTEId#0 ) +--PhysicalCteProducer ( cteId=CTEId#0 ) +----PhysicalProject +------PhysicalOlapScan[t1] +--PhysicalResultSink +----PhysicalDistribute[DistributionSpecGather] +------PhysicalProject +--------NestedLoopJoin[INNER_JOIN](cast(sum(c11) as DOUBLE) > (cast(0.05 as DOUBLE) * avg(c11))) +----------hashAgg[GLOBAL] +------------PhysicalDistribute[DistributionSpecHash] +--------------hashAgg[LOCAL] +----------------PhysicalDistribute[DistributionSpecExecutionAny] +------------------PhysicalCteConsumer ( cteId=CTEId#0 ) +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------hashAgg[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------hashAgg[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = cte.c11)) otherCondition=() +------------------------PhysicalDistribute[DistributionSpecExecutionAny] +--------------------------PhysicalProject +----------------------------PhysicalCteConsumer ( cteId=CTEId#0 ) +------------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------------PhysicalOlapScan[t1] + +Hint log: +Used: leading(cte t1 ) +UnUsed: +SyntaxError: + diff --git a/regression-test/data/nereids_p0/hint/test_distribute.out b/regression-test/data/nereids_p0/hint/test_distribute.out new file mode 100644 index 0000000000..5fae729afe --- /dev/null +++ b/regression-test/data/nereids_p0/hint/test_distribute.out @@ -0,0 +1,10482 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !select1_1 -- +1000 + +-- !select1_2 -- +1000 + +-- !select1_3 -- +1000 + +-- !select1_4 -- +1000 + +-- !select2_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------PhysicalProject +--------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t2] + +-- !select2_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------PhysicalProject +--------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t2] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select2_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------PhysicalProject +--------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t2] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select3_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select3_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select3_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select3_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select3_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 [shuffle]_3 +UnUsed: +SyntaxError: + +-- !select3_6 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 [broadcast]_3 +UnUsed: +SyntaxError: + +-- !select3_7 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select3_8 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select4_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select4_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecReplicated] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select4_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select4_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecReplicated] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select4_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t1] +----------------------PhysicalDistribute[DistributionSpecReplicated] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 [shuffle]_3 +UnUsed: +SyntaxError: + +-- !select5_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[INNER_JOIN](t1.c1 > t2.c2) +------------PhysicalProject +--------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t2] + +Hint log: +Used: +UnUsed: [shuffle]_2 +SyntaxError: + +-- !select5_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[INNER_JOIN](t1.c1 > t2.c2) +------------PhysicalProject +--------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t2] + +Hint log: +Used: +UnUsed: [broadcast]_2 +SyntaxError: + +-- !select6_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[INNER_JOIN](t2.c2 > t3.c3) +------------PhysicalProject +--------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------NestedLoopJoin[INNER_JOIN](t1.c1 > t2.c2) +------------------PhysicalProject +--------------------filter((t1.c1 < 100)) +----------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] + +Hint log: +Used: +UnUsed: [shuffle]_2 +SyntaxError: + +-- !select6_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[INNER_JOIN](t1.c1 > t2.c2) +------------NestedLoopJoin[INNER_JOIN](t2.c2 > t3.c3) +--------------PhysicalProject +----------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecReplicated] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------filter((t1.c1 < 100)) +------------------PhysicalOlapScan[t1] + +-- !select7_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select7_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select8_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------filter((t1.c1 <= 300) and (t1.c1 >= 100)) +--------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------filter((t2.c2 <= 300) and (t2.c2 >= 100)) +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------filter((t3.c3 <= 300) and (t3.c3 >= 100)) +------------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select8_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------filter((t1.c1 <= 300) and (t1.c1 >= 100)) +--------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------filter((t2.c2 <= 300) and (t2.c2 >= 100)) +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------filter((t3.c3 <= 300) and (t3.c3 >= 100)) +------------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select9_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------filter((t1.c1 <= 300) and (t1.c1 >= 100)) +--------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------filter((t2.c2 <= 300) and (t2.c2 >= 100)) +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------filter((t3.c3 <= 300) and (t3.c3 >= 100)) +------------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select9_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------filter((t1.c1 <= 300) and (t1.c1 >= 100)) +--------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------filter((t2.c2 <= 300) and (t2.c2 >= 100)) +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------filter((t3.c3 <= 300) and (t3.c3 >= 100)) +------------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select10_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------PhysicalProject +----------------filter((t1.c1 <= 300) and (t1.c1 >= 100)) +------------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------filter((t3.c3 <= 300) and (t3.c3 >= 100)) +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------filter((t2.c2 <= 300) and (t2.c2 >= 100)) +------------------PhysicalOlapScan[t2] + +-- !select10_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------PhysicalProject +----------------filter((t1.c1 <= 300) and (t1.c1 >= 100)) +------------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------filter((t3.c3 <= 300) and (t3.c3 >= 100)) +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------filter((t2.c2 <= 300) and (t2.c2 >= 100)) +------------------PhysicalOlapScan[t2] + +-- !select11_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[INNER_JOIN](t1.c1 > t3.c3) +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------filter((t3.c3 <= 300) and (t3.c3 >= 100)) +------------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: [broadcast]_3 +SyntaxError: + +-- !select11_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[INNER_JOIN](t1.c1 > t3.c3) +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------filter((t3.c3 <= 300) and (t3.c3 >= 100)) +------------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select12_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select12_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select13_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------filter((t1.c1 <= 300) and (t1.c1 >= 100)) +--------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------filter((t2.c2 <= 300) and (t2.c2 >= 100)) +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------filter((t3.c3 <= 300) and (t3.c3 >= 100)) +------------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select13_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------filter((t1.c1 <= 300) and (t1.c1 >= 100)) +--------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------filter((t2.c2 <= 300) and (t2.c2 >= 100)) +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------filter((t3.c3 <= 300) and (t3.c3 >= 100)) +------------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select14_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------filter((t1.c1 <= 300) and (t1.c1 >= 100)) +--------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------filter((t2.c2 <= 300) and (t2.c2 >= 100)) +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------filter((t3.c3 <= 300) and (t3.c3 >= 100)) +------------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select14_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------filter((t1.c1 <= 300) and (t1.c1 >= 100)) +--------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------filter((t2.c2 <= 300) and (t2.c2 >= 100)) +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------filter((t3.c3 <= 300) and (t3.c3 >= 100)) +------------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select15_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------filter((t1.c1 <= 300) and (t1.c1 >= 100)) +--------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------filter((t2.c2 <= 300) and (t2.c2 >= 100)) +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------filter((t3.c3 <= 300) and (t3.c3 >= 100)) +------------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select15_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------filter((t1.c1 <= 300) and (t1.c1 >= 100)) +--------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------filter((t2.c2 <= 300) and (t2.c2 >= 100)) +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------filter((t3.c3 <= 300) and (t3.c3 >= 100)) +------------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select16_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select16_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select17_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[FULL_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +-- !select17_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[FULL_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select17_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[FULL_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: +UnUsed: [broadcast]_2 +SyntaxError: + +-- !select17_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[FULL_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select17_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[FULL_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select17_6 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[FULL_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select17_7 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[FULL_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select17_8 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[FULL_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: [broadcast]_3 +SyntaxError: + +-- !select17_9 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[FULL_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 [shuffle]_3 +UnUsed: +SyntaxError: + +-- !select18_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +-- !select18_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select18_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select18_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select18_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select18_6 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select18_7 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select18_8 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 [broadcast]_3 +UnUsed: +SyntaxError: + +-- !select18_9 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 [shuffle]_3 +UnUsed: +SyntaxError: + +-- !select19_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] + +-- !select19_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select19_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: +UnUsed: [broadcast]_2 +SyntaxError: + +-- !select19_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select19_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select19_6 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select19_7 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select19_8 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: [broadcast]_3 +SyntaxError: + +-- !select19_9 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 [shuffle]_3 +UnUsed: +SyntaxError: + +-- !select20_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------PhysicalProject +--------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecHash] +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] + +-- !select20_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecReplicated] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select20_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select20_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecReplicated] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select20_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select20_6 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select20_7 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select20_8 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 [broadcast]_3 +UnUsed: +SyntaxError: + +-- !select20_9 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 [shuffle]_3 +UnUsed: +SyntaxError: + +-- !select21_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------PhysicalProject +--------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecHash] +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] + +-- !select21_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecReplicated] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select21_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select21_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecReplicated] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select21_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select21_6 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select21_7 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select21_8 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 [broadcast]_3 +UnUsed: +SyntaxError: + +-- !select21_9 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 [shuffle]_3 +UnUsed: +SyntaxError: + +-- !select22_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +-- !select22_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select22_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select22_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select22_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select22_6 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select22_7 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select22_8 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 [broadcast]_3 +UnUsed: +SyntaxError: + +-- !select22_9 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 [shuffle]_3 +UnUsed: +SyntaxError: + +-- !select23_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] + +-- !select23_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select23_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: +UnUsed: [broadcast]_2 +SyntaxError: + +-- !select23_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select23_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalProject +--------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select23_6 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select23_7 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select23_8 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: [broadcast]_3 +SyntaxError: + +-- !select23_9 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 [shuffle]_3 +UnUsed: +SyntaxError: + +-- !select24_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------PhysicalProject +--------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecHash] +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] + +-- !select24_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecReplicated] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select24_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select24_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecReplicated] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select24_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select24_6 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select24_7 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select24_8 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 [broadcast]_3 +UnUsed: +SyntaxError: + +-- !select24_9 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 [shuffle]_3 +UnUsed: +SyntaxError: + +-- !select25_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +-- !select25_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecReplicated] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select25_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select25_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecReplicated] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select25_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select25_6 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select25_7 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select25_8 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 [broadcast]_3 +UnUsed: +SyntaxError: + +-- !select25_9 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 [shuffle]_3 +UnUsed: +SyntaxError: + +-- !select26_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t1] + +-- !select26_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: +UnUsed: [broadcast]_2 +SyntaxError: + +-- !select26_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select26_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: +UnUsed: [broadcast]_2 +SyntaxError: + +-- !select26_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select26_6 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select26_7 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select26_8 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 [broadcast]_3 +UnUsed: +SyntaxError: + +-- !select26_9 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_3 +UnUsed: [broadcast]_2 +SyntaxError: + +-- !select27_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t1] + +-- !select27_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: +UnUsed: [broadcast]_2 +SyntaxError: + +-- !select27_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select27_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: +UnUsed: [broadcast]_2 +SyntaxError: + +-- !select27_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select27_6 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select27_7 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select27_8 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 [broadcast]_3 +UnUsed: +SyntaxError: + +-- !select27_9 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------PhysicalProject +------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_3 +UnUsed: [broadcast]_2 +SyntaxError: + +-- !select28_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +----------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------PhysicalProject +--------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +-- !select28_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +----------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------PhysicalProject +--------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select28_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +----------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------PhysicalProject +--------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select28_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +----------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------PhysicalProject +--------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select28_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +----------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------PhysicalProject +--------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select28_6 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +----------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------PhysicalProject +--------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select28_7 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +----------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------PhysicalProject +--------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select28_8 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +----------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------PhysicalProject +--------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 [broadcast]_3 +UnUsed: +SyntaxError: + +-- !select28_9 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +----------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------PhysicalProject +--------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t2] +----------PhysicalDistribute[DistributionSpecHash] +------------PhysicalProject +--------------PhysicalOlapScan[t3] + +Hint log: +Used: [broadcast]_2 [shuffle]_3 +UnUsed: +SyntaxError: + +-- !select32_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select32_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select32_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select32_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select32_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select32_6 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t1] +----------------------PhysicalDistribute[DistributionSpecReplicated] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 [shuffle]_3 +UnUsed: +SyntaxError: + +-- !select32_7 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select32_8 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select32_9 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecReplicated] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select32_10 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecReplicated] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select32_11 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 [broadcast]_3 +UnUsed: +SyntaxError: + +-- !select32_12 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 [broadcast]_3 +UnUsed: +SyntaxError: + +-- !select32_13 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 [broadcast]_3 +UnUsed: +SyntaxError: + +-- !select33_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +--------------PhysicalProject +----------------PhysicalOlapScan[t3] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t4] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select33_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t1] +----------------------PhysicalDistribute[DistributionSpecHash] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select33_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t1] +----------------------PhysicalDistribute[DistributionSpecHash] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select33_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t1] +----------------------PhysicalDistribute[DistributionSpecHash] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select33_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t1] +----------------------PhysicalDistribute[DistributionSpecHash] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select33_6 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t1] +----------------------PhysicalDistribute[DistributionSpecReplicated] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 [shuffle]_3 +UnUsed: +SyntaxError: + +-- !select33_7 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t1] +----------------------PhysicalDistribute[DistributionSpecHash] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: +UnUsed: [broadcast]_2 +SyntaxError: + +-- !select33_8 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t1] +----------------------PhysicalDistribute[DistributionSpecHash] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select33_9 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t1] +----------------------PhysicalDistribute[DistributionSpecReplicated] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select33_10 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t1] +----------------------PhysicalDistribute[DistributionSpecReplicated] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select33_11 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t1] +----------------------PhysicalDistribute[DistributionSpecHash] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: [broadcast]_3 +SyntaxError: + +-- !select33_12 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t1] +----------------------PhysicalDistribute[DistributionSpecHash] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: [broadcast]_3 +SyntaxError: + +-- !select33_13 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t1] +----------------------PhysicalDistribute[DistributionSpecHash] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 [broadcast]_3 +UnUsed: +SyntaxError: + +-- !select34_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t4] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select34_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select34_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select34_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select34_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select34_6 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------------PhysicalDistribute[DistributionSpecHash] +--------------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t1] +----------------------PhysicalDistribute[DistributionSpecReplicated] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t2] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 [shuffle]_3 +UnUsed: +SyntaxError: + +-- !select34_7 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select34_8 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select34_9 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select34_10 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select34_11 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 [broadcast]_3 +UnUsed: +SyntaxError: + +-- !select34_12 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 [broadcast]_3 +UnUsed: +SyntaxError: + +-- !select34_13 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 [broadcast]_3 +UnUsed: +SyntaxError: + +-- !select35_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t4] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select35_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalDistribute[DistributionSpecHash] +------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select35_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select35_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------PhysicalDistribute[DistributionSpecHash] +------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select35_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select35_6 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------------PhysicalDistribute[DistributionSpecHash] +--------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t1] +----------------------PhysicalDistribute[DistributionSpecReplicated] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t2] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 [shuffle]_3 +UnUsed: +SyntaxError: + +-- !select35_7 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select35_8 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select35_9 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select35_10 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select35_11 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 [broadcast]_3 +UnUsed: +SyntaxError: + +-- !select35_12 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 [broadcast]_3 +UnUsed: +SyntaxError: + +-- !select35_13 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 [broadcast]_3 +UnUsed: +SyntaxError: + +-- !select36_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t4] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select36_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select36_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t3] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select36_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select36_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select36_6 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------------PhysicalDistribute[DistributionSpecHash] +--------------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t1] +----------------------PhysicalDistribute[DistributionSpecReplicated] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t2] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 [shuffle]_3 +UnUsed: +SyntaxError: + +-- !select36_7 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select36_8 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t3] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select36_9 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select36_10 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select36_11 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 [broadcast]_3 +UnUsed: +SyntaxError: + +-- !select36_12 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 [broadcast]_3 +UnUsed: +SyntaxError: + +-- !select36_13 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 [broadcast]_3 +UnUsed: +SyntaxError: + +-- !select37_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t4] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t3] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select37_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select37_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t3] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select37_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select37_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select37_6 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------------PhysicalDistribute[DistributionSpecHash] +--------------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t1] +----------------------PhysicalDistribute[DistributionSpecReplicated] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t2] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 [shuffle]_3 +UnUsed: +SyntaxError: + +-- !select37_7 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select37_8 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t3] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select37_9 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select37_10 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select37_11 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 [broadcast]_3 +UnUsed: +SyntaxError: + +-- !select37_12 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 [broadcast]_3 +UnUsed: +SyntaxError: + +-- !select37_13 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 [broadcast]_3 +UnUsed: +SyntaxError: + +-- !select38_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select38_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select38_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select38_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select38_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select38_6 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 [shuffle]_3 +UnUsed: +SyntaxError: + +-- !select38_7 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecReplicated] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select38_8 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select38_9 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select38_10 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecReplicated] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select38_11 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecReplicated] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 [broadcast]_3 +UnUsed: +SyntaxError: + +-- !select38_12 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecReplicated] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 [broadcast]_3 +UnUsed: +SyntaxError: + +-- !select38_13 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t4.c4)) otherCondition=() +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalProject +----------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 [broadcast]_3 +UnUsed: +SyntaxError: + +-- !select41_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +-- !select41_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select41_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select41_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select41_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select41_6 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select41_7 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select41_8 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select41_9 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select41_10 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select41_11 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select41_12 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select41_13 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select42_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +-- !select42_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select42_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select42_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select42_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select42_6 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select42_7 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select42_8 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select42_9 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------PhysicalDistribute[DistributionSpecHash] +------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select42_10 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select42_11 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------PhysicalDistribute[DistributionSpecHash] +------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select42_12 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select42_13 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------PhysicalDistribute[DistributionSpecHash] +------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select43_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t1] +----------------------PhysicalDistribute[DistributionSpecHash] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +-- !select43_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t1] +----------------------PhysicalDistribute[DistributionSpecReplicated] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select43_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------PhysicalDistribute[DistributionSpecHash] +------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: +UnUsed: [broadcast]_2 +SyntaxError: + +-- !select43_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t1] +----------------------PhysicalDistribute[DistributionSpecHash] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select43_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------PhysicalDistribute[DistributionSpecHash] +------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecReplicated] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select43_6 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------PhysicalDistribute[DistributionSpecHash] +------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: +UnUsed: [broadcast]_2 +SyntaxError: + +-- !select43_7 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------PhysicalDistribute[DistributionSpecHash] +------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecReplicated] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select43_8 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t1] +----------------------PhysicalDistribute[DistributionSpecHash] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select43_9 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------PhysicalDistribute[DistributionSpecHash] +------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select43_10 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t1] +----------------------PhysicalDistribute[DistributionSpecHash] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select43_11 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------PhysicalDistribute[DistributionSpecHash] +------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select43_12 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t1] +----------------------PhysicalDistribute[DistributionSpecHash] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t2] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select43_13 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------PhysicalDistribute[DistributionSpecHash] +------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select44_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +-- !select44_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select44_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select44_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select44_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select44_6 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select44_7 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select44_8 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select44_9 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select44_10 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select44_11 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select44_12 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select44_13 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select45_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +-- !select45_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select45_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select45_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select45_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select45_6 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select45_7 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select45_8 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select45_9 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------PhysicalDistribute[DistributionSpecHash] +------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select45_10 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select45_11 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------PhysicalDistribute[DistributionSpecHash] +------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select45_12 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select45_13 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------PhysicalDistribute[DistributionSpecHash] +------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select46_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t3] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +-- !select46_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: +UnUsed: [broadcast]_2 +SyntaxError: + +-- !select46_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +--------------PhysicalProject +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecReplicated] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select46_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t3] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select46_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: +UnUsed: [broadcast]_2 +SyntaxError: + +-- !select46_6 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +--------------PhysicalProject +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecReplicated] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select46_7 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: +UnUsed: [broadcast]_2 +SyntaxError: + +-- !select46_8 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select46_9 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +--------------PhysicalProject +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select46_10 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t3] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select46_11 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select46_12 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select46_13 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((alias2.c2 = t3.c3)) otherCondition=() +----------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select47_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +-- !select47_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------PhysicalProject +----------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecReplicated] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: +UnUsed: [broadcast]_2 +SyntaxError: + +-- !select47_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select47_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select47_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------PhysicalProject +----------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecReplicated] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: +UnUsed: [broadcast]_2 +SyntaxError: + +-- !select47_6 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select47_7 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------PhysicalProject +----------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecReplicated] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: +UnUsed: [broadcast]_2 +SyntaxError: + +-- !select47_8 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------PhysicalProject +----------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecReplicated] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select47_9 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +----------------PhysicalDistribute[DistributionSpecHash] +------------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select47_10 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------PhysicalProject +--------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +----------------hashJoin[LEFT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select47_11 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select47_12 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------PhysicalProject +----------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t1] +------------------PhysicalDistribute[DistributionSpecHash] +--------------------PhysicalProject +----------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecReplicated] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select47_13 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------hashJoin[RIGHT_OUTER_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t1] +--------------------PhysicalDistribute[DistributionSpecHash] +----------------------PhysicalProject +------------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select48_1 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +-- !select48_2 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select48_3 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecReplicated] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select48_4 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select48_5 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecReplicated] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select48_6 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecReplicated] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select48_7 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecReplicated] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecReplicated] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [broadcast]_2 +UnUsed: +SyntaxError: + +-- !select48_8 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select48_9 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select48_10 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select48_11 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select48_12 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select48_13 -- +PhysicalResultSink +--hashAgg[GLOBAL] +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[LOCAL] +--------PhysicalProject +----------NestedLoopJoin[CROSS_JOIN] +------------hashJoin[LEFT_ANTI_JOIN] hashCondition=((t1.c1 = t3.c3)) otherCondition=() +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t1.c1 = alias2.c2)) otherCondition=() +----------------PhysicalProject +------------------PhysicalOlapScan[t1] +----------------PhysicalDistribute[DistributionSpecHash] +------------------PhysicalProject +--------------------PhysicalOlapScan[t2] +--------------PhysicalDistribute[DistributionSpecHash] +----------------PhysicalProject +------------------PhysicalOlapScan[t3] +------------PhysicalDistribute[DistributionSpecReplicated] +--------------PhysicalLimit[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------PhysicalLimit[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] +------------------------PhysicalDistribute[DistributionSpecHash] +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[t4] + +Hint log: +Used: [shuffle]_2 +UnUsed: +SyntaxError: + +-- !select_res2_1 -- +1719 + +-- !select_res2_2 -- +1719 + +-- !select_res2_3 -- +1719 + +-- !select_res3_1 -- +3103 + +-- !select_res3_2 -- +3103 + +-- !select_res3_3 -- +3103 + +-- !select_res3_4 -- +3103 + +-- !select_res3_5 -- +3103 + +-- !select_res3_6 -- +3103 + +-- !select_res3_7 -- +3103 + +-- !select_res3_8 -- +3103 + +-- !select_res4_1 -- +6224 + +-- !select_res4_2 -- +6224 + +-- !select_res4_3 -- +6224 + +-- !select_res4_4 -- +6224 + +-- !select_res4_5 -- +6224 + +-- !select_res5_1 -- +426858 + +-- !select_res5_2 -- +426858 + +-- !select_res6_1 -- +1131009 + +-- !select_res6_2 -- +1131009 + +-- !select_res7_1 -- +3705 + +-- !select_res7_2 -- +3705 + +-- !select_res8_1 -- +1577 + +-- !select_res8_2 -- +1577 + +-- !select_res9_1 -- +1470 + +-- !select_res9_2 -- +1470 + +-- !select_res10_1 -- +1471 + +-- !select_res10_2 -- +1471 + +-- !select_res11_1 -- +415028 + +-- !select_res11_2 -- +415028 + +-- !select_res12_1 -- +3568 + +-- !select_res12_2 -- +3568 + +-- !select_res13_1 -- +1530 + +-- !select_res13_2 -- +1530 + +-- !select_res14_1 -- +1471 + +-- !select_res14_2 -- +1471 + +-- !select_res15_1 -- +1377 + +-- !select_res15_2 -- +1377 + +-- !select_res16_1 -- +3103 + +-- !select_res16_2 -- +3103 + +-- !select_res17_1 -- +3731 + +-- !select_res17_2 -- +3731 + +-- !select_res17_3 -- +3731 + +-- !select_res17_4 -- +3731 + +-- !select_res17_5 -- +3731 + +-- !select_res17_6 -- +3731 + +-- !select_res17_7 -- +3731 + +-- !select_res17_8 -- +3731 + +-- !select_res17_9 -- +3731 + +-- !select_res18_1 -- +3362 + +-- !select_res18_2 -- +3362 + +-- !select_res18_3 -- +3362 + +-- !select_res18_4 -- +3362 + +-- !select_res18_5 -- +3362 + +-- !select_res18_6 -- +3362 + +-- !select_res18_7 -- +3362 + +-- !select_res18_8 -- +3362 + +-- !select_res18_9 -- +3362 + +-- !select_res19_1 -- +3472 + +-- !select_res19_2 -- +3472 + +-- !select_res19_3 -- +3472 + +-- !select_res19_4 -- +3472 + +-- !select_res19_5 -- +3472 + +-- !select_res19_6 -- +3472 + +-- !select_res19_7 -- +3472 + +-- !select_res19_8 -- +3472 + +-- !select_res19_9 -- +3472 + +-- !select_res20_1 -- +1460 + +-- !select_res20_2 -- +1460 + +-- !select_res20_3 -- +1460 + +-- !select_res20_4 -- +1460 + +-- !select_res20_5 -- +1460 + +-- !select_res20_6 -- +1460 + +-- !select_res20_7 -- +1460 + +-- !select_res20_8 -- +1460 + +-- !select_res20_9 -- +1460 + +-- !select_res21_1 -- +259 + +-- !select_res21_2 -- +259 + +-- !select_res21_3 -- +259 + +-- !select_res21_4 -- +259 + +-- !select_res21_5 -- +259 + +-- !select_res21_6 -- +259 + +-- !select_res21_7 -- +259 + +-- !select_res21_8 -- +259 + +-- !select_res21_9 -- +259 + +-- !select_res22_1 -- +3568 + +-- !select_res22_2 -- +3568 + +-- !select_res22_3 -- +3568 + +-- !select_res22_4 -- +3568 + +-- !select_res22_5 -- +3568 + +-- !select_res22_6 -- +3568 + +-- !select_res22_7 -- +3568 + +-- !select_res22_8 -- +3568 + +-- !select_res22_9 -- +3568 + +-- !select_res23_1 -- +3472 + +-- !select_res23_2 -- +3472 + +-- !select_res23_3 -- +3472 + +-- !select_res23_4 -- +3472 + +-- !select_res23_5 -- +3472 + +-- !select_res23_6 -- +3472 + +-- !select_res23_7 -- +3472 + +-- !select_res23_8 -- +3472 + +-- !select_res23_9 -- +3472 + +-- !select_res24_1 -- +1460 + +-- !select_res24_2 -- +1460 + +-- !select_res24_3 -- +1460 + +-- !select_res24_4 -- +1460 + +-- !select_res24_5 -- +1460 + +-- !select_res24_6 -- +1460 + +-- !select_res24_7 -- +1460 + +-- !select_res24_8 -- +1460 + +-- !select_res24_9 -- +1460 + +-- !select_res25_1 -- +465 + +-- !select_res25_2 -- +465 + +-- !select_res25_3 -- +465 + +-- !select_res25_4 -- +465 + +-- !select_res25_5 -- +465 + +-- !select_res25_6 -- +465 + +-- !select_res25_7 -- +465 + +-- !select_res25_8 -- +465 + +-- !select_res25_9 -- +465 + +-- !select_res26_1 -- +1643 + +-- !select_res26_2 -- +1643 + +-- !select_res26_3 -- +1643 + +-- !select_res26_4 -- +1643 + +-- !select_res26_5 -- +1643 + +-- !select_res26_6 -- +1643 + +-- !select_res26_7 -- +1643 + +-- !select_res26_8 -- +1643 + +-- !select_res26_9 -- +1643 + +-- !select_res27_1 -- +337 + +-- !select_res27_2 -- +337 + +-- !select_res27_3 -- +337 + +-- !select_res27_4 -- +337 + +-- !select_res27_5 -- +337 + +-- !select_res27_6 -- +337 + +-- !select_res27_7 -- +337 + +-- !select_res27_8 -- +337 + +-- !select_res27_9 -- +337 + +-- !select_res28_1 -- +119 + +-- !select_res28_2 -- +119 + +-- !select_res28_3 -- +119 + +-- !select_res28_4 -- +119 + +-- !select_res28_5 -- +119 + +-- !select_res28_6 -- +119 + +-- !select_res28_7 -- +119 + +-- !select_res28_8 -- +119 + +-- !select_res28_9 -- +119 + +-- !select_res32_1 -- +6224 + +-- !select_res32_2 -- +6224 + +-- !select_res32_3 -- +6224 + +-- !select_res32_4 -- +6224 + +-- !select_res32_5 -- +6224 + +-- !select_res32_6 -- +6224 + +-- !select_res32_7 -- +6224 + +-- !select_res32_8 -- +6224 + +-- !select_res32_9 -- +6224 + +-- !select_res32_10 -- +6224 + +-- !select_res32_11 -- +6224 + +-- !select_res32_12 -- +6224 + +-- !select_res32_13 -- +6224 + +-- !select_res33_1 -- +6839 + +-- !select_res33_2 -- +6839 + +-- !select_res33_3 -- +6839 + +-- !select_res33_4 -- +6839 + +-- !select_res33_5 -- +6839 + +-- !select_res33_6 -- +6839 + +-- !select_res33_7 -- +6839 + +-- !select_res33_8 -- +6839 + +-- !select_res33_9 -- +6839 + +-- !select_res33_10 -- +6839 + +-- !select_res33_11 -- +6839 + +-- !select_res33_12 -- +6839 + +-- !select_res33_13 -- +6839 + +-- !select_res34_1 -- +2853 + +-- !select_res34_2 -- +2853 + +-- !select_res34_3 -- +2853 + +-- !select_res34_4 -- +2853 + +-- !select_res34_5 -- +2853 + +-- !select_res34_6 -- +2853 + +-- !select_res34_7 -- +2853 + +-- !select_res34_8 -- +2853 + +-- !select_res34_9 -- +2853 + +-- !select_res34_10 -- +2853 + +-- !select_res34_11 -- +2853 + +-- !select_res34_12 -- +2853 + +-- !select_res34_13 -- +2853 + +-- !select_res35_1 -- +793 + +-- !select_res35_2 -- +793 + +-- !select_res35_3 -- +793 + +-- !select_res35_4 -- +793 + +-- !select_res35_5 -- +793 + +-- !select_res35_6 -- +793 + +-- !select_res35_7 -- +793 + +-- !select_res35_8 -- +793 + +-- !select_res35_9 -- +793 + +-- !select_res35_10 -- +793 + +-- !select_res35_11 -- +793 + +-- !select_res35_12 -- +793 + +-- !select_res35_13 -- +793 + +-- !select_res36_1 -- +2853 + +-- !select_res36_2 -- +2853 + +-- !select_res36_3 -- +2853 + +-- !select_res36_4 -- +2853 + +-- !select_res36_5 -- +2853 + +-- !select_res36_6 -- +2853 + +-- !select_res36_7 -- +2853 + +-- !select_res36_8 -- +2853 + +-- !select_res36_9 -- +2853 + +-- !select_res36_10 -- +2853 + +-- !select_res36_11 -- +2853 + +-- !select_res36_12 -- +2853 + +-- !select_res36_13 -- +2853 + +-- !select_res37_1 -- +486 + +-- !select_res37_2 -- +486 + +-- !select_res37_3 -- +486 + +-- !select_res37_4 -- +486 + +-- !select_res37_5 -- +486 + +-- !select_res37_6 -- +486 + +-- !select_res37_7 -- +486 + +-- !select_res37_8 -- +486 + +-- !select_res37_9 -- +486 + +-- !select_res37_10 -- +486 + +-- !select_res37_11 -- +486 + +-- !select_res37_12 -- +486 + +-- !select_res37_13 -- +486 + +-- !select_res38_1 -- +201 + +-- !select_res38_2 -- +201 + +-- !select_res38_3 -- +201 + +-- !select_res38_4 -- +201 + +-- !select_res38_5 -- +201 + +-- !select_res38_6 -- +201 + +-- !select_res38_7 -- +201 + +-- !select_res38_8 -- +201 + +-- !select_res38_9 -- +201 + +-- !select_res38_10 -- +201 + +-- !select_res38_11 -- +201 + +-- !select_res38_12 -- +201 + +-- !select_res38_13 -- +201 + +-- !select_res41_1 -- +259 + +-- !select_res41_2 -- +259 + +-- !select_res41_3 -- +259 + +-- !select_res41_4 -- +259 + +-- !select_res41_5 -- +259 + +-- !select_res41_6 -- +259 + +-- !select_res41_7 -- +259 + +-- !select_res41_8 -- +259 + +-- !select_res41_9 -- +259 + +-- !select_res41_10 -- +259 + +-- !select_res41_11 -- +259 + +-- !select_res41_12 -- +259 + +-- !select_res41_13 -- +259 + +-- !select_res42_1 -- +3568 + +-- !select_res42_2 -- +3568 + +-- !select_res42_3 -- +3568 + +-- !select_res42_4 -- +3568 + +-- !select_res42_5 -- +3568 + +-- !select_res42_6 -- +3568 + +-- !select_res42_7 -- +3568 + +-- !select_res42_8 -- +3568 + +-- !select_res42_9 -- +3568 + +-- !select_res42_10 -- +3568 + +-- !select_res42_11 -- +3568 + +-- !select_res42_12 -- +3568 + +-- !select_res42_13 -- +3568 + +-- !select_res43_1 -- +3472 + +-- !select_res43_2 -- +3472 + +-- !select_res43_3 -- +3472 + +-- !select_res43_4 -- +3472 + +-- !select_res43_5 -- +3472 + +-- !select_res43_6 -- +3472 + +-- !select_res43_7 -- +3472 + +-- !select_res43_8 -- +3472 + +-- !select_res43_9 -- +3472 + +-- !select_res43_10 -- +3472 + +-- !select_res43_11 -- +3472 + +-- !select_res43_12 -- +3472 + +-- !select_res43_13 -- +3472 + +-- !select_res44_1 -- +1460 + +-- !select_res44_2 -- +1460 + +-- !select_res44_3 -- +1460 + +-- !select_res44_4 -- +1460 + +-- !select_res44_5 -- +1460 + +-- !select_res44_6 -- +1460 + +-- !select_res44_7 -- +1460 + +-- !select_res44_8 -- +1460 + +-- !select_res44_9 -- +1460 + +-- !select_res44_10 -- +1460 + +-- !select_res44_11 -- +1460 + +-- !select_res44_12 -- +1460 + +-- !select_res44_13 -- +1460 + +-- !select_res45_1 -- +465 + +-- !select_res45_2 -- +465 + +-- !select_res45_3 -- +465 + +-- !select_res45_4 -- +465 + +-- !select_res45_5 -- +465 + +-- !select_res45_6 -- +465 + +-- !select_res45_7 -- +465 + +-- !select_res45_8 -- +465 + +-- !select_res45_9 -- +465 + +-- !select_res45_10 -- +465 + +-- !select_res45_11 -- +465 + +-- !select_res45_12 -- +465 + +-- !select_res45_13 -- +465 + +-- !select_res46_1 -- +1643 + +-- !select_res46_2 -- +1643 + +-- !select_res46_3 -- +1643 + +-- !select_res46_4 -- +1643 + +-- !select_res46_5 -- +1643 + +-- !select_res46_6 -- +1643 + +-- !select_res46_7 -- +1643 + +-- !select_res46_8 -- +1643 + +-- !select_res46_9 -- +1643 + +-- !select_res46_10 -- +1643 + +-- !select_res46_11 -- +1643 + +-- !select_res46_12 -- +1643 + +-- !select_res46_13 -- +1643 + +-- !select_res47_1 -- +520 + +-- !select_res47_2 -- +520 + +-- !select_res47_3 -- +520 + +-- !select_res47_4 -- +520 + +-- !select_res47_5 -- +520 + +-- !select_res47_6 -- +520 + +-- !select_res47_7 -- +520 + +-- !select_res47_8 -- +520 + +-- !select_res47_9 -- +520 + +-- !select_res47_10 -- +520 + +-- !select_res47_11 -- +520 + +-- !select_res47_12 -- +520 + +-- !select_res47_13 -- +520 + +-- !select_res48_1 -- +119 + +-- !select_res48_2 -- +119 + +-- !select_res48_3 -- +119 + +-- !select_res48_4 -- +119 + +-- !select_res48_5 -- +119 + +-- !select_res48_6 -- +119 + +-- !select_res48_7 -- +119 + +-- !select_res48_8 -- +119 + +-- !select_res48_9 -- +119 + +-- !select_res48_10 -- +119 + +-- !select_res48_11 -- +119 + +-- !select_res48_12 -- +119 + +-- !select_res48_13 -- +119 + diff --git a/regression-test/data/nereids_p0/hint/test_leading.out b/regression-test/data/nereids_p0/hint/test_leading.out index 29811a9516..2c0ddc6314 100644 --- a/regression-test/data/nereids_p0/hint/test_leading.out +++ b/regression-test/data/nereids_p0/hint/test_leading.out @@ -1892,21 +1892,21 @@ PhysicalResultSink ----PhysicalDistribute[DistributionSpecGather] ------hashAgg[LOCAL] --------PhysicalProject -----------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() -------------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() ---------------PhysicalProject -----------------PhysicalOlapScan[t1] ---------------PhysicalDistribute[DistributionSpecHash] +----------hashJoin[INNER_JOIN] hashCondition=((t1.c1 = t2.c2)) otherCondition=() +------------PhysicalProject +--------------PhysicalOlapScan[t1] +------------PhysicalDistribute[DistributionSpecHash] +--------------hashJoin[LEFT_SEMI_JOIN] hashCondition=((t2.c2 = t3.c3)) otherCondition=() ----------------PhysicalProject ------------------PhysicalOlapScan[t2] -------------PhysicalDistribute[DistributionSpecHash] ---------------PhysicalProject -----------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +----------------PhysicalDistribute[DistributionSpecHash] ------------------PhysicalProject ---------------------PhysicalOlapScan[t4] -------------------PhysicalDistribute[DistributionSpecHash] ---------------------PhysicalProject -----------------------PhysicalOlapScan[t3] +--------------------hashJoin[INNER_JOIN] hashCondition=((t3.c3 = t4.c4)) otherCondition=() +----------------------PhysicalProject +------------------------PhysicalOlapScan[t4] +----------------------PhysicalDistribute[DistributionSpecHash] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[t3] Hint log: Used: leading(t4 t3 ) diff --git a/regression-test/data/nereids_rules_p0/cte/cte.out b/regression-test/data/nereids_rules_p0/cte/cte.out new file mode 100644 index 0000000000..057eb4216e --- /dev/null +++ b/regression-test/data/nereids_rules_p0/cte/cte.out @@ -0,0 +1,347 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !sql -- +PhysicalResultSink +--PhysicalDistribute[DistributionSpecGather] +----PhysicalProject +------NestedLoopJoin[CROSS_JOIN] +--------PhysicalProject +----------PhysicalOlapScan[t1] +--------PhysicalDistribute[DistributionSpecReplicated] +----------PhysicalOlapScan[t1] + +-- !sql -- +PhysicalCteAnchor ( cteId=CTEId#0 ) +--PhysicalCteProducer ( cteId=CTEId#0 ) +----PhysicalProject +------PhysicalOlapScan[t1] +--PhysicalResultSink +----PhysicalDistribute[DistributionSpecGather] +------PhysicalProject +--------NestedLoopJoin[CROSS_JOIN] +----------PhysicalDistribute[DistributionSpecExecutionAny] +------------PhysicalCteConsumer ( cteId=CTEId#0 ) +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalCteConsumer ( cteId=CTEId#0 ) + +-- !sql -- +PhysicalCteAnchor ( cteId=CTEId#0 ) +--PhysicalCteProducer ( cteId=CTEId#0 ) +----PhysicalProject +------PhysicalOlapScan[t1] +--PhysicalResultSink +----PhysicalDistribute[DistributionSpecGather] +------PhysicalProject +--------NestedLoopJoin[INNER_JOIN](cast(sum(col2) as DOUBLE) > (cast(0.05 as DOUBLE) * avg(col2))) +----------hashAgg[GLOBAL] +------------PhysicalDistribute[DistributionSpecHash] +--------------hashAgg[LOCAL] +----------------PhysicalDistribute[DistributionSpecExecutionAny] +------------------PhysicalCteConsumer ( cteId=CTEId#0 ) +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------hashAgg[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------hashAgg[LOCAL] +--------------------PhysicalDistribute[DistributionSpecExecutionAny] +----------------------PhysicalProject +------------------------PhysicalCteConsumer ( cteId=CTEId#0 ) + +-- !sql -- +PhysicalCteAnchor ( cteId=CTEId#0 ) +--PhysicalCteProducer ( cteId=CTEId#0 ) +----PhysicalProject +------PhysicalOlapScan[t1] +--PhysicalResultSink +----PhysicalDistribute[DistributionSpecGather] +------PhysicalProject +--------NestedLoopJoin[CROSS_JOIN] +----------PhysicalDistribute[DistributionSpecExecutionAny] +------------filter((t1.col2 = 3)) +--------------PhysicalCteConsumer ( cteId=CTEId#0 ) +----------PhysicalDistribute[DistributionSpecReplicated] +------------filter((cast(col1 as DOUBLE) = 2.0)) +--------------PhysicalCteConsumer ( cteId=CTEId#0 ) + +-- !sql -- +PhysicalCteAnchor ( cteId=CTEId#0 ) +--PhysicalCteProducer ( cteId=CTEId#0 ) +----PhysicalProject +------filter(col2 IN (3, 4)) +--------PhysicalOlapScan[t1] +--PhysicalResultSink +----PhysicalDistribute[DistributionSpecGather] +------PhysicalProject +--------NestedLoopJoin[CROSS_JOIN] +----------PhysicalDistribute[DistributionSpecExecutionAny] +------------filter((cte1.col2 = 3)) +--------------PhysicalCteConsumer ( cteId=CTEId#0 ) +----------PhysicalDistribute[DistributionSpecReplicated] +------------filter((cte1.col2 = 4)) +--------------PhysicalCteConsumer ( cteId=CTEId#0 ) + +-- !sql -- +PhysicalCteAnchor ( cteId=CTEId#0 ) +--PhysicalCteProducer ( cteId=CTEId#0 ) +----PhysicalProject +------PhysicalOlapScan[t1] +--PhysicalResultSink +----PhysicalDistribute[DistributionSpecGather] +------PhysicalProject +--------NestedLoopJoin[INNER_JOIN](cast(sum(col2) as DOUBLE) > (cast(0.05 as DOUBLE) * avg(col2))) +----------hashAgg[GLOBAL] +------------PhysicalDistribute[DistributionSpecHash] +--------------hashAgg[LOCAL] +----------------PhysicalDistribute[DistributionSpecExecutionAny] +------------------PhysicalCteConsumer ( cteId=CTEId#0 ) +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------hashAgg[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------hashAgg[LOCAL] +--------------------PhysicalDistribute[DistributionSpecExecutionAny] +----------------------PhysicalProject +------------------------filter((cte.col2 > 1)) +--------------------------PhysicalCteConsumer ( cteId=CTEId#0 ) + +-- !sql -- +PhysicalCteAnchor ( cteId=CTEId#0 ) +--PhysicalCteProducer ( cteId=CTEId#0 ) +----PhysicalProject +------PhysicalOlapScan[t1] +--PhysicalResultSink +----PhysicalDistribute[DistributionSpecGather] +------PhysicalProject +--------NestedLoopJoin[INNER_JOIN](cast(sum(col2) as DOUBLE) > (cast(0.05 as DOUBLE) * avg(col4))) +----------hashAgg[GLOBAL] +------------PhysicalDistribute[DistributionSpecHash] +--------------hashAgg[LOCAL] +----------------PhysicalDistribute[DistributionSpecExecutionAny] +------------------PhysicalProject +--------------------PhysicalCteConsumer ( cteId=CTEId#0 ) +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------hashAgg[GLOBAL] +----------------PhysicalDistribute[DistributionSpecGather] +------------------hashAgg[LOCAL] +--------------------PhysicalDistribute[DistributionSpecExecutionAny] +----------------------PhysicalProject +------------------------filter((cte.col2 > 1)) +--------------------------PhysicalCteConsumer ( cteId=CTEId#0 ) + +-- !sql -- +PhysicalCteAnchor ( cteId=CTEId#0 ) +--PhysicalCteProducer ( cteId=CTEId#0 ) +----PhysicalProject +------PhysicalOlapScan[t1] +--PhysicalResultSink +----PhysicalDistribute[DistributionSpecGather] +------PhysicalProject +--------NestedLoopJoin[CROSS_JOIN] +----------PhysicalDistribute[DistributionSpecExecutionAny] +------------PhysicalProject +--------------PhysicalCteConsumer ( cteId=CTEId#0 ) +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------PhysicalCteConsumer ( cteId=CTEId#0 ) + +-- !sql -- +LogicalCteAnchor[457] ( cteId=CTEId#0 ) +|--LogicalCteProducer[441] ( cteId=CTEId#0 ) +| +--LogicalOlapScan ( qualified=regression_test_nereids_rules_p0_cte.t1, indexName=t1, selectedIndexId=47224, preAgg=ON ) ++--LogicalResultSink[455] ( outputExprs=[col1#24, col2#25, col3#26] ) + +--LogicalAggregate[453] ( groupByExpr=[col1#24, col2#25, col3#26], outputExpr=[col1#24, col2#25, col3#26], hasRepeat=false ) + +--LogicalUnion ( qualifier=ALL, outputs=[col1#24, col2#25, col3#26], regularChildrenOutputs=[[col1#42, col2#43, col3#44], [col1#45, col2#46, col3#47]], constantExprsList=[], hasPushedFilter=false ) + |--LogicalProject[444] ( distinct=false, projects=[cast(col1#27 as VARCHAR(65533)) AS `col1`#42, cast(col2#28 as BIGINT) AS `col2`#43, col3#29 AS `col3`#44], excepts=[] ) + | +--LogicalCteConsumer[442] ( cteId=CTEId#0, relationId=RelationId#5, name=cte1 ) + +--LogicalProject[447] ( distinct=false, projects=[cast((col2#34 + 1) as VARCHAR(65533)) AS `col1`#45, (col3#35 + 2) AS `col2`#46, col4#36 AS `col3`#47], excepts=[] ) + +--LogicalCteConsumer[445] ( cteId=CTEId#0, relationId=RelationId#6, name=cte1 ) + +-- !sql -- +PhysicalCteAnchor ( cteId=CTEId#0 ) +--PhysicalCteProducer ( cteId=CTEId#0 ) +----PhysicalOlapScan[t1] +--PhysicalResultSink +----PhysicalDistribute[DistributionSpecGather] +------PhysicalProject +--------hashJoin[INNER_JOIN] hashCondition=((t1.col2 = t2.col2)) otherCondition=() +----------PhysicalDistribute[DistributionSpecExecutionAny] +------------PhysicalProject +--------------PhysicalCteConsumer ( cteId=CTEId#0 ) +----------PhysicalDistribute[DistributionSpecReplicated] +------------filter((v.col3 = 2)) +--------------PhysicalCteConsumer ( cteId=CTEId#0 ) + +-- !sql -- +PhysicalCteAnchor ( cteId=CTEId#0 ) +--PhysicalCteProducer ( cteId=CTEId#0 ) +----PhysicalOlapScan[t1] +--PhysicalResultSink +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[GLOBAL] +--------PhysicalDistribute[DistributionSpecHash] +----------hashAgg[LOCAL] +------------PhysicalUnion +--------------PhysicalDistribute[DistributionSpecExecutionAny] +----------------PhysicalProject +------------------PhysicalCteConsumer ( cteId=CTEId#0 ) +--------------PhysicalDistribute[DistributionSpecExecutionAny] +----------------PhysicalProject +------------------PhysicalCteConsumer ( cteId=CTEId#0 ) + +-- !sql -- +PhysicalCteAnchor ( cteId=CTEId#0 ) +--PhysicalCteProducer ( cteId=CTEId#0 ) +----PhysicalOlapScan[t1] +--PhysicalResultSink +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[GLOBAL] +--------PhysicalDistribute[DistributionSpecHash] +----------hashAgg[LOCAL] +------------PhysicalUnion +--------------PhysicalDistribute[DistributionSpecExecutionAny] +----------------PhysicalProject +------------------PhysicalCteConsumer ( cteId=CTEId#0 ) +--------------PhysicalDistribute[DistributionSpecExecutionAny] +----------------PhysicalProject +------------------PhysicalCteConsumer ( cteId=CTEId#0 ) + +-- !sql -- +PhysicalResultSink +--PhysicalDistribute[DistributionSpecGather] +----PhysicalOlapScan[t1] + +-- !sql -- +PhysicalResultSink +--PhysicalDistribute[DistributionSpecGather] +----PhysicalUnion +------PhysicalDistribute[DistributionSpecExecutionAny] +--------PhysicalProject +----------PhysicalOlapScan[t1] +------PhysicalDistribute[DistributionSpecExecutionAny] +--------PhysicalProject +----------PhysicalOlapScan[t1] + +-- !sql -- +PhysicalCteAnchor ( cteId=CTEId#0 ) +--PhysicalCteProducer ( cteId=CTEId#0 ) +----PhysicalUnion +------PhysicalDistribute[DistributionSpecExecutionAny] +--------PhysicalProject +----------PhysicalOlapScan[t1] +------PhysicalDistribute[DistributionSpecExecutionAny] +--------PhysicalProject +----------PhysicalOlapScan[t1] +--PhysicalResultSink +----PhysicalDistribute[DistributionSpecGather] +------PhysicalProject +--------PhysicalCteConsumer ( cteId=CTEId#0 ) + +-- !sql -- +PhysicalCteAnchor ( cteId=CTEId#3 ) +--PhysicalCteProducer ( cteId=CTEId#3 ) +----PhysicalUnion +------PhysicalDistribute[DistributionSpecExecutionAny] +--------PhysicalProject +----------PhysicalOlapScan[t1] +------PhysicalDistribute[DistributionSpecExecutionAny] +--------PhysicalProject +----------PhysicalOlapScan[t1] +--PhysicalResultSink +----PhysicalDistribute[DistributionSpecGather] +------hashAgg[GLOBAL] +--------PhysicalDistribute[DistributionSpecHash] +----------hashAgg[LOCAL] +------------PhysicalUnion +--------------PhysicalDistribute[DistributionSpecExecutionAny] +----------------PhysicalProject +------------------PhysicalCteConsumer ( cteId=CTEId#3 ) +--------------PhysicalDistribute[DistributionSpecExecutionAny] +----------------PhysicalProject +------------------PhysicalCteConsumer ( cteId=CTEId#3 ) + +-- !sql -- +PhysicalCteAnchor ( cteId=CTEId#0 ) +--PhysicalCteProducer ( cteId=CTEId#0 ) +----PhysicalOlapScan[t1] +--PhysicalResultSink +----PhysicalDistribute[DistributionSpecGather] +------PhysicalUnion +--------PhysicalDistribute[DistributionSpecExecutionAny] +----------PhysicalProject +------------filter((cte0.col3 < 5)) +--------------PhysicalCteConsumer ( cteId=CTEId#0 ) +--------PhysicalDistribute[DistributionSpecExecutionAny] +----------PhysicalProject +------------filter((cte0.col2 > 1)) +--------------PhysicalCteConsumer ( cteId=CTEId#0 ) + +-- !sql -- +PhysicalCteAnchor ( cteId=CTEId#0 ) +--PhysicalCteProducer ( cteId=CTEId#0 ) +----PhysicalProject +------PhysicalOlapScan[t1] +--PhysicalResultSink +----PhysicalDistribute[DistributionSpecGather] +------PhysicalUnion +--------PhysicalDistribute[DistributionSpecExecutionAny] +----------PhysicalProject +------------PhysicalCteConsumer ( cteId=CTEId#0 ) +--------PhysicalDistribute[DistributionSpecExecutionAny] +----------PhysicalProject +------------PhysicalCteConsumer ( cteId=CTEId#0 ) + +-- !sql -- +PhysicalCteAnchor ( cteId=CTEId#0 ) +--PhysicalCteProducer ( cteId=CTEId#0 ) +----PhysicalProject +------PhysicalOlapScan[t1] +--PhysicalResultSink +----PhysicalDistribute[DistributionSpecGather] +------PhysicalProject +--------hashJoin[INNER_JOIN] hashCondition=((c1.col3 = c2.col3)) otherCondition=() +----------PhysicalDistribute[DistributionSpecExecutionAny] +------------PhysicalProject +--------------PhysicalCteConsumer ( cteId=CTEId#0 ) +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------PhysicalCteConsumer ( cteId=CTEId#0 ) + +-- !sql -- +PhysicalCteAnchor ( cteId=CTEId#0 ) +--PhysicalCteProducer ( cteId=CTEId#0 ) +----PhysicalProject +------PhysicalOlapScan[t1] +--PhysicalCteAnchor ( cteId=CTEId#1 ) +----PhysicalCteProducer ( cteId=CTEId#1 ) +------PhysicalDistribute[DistributionSpecExecutionAny] +--------PhysicalProject +----------PhysicalCteConsumer ( cteId=CTEId#0 ) +----PhysicalCteAnchor ( cteId=CTEId#2 ) +------PhysicalCteProducer ( cteId=CTEId#2 ) +--------PhysicalLimit[GLOBAL] +----------PhysicalLimit[LOCAL] +------------PhysicalProject +--------------NestedLoopJoin[INNER_JOIN](cast(col1 as DOUBLE) > cast(sum(col2) as DOUBLE)) +----------------hashAgg[GLOBAL] +------------------PhysicalDistribute[DistributionSpecGather] +--------------------hashAgg[LOCAL] +----------------------PhysicalProject +------------------------NestedLoopJoin[CROSS_JOIN] +--------------------------PhysicalDistribute[DistributionSpecExecutionAny] +----------------------------PhysicalProject +------------------------------PhysicalCteConsumer ( cteId=CTEId#1 ) +--------------------------PhysicalDistribute[DistributionSpecReplicated] +----------------------------PhysicalProject +------------------------------PhysicalCteConsumer ( cteId=CTEId#1 ) +----------------PhysicalDistribute[DistributionSpecReplicated] +------------------PhysicalCteConsumer ( cteId=CTEId#0 ) +------PhysicalResultSink +--------PhysicalDistribute[DistributionSpecGather] +----------PhysicalProject +------------NestedLoopJoin[CROSS_JOIN] +--------------PhysicalDistribute[DistributionSpecExecutionAny] +----------------PhysicalCteConsumer ( cteId=CTEId#2 ) +--------------PhysicalDistribute[DistributionSpecReplicated] +----------------PhysicalProject +------------------PhysicalCteConsumer ( cteId=CTEId#2 ) + diff --git a/regression-test/data/nereids_rules_p0/cte/test_cte_filter_pushdown.out b/regression-test/data/nereids_rules_p0/cte/test_cte_filter_pushdown.out new file mode 100644 index 0000000000..7ced0007c1 --- /dev/null +++ b/regression-test/data/nereids_rules_p0/cte/test_cte_filter_pushdown.out @@ -0,0 +1,61 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !cte_filter_pushdown_1 -- +PhysicalCteAnchor ( cteId=CTEId#0 ) +--PhysicalCteProducer ( cteId=CTEId#0 ) +----PhysicalWindow +------PhysicalQuickSort[LOCAL_SORT] +--------PhysicalProject +----------filter((main.k1 = 1)) +------------PhysicalOlapScan[test] +--PhysicalResultSink +----PhysicalDistribute[DistributionSpecGather] +------PhysicalProject +--------hashJoin[INNER_JOIN] hashCondition=((m1.k1 = m2.k1)) otherCondition=() +----------PhysicalDistribute[DistributionSpecExecutionAny] +------------filter((temp.k1 = 1)) +--------------PhysicalCteConsumer ( cteId=CTEId#0 ) +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------filter((m2.k1 = 1)) +----------------PhysicalCteConsumer ( cteId=CTEId#0 ) + +-- !cte_filter_pushdown_2 -- +PhysicalCteAnchor ( cteId=CTEId#0 ) +--PhysicalCteProducer ( cteId=CTEId#0 ) +----PhysicalProject +------filter((main.k1 = 1)) +--------PhysicalWindow +----------PhysicalQuickSort[LOCAL_SORT] +------------PhysicalDistribute[DistributionSpecHash] +--------------PhysicalProject +----------------PhysicalOlapScan[test] +--PhysicalResultSink +----PhysicalDistribute[DistributionSpecGather] +------PhysicalProject +--------hashJoin[INNER_JOIN] hashCondition=((m1.k1 = m2.k1)) otherCondition=() +----------PhysicalDistribute[DistributionSpecExecutionAny] +------------filter((temp.k1 = 1)) +--------------PhysicalCteConsumer ( cteId=CTEId#0 ) +----------PhysicalDistribute[DistributionSpecReplicated] +------------PhysicalProject +--------------filter((m2.k1 = 1)) +----------------PhysicalCteConsumer ( cteId=CTEId#0 ) + +-- !cte_filter_pushdown_3 -- +PhysicalResultSink +--PhysicalDistribute[DistributionSpecGather] +----PhysicalProject +------hashJoin[INNER_JOIN] hashCondition=((k3 = dd.k3)) otherCondition=() +--------PhysicalDistribute[DistributionSpecHash] +----------PhysicalProject +------------filter((tmp2.k3 = 0)) +--------------PhysicalWindow +----------------PhysicalQuickSort[LOCAL_SORT] +------------------PhysicalProject +--------------------filter((tmp.k1 = 1)) +----------------------PhysicalOlapScan[test] +--------PhysicalDistribute[DistributionSpecHash] +----------PhysicalProject +------------filter((dd.k3 = 0)) +--------------PhysicalOlapScan[baseall] + diff --git a/regression-test/data/nereids_rules_p0/cte/test_cte_name_reuse.out b/regression-test/data/nereids_rules_p0/cte/test_cte_name_reuse.out new file mode 100644 index 0000000000..52966eaa68 --- /dev/null +++ b/regression-test/data/nereids_rules_p0/cte/test_cte_name_reuse.out @@ -0,0 +1,10 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !reuse_name_with_other_outer_cte -- +1 1 1 1 + +-- !reuse_name_with_other_outer_cte_and_use_outer_same_name_cte -- +1 1 + +-- !reuse_name_with_self_outer_cte -- +1 1 + diff --git a/regression-test/suites/nereids_p0/hint/fix_leading.groovy b/regression-test/suites/nereids_p0/hint/fix_leading.groovy index b1da3b44b6..6804a60e48 100644 --- a/regression-test/suites/nereids_p0/hint/fix_leading.groovy +++ b/regression-test/suites/nereids_p0/hint/fix_leading.groovy @@ -26,6 +26,7 @@ suite("fix_leading") { // setting planner to nereids sql 'set enable_nereids_planner=true' sql 'set enable_fallback_to_original_planner=false' + sql 'set runtime_filter_mode=OFF' // create tables sql """drop table if exists t1;""" diff --git a/regression-test/suites/nereids_p0/hint/multi_leading.groovy b/regression-test/suites/nereids_p0/hint/multi_leading.groovy new file mode 100644 index 0000000000..d1f83d15eb --- /dev/null +++ b/regression-test/suites/nereids_p0/hint/multi_leading.groovy @@ -0,0 +1,132 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +suite("multi_leading") { + + // create database and tables + sql 'DROP DATABASE IF EXISTS test_multi_leading' + sql 'CREATE DATABASE IF NOT EXISTS test_multi_leading' + sql 'use test_multi_leading' + + // setting planner to nereids + sql 'set enable_nereids_planner=true' + sql 'set enable_fallback_to_original_planner=false' + sql 'set runtime_filter_mode=OFF' + + // create tables + sql """drop table if exists t1;""" + sql """drop table if exists t2;""" + sql """drop table if exists t3;""" + sql """drop table if exists t4;""" + + sql """create table t1 (c1 int, c11 int) distributed by hash(c1) buckets 3 properties('replication_num' = '1');""" + sql """create table t2 (c2 int, c22 int) distributed by hash(c2) buckets 3 properties('replication_num' = '1');""" + sql """create table t3 (c3 int, c33 int) distributed by hash(c3) buckets 3 properties('replication_num' = '1');""" + sql """create table t4 (c4 int, c44 int) distributed by hash(c4) buckets 3 properties('replication_num' = '1');""" + + streamLoad { + table "t1" + db "test_multi_leading" + set 'column_separator', '|' + set 'format', 'csv' + file 't1.csv' + time 10000 + } + + streamLoad { + table "t2" + db "test_multi_leading" + set 'column_separator', '|' + set 'format', 'csv' + file 't2.csv' + time 10000 + } + + streamLoad { + table "t3" + db "test_multi_leading" + set 'column_separator', '|' + set 'format', 'csv' + file 't3.csv' + time 10000 + } + + streamLoad { + table "t4" + db "test_multi_leading" + set 'column_separator', '|' + set 'format', 'csv' + file 't4.csv' + time 10000 + } + + // test cte inline + qt_sql1_1 """explain shape plan with cte as (select c11, c1 from t1 join t2 on c1 = c2) select count(*) from cte,t1 where cte.c1 = t1.c1 and t1.c1 > 300;""" + qt_sql1_2 """explain shape plan with cte as (select /*+ leading(t2 t1) */ c11, c1 from t1 join t2 on c1 = c2) select /*+ leading(t1 cte)*/ count(*) from cte,t1 where cte.c1 = t1.c1 and t1.c1 > 300;""" + qt_sql1_3 """explain shape plan with cte as (select /*+ leading(t1 t2) */ c11, c1 from t1 join t2 on c1 = c2) select /*+ leading(t1 cte)*/ count(*) from cte,t1 where cte.c1 = t1.c1 and t1.c1 > 300;""" + qt_sql1_4 """explain shape plan with cte as (select /*+ leading(t1 t2) */ c11, c1 from t1 join t2 on c1 = c2) select /*+ leading(t1 cte)*/ count(*) from cte,t1 where cte.c1 = t1.c1 and t1.c1 > 300;""" + + qt_sql1_res_1 """with cte as (select c11, c1 from t1 join t2 on c1 = c2) select count(*) from cte,t1 where cte.c1 = t1.c1 and t1.c1 > 300;""" + qt_sql1_res_2 """with cte as (select /*+ leading(t2 t1) */ c11, c1 from t1 join t2 on c1 = c2) select /*+ leading(t1 cte)*/ count(*) from cte,t1 where cte.c1 = t1.c1 and t1.c1 > 300;""" + qt_sql1_res_3 """with cte as (select /*+ leading(t1 t2) */ c11, c1 from t1 join t2 on c1 = c2) select /*+ leading(t1 cte)*/ count(*) from cte,t1 where cte.c1 = t1.c1 and t1.c1 > 300;""" + qt_sql1_res_4 """with cte as (select /*+ leading(t1 t2) */ c11, c1 from t1 join t2 on c1 = c2) select /*+ leading(t1 cte)*/ count(*) from cte,t1 where cte.c1 = t1.c1 and t1.c1 > 300;""" + + // test subquery alone + qt_sql2_1 """explain shape plan select count(*) from (select c1, c11 from t1 join t2 on c1 = c2) as alias1 join t3 on alias1.c1 = t3.c3;""" + qt_sql2_2 """explain shape plan select /*+ leading(t3 alias1) */ count(*) from (select c1, c11 from t1 join t2 on c1 = c2) as alias1 join t3 on alias1.c1 = t3.c3;""" + qt_sql2_3 """explain shape plan select count(*) from (select /*+ leading(t2 t1) */ c1, c11 from t1 join t2 on c1 = c2) as alias1 join t3 on alias1.c1 = t3.c3;""" + qt_sql2_4 """explain shape plan select /*+ leading(t3 alias1) */ count(*) from (select /*+ leading(t2 t1) */ c1, c11 from t1 join t2 on c1 = c2) as alias1 join t3 on alias1.c1 = t3.c3;""" + + qt_sql2_res_1 """select count(*) from (select c1, c11 from t1 join t2 on c1 = c2) as alias1 join t3 on alias1.c1 = t3.c3;""" + qt_sql2_res_2 """select /*+ leading(t3 alias1) */ count(*) from (select c1, c11 from t1 join t2 on c1 = c2) as alias1 join t3 on alias1.c1 = t3.c3;""" + qt_sql2_res_3 """select count(*) from (select /*+ leading(t2 t1) */ c1, c11 from t1 join t2 on c1 = c2) as alias1 join t3 on alias1.c1 = t3.c3;""" + qt_sql2_res_4 """select /*+ leading(t3 alias1) */ count(*) from (select /*+ leading(t2 t1) */ c1, c11 from t1 join t2 on c1 = c2) as alias1 join t3 on alias1.c1 = t3.c3;""" + + // test subquery + cte + qt_sql3_1 """explain shape plan with cte as (select c11, c1 from t1 join t2 on c1 = c2) select count(*) from (select c1, c11 from t1 join t2 on c1 = c2) as alias1 join t3 on alias1.c1 = t3.c3 join cte on alias1.c1 = cte.c11;""" + qt_sql3_2 """explain shape plan with cte as (select /*+ leading(t2 t1) */ c11, c1 from t1 join t2 on c1 = c2) select /*+ leading(t3 alias1) */ count(*) from (select c1, c11 from t1 join t2 on c1 = c2) as alias1 join t3 on alias1.c1 = t3.c3 join cte on alias1.c1 = cte.c11;;""" + qt_sql3_3 """explain shape plan with cte as (select c11, c1 from t1 join t2 on c1 = c2) select count(*) from (select /*+ leading(t2 t1) */ c1, c11 from t1 join t2 on c1 = c2) as alias1 join t3 on alias1.c1 = t3.c3 join cte on alias1.c1 = cte.c11;;""" + qt_sql3_4 """explain shape plan with cte as (select /*+ leading(t2 t1) */ c11, c1 from t1 join t2 on c1 = c2) select /*+ leading(t3 alias1) */ count(*) from (select /*+ leading(t2 t1) */ c1, c11 from t1 join t2 on c1 = c2) as alias1 join t3 on alias1.c1 = t3.c3 join cte on alias1.c1 = cte.c11;;""" + + qt_sql3_res_1 """with cte as (select c11, c1 from t1 join t2 on c1 = c2) select count(*) from (select c1, c11 from t1 join t2 on c1 = c2) as alias1 join t3 on alias1.c1 = t3.c3 join cte on alias1.c1 = cte.c11;;""" + qt_sql3_res_2 """with cte as (select /*+ leading(t2 t1) */ c11, c1 from t1 join t2 on c1 = c2) select /*+ leading(t3 alias1) */ count(*) from (select c1, c11 from t1 join t2 on c1 = c2) as alias1 join t3 on alias1.c1 = t3.c3 join cte on alias1.c1 = cte.c11;;""" + qt_sql3_res_3 """with cte as (select c11, c1 from t1 join t2 on c1 = c2) select count(*) from (select /*+ leading(t2 t1) */ c1, c11 from t1 join t2 on c1 = c2) as alias1 join t3 on alias1.c1 = t3.c3 join cte on alias1.c1 = cte.c11;;""" + qt_sql3_res_4 """with cte as (select /*+ leading(t2 t1) */ c11, c1 from t1 join t2 on c1 = c2) select /*+ leading(t3 alias1) */ count(*) from (select /*+ leading(t2 t1) */ c1, c11 from t1 join t2 on c1 = c2) as alias1 join t3 on alias1.c1 = t3.c3 join cte on alias1.c1 = cte.c11;;""" + + // test multi level subqueries + qt_sql4_0 """explain shape plan select count(*) from (select c1, c11 from t1 join (select c2, c22 from t2 join t4 on c2 = c4) as alias2 on c1 = alias2.c2) as alias1 join t3 on alias1.c1 = t3.c3;""" + qt_sql4_1 """explain shape plan select /*+ leading(t3 alias1) */ count(*) from (select c1, c11 from t1 join (select c2, c22 from t2 join t4 on c2 = c4) as alias2 on c1 = alias2.c2) as alias1 join t3 on alias1.c1 = t3.c3;""" + qt_sql4_2 """explain shape plan select count(*) from (select /*+ leading(alias2 t1) */ c1, c11 from t1 join (select c2, c22 from t2 join t4 on c2 = c4) as alias2 on c1 = alias2.c2) as alias1 join t3 on alias1.c1 = t3.c3;""" + qt_sql4_3 """explain shape plan select count(*) from (select c1, c11 from t1 join (select /*+ leading(t4 t2) */ c2, c22 from t2 join t4 on c2 = c4) as alias2 on c1 = alias2.c2) as alias1 join t3 on alias1.c1 = t3.c3;""" + qt_sql4_4 """explain shape plan select /*+ leading(t3 alias1) */ count(*) from (select /*+ leading(alias2 t1) */ c1, c11 from t1 join (select c2, c22 from t2 join t4 on c2 = c4) as alias2 on c1 = alias2.c2) as alias1 join t3 on alias1.c1 = t3.c3;""" + qt_sql4_5 """explain shape plan select /*+ leading(t3 alias1) */ count(*) from (select c1, c11 from t1 join (select /*+ leading(t4 t2) */ c2, c22 from t2 join t4 on c2 = c4) as alias2 on c1 = alias2.c2) as alias1 join t3 on alias1.c1 = t3.c3;""" + qt_sql4_6 """explain shape plan select count(*) from (select /*+ leading(alias2 t1) */ c1, c11 from t1 join (select /*+ leading(t4 t2) */ c2, c22 from t2 join t4 on c2 = c4) as alias2 on c1 = alias2.c2) as alias1 join t3 on alias1.c1 = t3.c3;""" + qt_sql4_7 """explain shape plan select /*+ leading(t3 alias1) */ count(*) from (select /*+ leading(alias2 t1) */ c1, c11 from t1 join (select /*+ leading(t4 t2) */ c2, c22 from t2 join t4 on c2 = c4) as alias2 on c1 = alias2.c2) as alias1 join t3 on alias1.c1 = t3.c3;""" + + qt_sql4_res_0 """select count(*) from (select c1, c11 from t1 join (select c2, c22 from t2 join t4 on c2 = c4) as alias2 on c1 = alias2.c2) as alias1 join t3 on alias1.c1 = t3.c3;""" + qt_sql4_res_1 """select /*+ leading(t3 alias1) */ count(*) from (select c1, c11 from t1 join (select c2, c22 from t2 join t4 on c2 = c4) as alias2 on c1 = alias2.c2) as alias1 join t3 on alias1.c1 = t3.c3;""" + qt_sql4_res_2 """select count(*) from (select /*+ leading(alias2 t1) */ c1, c11 from t1 join (select c2, c22 from t2 join t4 on c2 = c4) as alias2 on c1 = alias2.c2) as alias1 join t3 on alias1.c1 = t3.c3;""" + qt_sql4_res_3 """select count(*) from (select c1, c11 from t1 join (select /*+ leading(t4 t2) */ c2, c22 from t2 join t4 on c2 = c4) as alias2 on c1 = alias2.c2) as alias1 join t3 on alias1.c1 = t3.c3;""" + qt_sql4_res_4 """select /*+ leading(t3 alias1) */ count(*) from (select /*+ leading(alias2 t1) */ c1, c11 from t1 join (select c2, c22 from t2 join t4 on c2 = c4) as alias2 on c1 = alias2.c2) as alias1 join t3 on alias1.c1 = t3.c3;""" + qt_sql4_res_5 """select /*+ leading(t3 alias1) */ count(*) from (select c1, c11 from t1 join (select /*+ leading(t4 t2) */ c2, c22 from t2 join t4 on c2 = c4) as alias2 on c1 = alias2.c2) as alias1 join t3 on alias1.c1 = t3.c3;""" + qt_sql4_res_6 """select count(*) from (select /*+ leading(alias2 t1) */ c1, c11 from t1 join (select /*+ leading(t4 t2) */ c2, c22 from t2 join t4 on c2 = c4) as alias2 on c1 = alias2.c2) as alias1 join t3 on alias1.c1 = t3.c3;""" + qt_sql4_res_7 """select /*+ leading(t3 alias1) */ count(*) from (select /*+ leading(alias2 t1) */ c1, c11 from t1 join (select /*+ leading(t4 t2) */ c2, c22 from t2 join t4 on c2 = c4) as alias2 on c1 = alias2.c2) as alias1 join t3 on alias1.c1 = t3.c3;""" + + // use cte in scalar query + qt_sql5_1 """explain shape plan with cte as (select c11, c1 from t1) SELECT c1 FROM cte group by c1 having sum(cte.c11) > (select 0.05 * avg(t1.c11) from t1 join cte on t1.c1 = cte.c11 )""" + qt_sql5_2 """explain shape plan with cte as (select c11, c1 from t1) SELECT c1 FROM cte group by c1 having sum(cte.c11) > (select /*+ leading(cte t1) */ 0.05 * avg(t1.c11) from t1 join cte on t1.c1 = cte.c11 )""" +} \ No newline at end of file diff --git a/regression-test/suites/nereids_p0/hint/test_distribute.groovy b/regression-test/suites/nereids_p0/hint/test_distribute.groovy new file mode 100644 index 0000000000..a8b4c308d4 --- /dev/null +++ b/regression-test/suites/nereids_p0/hint/test_distribute.groovy @@ -0,0 +1,927 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +suite("test_distribute") { + // create database and tables + sql 'DROP DATABASE IF EXISTS test_distribute' + sql 'CREATE DATABASE IF NOT EXISTS test_distribute' + sql 'use test_distribute' + + // setting planner to nereids + sql 'set enable_nereids_planner=true' + sql 'set enable_fallback_to_original_planner=false' + sql 'set runtime_filter_mode=OFF' + + // create tables + sql """drop table if exists t1;""" + sql """drop table if exists t2;""" + sql """drop table if exists t3;""" + sql """drop table if exists t4;""" + + sql """create table t1 (c1 int, c11 int) distributed by hash(c1) buckets 3 properties('replication_num' = '1');""" + sql """create table t2 (c2 int, c22 int) distributed by hash(c2) buckets 3 properties('replication_num' = '1');""" + sql """create table t3 (c3 int, c33 int) distributed by hash(c3) buckets 3 properties('replication_num' = '1');""" + sql """create table t4 (c4 int, c44 int) distributed by hash(c4) buckets 3 properties('replication_num' = '1');""" + + streamLoad { + table "t1" + db "test_distribute" + set 'column_separator', '|' + set 'format', 'csv' + file 't1.csv' + time 10000 + } + + streamLoad { + table "t2" + db "test_distribute" + set 'column_separator', '|' + set 'format', 'csv' + file 't2.csv' + time 10000 + } + + streamLoad { + table "t3" + db "test_distribute" + set 'column_separator', '|' + set 'format', 'csv' + file 't3.csv' + time 10000 + } + + streamLoad { + table "t4" + db "test_distribute" + set 'column_separator', '|' + set 'format', 'csv' + file 't4.csv' + time 10000 + } + +//// check table count + qt_select1_1 """select count(*) from t1;""" + qt_select1_2 """select count(*) from t2;""" + qt_select1_3 """select count(*) from t3;""" + qt_select1_4 """select count(*) from t4;""" + +//// test inner join with all edge and vertax is complete and equal predicates + qt_select2_1 """explain shape plan select count(*) from t1 join t2 on c1 = c2;""" + qt_select2_2 """explain shape plan select count(*) from t1 join [shuffle] t2 on c1 = c2;""" + qt_select2_3 """explain shape plan select count(*) from t1 join [broadcast] t2 on c1 = c2;""" + + qt_select3_1 """explain shape plan select count(*) from t1 join t2 on c1 = c2 join [shuffle] t3 on c2 = c3;""" + qt_select3_2 """explain shape plan select count(*) from t1 join [shuffle] t2 on c1 = c2 join t3 on c2 = c3;""" + qt_select3_3 """explain shape plan select count(*) from t1 join t2 on c1 = c2 join [broadcast] t3 on c2 = c3;""" + qt_select3_4 """explain shape plan select count(*) from t1 join [broadcast] t2 on c1 = c2 join t3 on c2 = c3;""" + qt_select3_5 """explain shape plan select count(*) from t1 join [broadcast] t2 on c1 = c2 join [shuffle] t3 on c2 = c3;""" + qt_select3_6 """explain shape plan select count(*) from t1 join [shuffle] t2 on c1 = c2 join [broadcast] t3 on c2 = c3;""" + qt_select3_7 """explain shape plan select count(*) from t1 join [shuffle] t2 on c1 = c2 join [shuffle] t3 on c2 = c3;""" + qt_select3_8 """explain shape plan select count(*) from t1 join [broadcast] t2 on c1 = c2 join [broadcast] t3 on c2 = c3;""" + + qt_select4_1 """explain shape plan select count(*) from t1 join [shuffle] t2 on c1 = c2 join [shuffle] t3 on c2 = c3 join [shuffle] t4 on c3 = c4;""" + qt_select4_2 """explain shape plan select count(*) from t1 join [broadcast] t2 on c1 = c2 join t3 on c2 = c3 join [broadcast] t4 on c3 = c4;""" + qt_select4_3 """explain shape plan select count(*) from t1 join t2 on c1 = c2 join [broadcast] t3 on c2 = c3 join t4 on c3 = c4;""" + qt_select4_4 """explain shape plan select count(*) from t1 join [broadcast] t2 on c1 = c2 join [broadcast] t3 on c2 = c3 join [broadcast] t4 on c3 = c4;""" + qt_select4_5 """explain shape plan select count(*) from t1 join [broadcast] t2 on c1 = c2 join [shuffle] t3 on c2 = c3 join t4 on c3 = c4;""" + + qt_select5_1 """explain shape plan select count(*) from t1 join [shuffle] t2 on c1 > c2;""" + qt_select5_2 """explain shape plan select count(*) from t1 join [broadcast] t2 on c1 > c2;""" + + qt_select6_1 """explain shape plan select count(*) from t1 join [shuffle] t2 on c1 > c2 join t3 on c2 > c3 where c1 < 100;""" + qt_select6_2 """explain shape plan select count(*) from t1 join t2 on c1 > c2 join t3 on c2 > c3 where c1 < 100;""" + + // (A leftjoin B on (Pab)) leftjoin C on (Pac) = (A leftjoin C on (Pac)) leftjoin B on (Pab) + qt_select7_1 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left join t3 on c1 = c3;""" + qt_select7_2 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 left join [shuffle] t3 on c1 = c3;""" + + qt_select8_1 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 left join [broadcast] t3 on c1 = c3 where c1 between 100 and 300;""" + qt_select8_2 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 left join t3 on c1 = c3 where c1 between 100 and 300;""" + + qt_select9_1 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 left join [broadcast] t3 on c1 = c3 where c3 between 100 and 300;""" + qt_select9_2 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left join [shuffle] t3 on c1 = c3 where c3 between 100 and 300;""" + + qt_select10_1 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 left join t3 on c1 = c3 where c2 between 100 and 300;""" + qt_select10_2 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 left join t3 on c1 = c3 where c2 between 100 and 300;""" + + qt_select11_1 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left join [broadcast] t3 on c1 > c3 where c3 between 100 and 300;""" + qt_select11_2 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 left join t3 on c1 > c3 where c3 between 100 and 300;""" + + // (A leftjoin B on (Pab)) leftjoin C on (Pbc) = A leftjoin (B leftjoin C on (Pbc)) on (Pab) + qt_select12_1 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 left join t3 on c2 = c3;""" + qt_select12_2 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 left join [broadcast] t3 on c2 = c3;""" + + qt_select13_1 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 left join t3 on c2 = c3 where c1 between 100 and 300;""" + qt_select13_2 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 left join [broadcast] t3 on c2 = c3 where c1 between 100 and 300;""" + + qt_select14_1 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 left join [broadcast] t3 on c2 = c3 where c2 between 100 and 300;""" + qt_select14_2 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 left join t3 on c2 = c3 where c2 between 100 and 300;""" + + qt_select15_1 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 left join t3 on c2 = c3 where c3 between 100 and 300;""" + qt_select15_2 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 left join [broadcast] t3 on c2 = c3 where c3 between 100 and 300;""" + + //// test outer join which can not swap + // A leftjoin (B join C on (Pbc)) on (Pab) != (A leftjoin B on (Pab)) join C on (Pbc) output should be unused when explain + // this can be done because left join can be eliminated to inner join + qt_select16_1 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 join t3 on c2 = c3;""" + qt_select16_2 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 join [broadcast] t3 on c2 = c3;""" + + // inner join + full outer join + qt_select17_1 """explain shape plan select count(*) from t1 join t2 on c1 = c2 full join t3 on c2 = c3;""" + qt_select17_2 """explain shape plan select count(*) from t1 join [broadcast] t2 on c1 = c2 full join t3 on c2 = c3;""" + qt_select17_3 """explain shape plan select count(*) from t1 join t2 on c1 = c2 full join [broadcast] t3 on c2 = c3;""" + qt_select17_4 """explain shape plan select count(*) from t1 join [broadcast] t2 on c1 = c2 full join [broadcast] t3 on c2 = c3;""" + qt_select17_5 """explain shape plan select count(*) from t1 join [shuffle] t2 on c1 = c2 full join t3 on c2 = c3;""" + qt_select17_6 """explain shape plan select count(*) from t1 join t2 on c1 = c2 full join [shuffle] t3 on c2 = c3;""" + qt_select17_7 """explain shape plan select count(*) from t1 join [shuffle] t2 on c1 = c2 full join [shuffle] t3 on c2 = c3;""" + qt_select17_8 """explain shape plan select count(*) from t1 join [shuffle] t2 on c1 = c2 full join [broadcast] t3 on c2 = c3;""" + qt_select17_9 """explain shape plan select count(*) from t1 join [broadcast] t2 on c1 = c2 full join [shuffle] t3 on c2 = c3;""" + + // inner join + left outer join + qt_select18_1 """explain shape plan select count(*) from t1 join t2 on c1 = c2 left join t3 on c2 = c3;""" + qt_select18_2 """explain shape plan select count(*) from t1 join [broadcast] t2 on c1 = c2 left join t3 on c2 = c3;""" + qt_select18_3 """explain shape plan select count(*) from t1 join t2 on c1 = c2 left join [broadcast] t3 on c2 = c3;""" + qt_select18_4 """explain shape plan select count(*) from t1 join [broadcast] t2 on c1 = c2 left join [broadcast] t3 on c2 = c3;""" + qt_select18_5 """explain shape plan select count(*) from t1 join [shuffle] t2 on c1 = c2 left join t3 on c2 = c3;""" + qt_select18_6 """explain shape plan select count(*) from t1 join t2 on c1 = c2 left join [shuffle] t3 on c2 = c3;""" + qt_select18_7 """explain shape plan select count(*) from t1 join [shuffle] t2 on c1 = c2 left join [shuffle] t3 on c2 = c3;""" + qt_select18_8 """explain shape plan select count(*) from t1 join [shuffle] t2 on c1 = c2 left join [broadcast] t3 on c2 = c3;""" + qt_select18_9 """explain shape plan select count(*) from t1 join [broadcast] t2 on c1 = c2 left join [shuffle] t3 on c2 = c3;""" + + // inner join + right outer join + qt_select19_1 """explain shape plan select count(*) from t1 join t2 on c1 = c2 right join t3 on c2 = c3;""" + qt_select19_2 """explain shape plan select count(*) from t1 join [broadcast] t2 on c1 = c2 right join t3 on c2 = c3;""" + qt_select19_3 """explain shape plan select count(*) from t1 join t2 on c1 = c2 right join [broadcast] t3 on c2 = c3;""" + qt_select19_4 """explain shape plan select count(*) from t1 join [broadcast] t2 on c1 = c2 right join [broadcast] t3 on c2 = c3;""" + qt_select19_5 """explain shape plan select count(*) from t1 join [shuffle] t2 on c1 = c2 right join t3 on c2 = c3;""" + qt_select19_6 """explain shape plan select count(*) from t1 join t2 on c1 = c2 right join [shuffle] t3 on c2 = c3;""" + qt_select19_7 """explain shape plan select count(*) from t1 join [shuffle] t2 on c1 = c2 right join [shuffle] t3 on c2 = c3;""" + qt_select19_8 """explain shape plan select count(*) from t1 join [shuffle] t2 on c1 = c2 right join [broadcast] t3 on c2 = c3;""" + qt_select19_9 """explain shape plan select count(*) from t1 join [broadcast] t2 on c1 = c2 right join [shuffle] t3 on c2 = c3;""" + + // inner join + semi join + qt_select20_1 """explain shape plan select count(*) from t1 join t2 on c1 = c2 left semi join t3 on c2 = c3;""" + qt_select20_2 """explain shape plan select count(*) from t1 join [broadcast] t2 on c1 = c2 left semi join t3 on c2 = c3;""" + qt_select20_3 """explain shape plan select count(*) from t1 join t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3;""" + qt_select20_4 """explain shape plan select count(*) from t1 join [broadcast] t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3;""" + qt_select20_5 """explain shape plan select count(*) from t1 join [shuffle] t2 on c1 = c2 left semi join t3 on c2 = c3;""" + qt_select20_6 """explain shape plan select count(*) from t1 join t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3;""" + qt_select20_7 """explain shape plan select count(*) from t1 join [shuffle] t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3;""" + qt_select20_8 """explain shape plan select count(*) from t1 join [shuffle] t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3;""" + qt_select20_9 """explain shape plan select count(*) from t1 join [broadcast] t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3;""" + + // inner join + anti join + qt_select21_1 """explain shape plan select count(*) from t1 join t2 on c1 = c2 left anti join t3 on c2 = c3;""" + qt_select21_2 """explain shape plan select count(*) from t1 join [broadcast] t2 on c1 = c2 left anti join t3 on c2 = c3;""" + qt_select21_3 """explain shape plan select count(*) from t1 join t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3;""" + qt_select21_4 """explain shape plan select count(*) from t1 join [broadcast] t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3;""" + qt_select21_5 """explain shape plan select count(*) from t1 join [shuffle] t2 on c1 = c2 left anti join t3 on c2 = c3;""" + qt_select21_6 """explain shape plan select count(*) from t1 join t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3;""" + qt_select21_7 """explain shape plan select count(*) from t1 join [shuffle] t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3;""" + qt_select21_8 """explain shape plan select count(*) from t1 join [shuffle] t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3;""" + qt_select21_9 """explain shape plan select count(*) from t1 join [broadcast] t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3;""" + + // left join + left join + qt_select22_1 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 left join t3 on c2 = c3;""" + qt_select22_2 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 left join t3 on c2 = c3;""" + qt_select22_3 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 left join [broadcast] t3 on c2 = c3;""" + qt_select22_4 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 left join [broadcast] t3 on c2 = c3;""" + qt_select22_5 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left join t3 on c2 = c3;""" + qt_select22_6 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 left join [shuffle] t3 on c2 = c3;""" + qt_select22_7 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left join [shuffle] t3 on c2 = c3;""" + qt_select22_8 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left join [broadcast] t3 on c2 = c3;""" + qt_select22_9 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 left join [shuffle] t3 on c2 = c3;""" + + // left join + right join + qt_select23_1 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 right join t3 on c2 = c3;""" + qt_select23_2 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 right join t3 on c2 = c3;""" + qt_select23_3 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 right join [broadcast] t3 on c2 = c3;""" + qt_select23_4 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 right join [broadcast] t3 on c2 = c3;""" + qt_select23_5 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 right join t3 on c2 = c3;""" + qt_select23_6 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 right join [shuffle] t3 on c2 = c3;""" + qt_select23_7 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 right join [shuffle] t3 on c2 = c3;""" + qt_select23_8 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 right join [broadcast] t3 on c2 = c3;""" + qt_select23_9 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 right join [shuffle] t3 on c2 = c3;""" + + // left join + semi join + qt_select24_1 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 left semi join t3 on c2 = c3;""" + qt_select24_2 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 left semi join t3 on c2 = c3;""" + qt_select24_3 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3;""" + qt_select24_4 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3;""" + qt_select24_5 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left semi join t3 on c2 = c3;""" + qt_select24_6 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3;""" + qt_select24_7 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3;""" + qt_select24_8 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3;""" + qt_select24_9 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3;""" + + // left join + anti join + qt_select25_1 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 left anti join t3 on c2 = c3;""" + qt_select25_2 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 left anti join t3 on c2 = c3;""" + qt_select25_3 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3;""" + qt_select25_4 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3;""" + qt_select25_5 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left anti join t3 on c2 = c3;""" + qt_select25_6 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3;""" + qt_select25_7 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3;""" + qt_select25_8 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3;""" + qt_select25_9 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3;""" + + // right join + semi join + qt_select26_1 """explain shape plan select count(*) from t1 right join t2 on c1 = c2 left semi join t3 on c2 = c3;""" + qt_select26_2 """explain shape plan select count(*) from t1 right join [broadcast] t2 on c1 = c2 left semi join t3 on c2 = c3;""" + qt_select26_3 """explain shape plan select count(*) from t1 right join t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3;""" + qt_select26_4 """explain shape plan select count(*) from t1 right join [broadcast] t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3;""" + qt_select26_5 """explain shape plan select count(*) from t1 right join [shuffle] t2 on c1 = c2 left semi join t3 on c2 = c3;""" + qt_select26_6 """explain shape plan select count(*) from t1 right join t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3;""" + qt_select26_7 """explain shape plan select count(*) from t1 right join [shuffle] t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3;""" + qt_select26_8 """explain shape plan select count(*) from t1 right join [shuffle] t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3;""" + qt_select26_9 """explain shape plan select count(*) from t1 right join [broadcast] t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3;""" + + // right join + anti join + qt_select27_1 """explain shape plan select count(*) from t1 right join t2 on c1 = c2 left anti join t3 on c2 = c3;""" + qt_select27_2 """explain shape plan select count(*) from t1 right join [broadcast] t2 on c1 = c2 left anti join t3 on c2 = c3;""" + qt_select27_3 """explain shape plan select count(*) from t1 right join t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3;""" + qt_select27_4 """explain shape plan select count(*) from t1 right join [broadcast] t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3;""" + qt_select27_5 """explain shape plan select count(*) from t1 right join [shuffle] t2 on c1 = c2 left anti join t3 on c2 = c3;""" + qt_select27_6 """explain shape plan select count(*) from t1 right join t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3;""" + qt_select27_7 """explain shape plan select count(*) from t1 right join [shuffle] t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3;""" + qt_select27_8 """explain shape plan select count(*) from t1 right join [shuffle] t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3;""" + qt_select27_9 """explain shape plan select count(*) from t1 right join [broadcast] t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3;""" + + // semi join + anti join + qt_select28_1 """explain shape plan select count(*) from t1 left semi join t2 on c1 = c2 left anti join t3 on c1 = c3;""" + qt_select28_2 """explain shape plan select count(*) from t1 left semi join [broadcast] t2 on c1 = c2 left anti join t3 on c1 = c3;""" + qt_select28_3 """explain shape plan select count(*) from t1 left semi join t2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3;""" + qt_select28_4 """explain shape plan select count(*) from t1 left semi join [broadcast] t2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3;""" + qt_select28_5 """explain shape plan select count(*) from t1 left semi join [shuffle] t2 on c1 = c2 left anti join t3 on c1 = c3;""" + qt_select28_6 """explain shape plan select count(*) from t1 left semi join t2 on c1 = c2 left anti join [shuffle] t3 on c1 = c3;""" + qt_select28_7 """explain shape plan select count(*) from t1 left semi join [shuffle] t2 on c1 = c2 left anti join [shuffle] t3 on c1 = c3;""" + qt_select28_8 """explain shape plan select count(*) from t1 left semi join [shuffle] t2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3;""" + qt_select28_9 """explain shape plan select count(*) from t1 left semi join [broadcast] t2 on c1 = c2 left anti join [shuffle] t3 on c1 = c3;""" + + // left join + left join + inner join + qt_select32_1 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left join t3 on c2 = c3 join t4 on c3 = c4;""" + qt_select32_2 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 left join [shuffle] t3 on c2 = c3 join t4 on c3 = c4;""" + qt_select32_3 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 left join t3 on c2 = c3 join [shuffle] t4 on c3 = c4;""" + qt_select32_4 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left join [shuffle] t3 on c2 = c3 join t4 on c3 = c4;""" + qt_select32_5 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left join t3 on c2 = c3 join [shuffle] t4 on c3 = c4;""" + qt_select32_6 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 left join [shuffle] t3 on c2 = c3 join [shuffle] t4 on c3 = c4;""" + qt_select32_7 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 left join [broadcast] t3 on c2 = c3 join t4 on c3 = c4;""" + qt_select32_8 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 left join t3 on c2 = c3 join [broadcast] t4 on c3 = c4;""" + qt_select32_9 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 left join t3 on c2 = c3 join [broadcast] t4 on c3 = c4;""" + qt_select32_10 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 left join [broadcast] t3 on c2 = c3 join t4 on c3 = c4;""" + qt_select32_11 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left join [broadcast] t3 on c2 = c3 join [broadcast] t4 on c3 = c4;""" + qt_select32_12 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left join [broadcast] t3 on c2 = c3 join [broadcast] t4 on c3 = c4;""" + qt_select32_13 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left join t3 on c2 = c3 join [broadcast] t4 on c3 = c4;""" + +// left join + right join + inner join + qt_select33_1 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 right join t3 on c2 = c3 join t4 on c3 = c4;""" + qt_select33_2 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 right join [shuffle] t3 on c2 = c3 join t4 on c3 = c4;""" + qt_select33_3 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 right join t3 on c2 = c3 join [shuffle] t4 on c3 = c4;""" + qt_select33_4 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 right join [shuffle] t3 on c2 = c3 join t4 on c3 = c4;""" + qt_select33_5 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 right join t3 on c2 = c3 join [shuffle] t4 on c3 = c4;""" + qt_select33_6 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 right join [shuffle] t3 on c2 = c3 join [shuffle] t4 on c3 = c4;""" + qt_select33_7 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 right join [broadcast] t3 on c2 = c3 join t4 on c3 = c4;""" + qt_select33_8 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 right join t3 on c2 = c3 join [broadcast] t4 on c3 = c4;""" + qt_select33_9 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 right join t3 on c2 = c3 join [broadcast] t4 on c3 = c4;""" + qt_select33_10 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 right join [broadcast] t3 on c2 = c3 join t4 on c3 = c4;""" + qt_select33_11 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 right join [broadcast] t3 on c2 = c3 join [broadcast] t4 on c3 = c4;""" + qt_select33_12 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 right join [broadcast] t3 on c2 = c3 join [broadcast] t4 on c3 = c4;""" + qt_select33_13 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 right join t3 on c2 = c3 join [broadcast] t4 on c3 = c4;""" + +// left join + semi join + inner join + qt_select34_1 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left semi join t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select34_2 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select34_3 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 left semi join t3 on c2 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select34_4 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select34_5 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left semi join t3 on c2 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select34_6 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select34_7 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select34_8 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 left semi join t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select34_9 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 left semi join t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select34_10 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select34_11 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select34_12 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select34_13 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left semi join t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + +// left join + anti join + inner join + qt_select35_1 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left anti join t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select35_2 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select35_3 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 left anti join t3 on c2 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select35_4 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select35_5 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left anti join t3 on c2 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select35_6 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select35_7 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select35_8 """explain shape plan select count(*) from t1 left join t2 on c1 = c2 left anti join t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select35_9 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 left anti join t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select35_10 """explain shape plan select count(*) from t1 left join [broadcast] t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select35_11 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select35_12 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select35_13 """explain shape plan select count(*) from t1 left join [shuffle] t2 on c1 = c2 left anti join t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + +// right join + semi join + inner join + qt_select36_1 """explain shape plan select count(*) from t1 right join [shuffle] t2 on c1 = c2 left semi join t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select36_2 """explain shape plan select count(*) from t1 right join t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select36_3 """explain shape plan select count(*) from t1 right join t2 on c1 = c2 left semi join t3 on c2 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select36_4 """explain shape plan select count(*) from t1 right join [shuffle] t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select36_5 """explain shape plan select count(*) from t1 right join [shuffle] t2 on c1 = c2 left semi join t3 on c2 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select36_6 """explain shape plan select count(*) from t1 right join [broadcast] t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select36_7 """explain shape plan select count(*) from t1 right join t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select36_8 """explain shape plan select count(*) from t1 right join t2 on c1 = c2 left semi join t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select36_9 """explain shape plan select count(*) from t1 right join [broadcast] t2 on c1 = c2 left semi join t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select36_10 """explain shape plan select count(*) from t1 right join [broadcast] t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select36_11 """explain shape plan select count(*) from t1 right join [shuffle] t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select36_12 """explain shape plan select count(*) from t1 right join [shuffle] t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select36_13 """explain shape plan select count(*) from t1 right join [shuffle] t2 on c1 = c2 left semi join t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + +// right join + anti join + inner join + qt_select37_1 """explain shape plan select count(*) from t1 right join [shuffle] t2 on c1 = c2 left anti join t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select37_2 """explain shape plan select count(*) from t1 right join t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select37_3 """explain shape plan select count(*) from t1 right join t2 on c1 = c2 left anti join t3 on c2 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select37_4 """explain shape plan select count(*) from t1 right join [shuffle] t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select37_5 """explain shape plan select count(*) from t1 right join [shuffle] t2 on c1 = c2 left anti join t3 on c2 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select37_6 """explain shape plan select count(*) from t1 right join [broadcast] t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select37_7 """explain shape plan select count(*) from t1 right join t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select37_8 """explain shape plan select count(*) from t1 right join t2 on c1 = c2 left anti join t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select37_9 """explain shape plan select count(*) from t1 right join [broadcast] t2 on c1 = c2 left anti join t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select37_10 """explain shape plan select count(*) from t1 right join [broadcast] t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select37_11 """explain shape plan select count(*) from t1 right join [shuffle] t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select37_12 """explain shape plan select count(*) from t1 right join [shuffle] t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select37_13 """explain shape plan select count(*) from t1 right join [shuffle] t2 on c1 = c2 left anti join t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + +// semi join + anti join + inner join + qt_select38_1 """explain shape plan select count(*) from t1 left semi join [shuffle] t2 on c1 = c2 left anti join t3 on c1 = c3 join t4 on c1 = c4;""" + qt_select38_2 """explain shape plan select count(*) from t1 left semi join t2 on c1 = c2 left anti join [shuffle] t3 on c1 = c3 join t4 on c1 = c4;""" + qt_select38_3 """explain shape plan select count(*) from t1 left semi join t2 on c1 = c2 left anti join t3 on c1 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select38_4 """explain shape plan select count(*) from t1 left semi join [shuffle] t2 on c1 = c2 left anti join [shuffle] t3 on c1 = c3 join t4 on c1 = c4;""" + qt_select38_5 """explain shape plan select count(*) from t1 left semi join [shuffle] t2 on c1 = c2 left anti join t3 on c1 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select38_6 """explain shape plan select count(*) from t1 left semi join [broadcast] t2 on c1 = c2 left anti join [shuffle] t3 on c1 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select38_7 """explain shape plan select count(*) from t1 left semi join t2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3 join t4 on c1 = c4;""" + qt_select38_8 """explain shape plan select count(*) from t1 left semi join t2 on c1 = c2 left anti join t3 on c1 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select38_9 """explain shape plan select count(*) from t1 left semi join [broadcast] t2 on c1 = c2 left anti join t3 on c1 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select38_10 """explain shape plan select count(*) from t1 left semi join [broadcast] t2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3 join t4 on c1 = c4;""" + qt_select38_11 """explain shape plan select count(*) from t1 left semi join [shuffle] t2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select38_12 """explain shape plan select count(*) from t1 left semi join [shuffle] t2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select38_13 """explain shape plan select count(*) from t1 left semi join [shuffle] t2 on c1 = c2 left anti join t3 on c1 = c3 join [broadcast] t4 on c1 = c4;""" + +// alias +// inner join + anti join + qt_select41_1 """explain shape plan select count(*) from t1 join (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select41_2 """explain shape plan select count(*) from t1 join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select41_3 """explain shape plan select count(*) from t1 join (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select41_4 """explain shape plan select count(*) from t1 join (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select41_5 """explain shape plan select count(*) from t1 join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select41_6 """explain shape plan select count(*) from t1 join (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select41_7 """explain shape plan select count(*) from t1 join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select41_8 """explain shape plan select count(*) from t1 join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select41_9 """explain shape plan select count(*) from t1 join (select c2 from t2) as alias2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select41_10 """explain shape plan select count(*) from t1 join (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select41_11 """explain shape plan select count(*) from t1 join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select41_12 """explain shape plan select count(*) from t1 join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select41_13 """explain shape plan select count(*) from t1 join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + +// left join + left join + qt_select42_1 """explain shape plan select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select42_2 """explain shape plan select count(*) from t1 left join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select42_3 """explain shape plan select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select42_4 """explain shape plan select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left join t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select42_5 """explain shape plan select count(*) from t1 left join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select42_6 """explain shape plan select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select42_7 """explain shape plan select count(*) from t1 left join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select42_8 """explain shape plan select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select42_9 """explain shape plan select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select42_10 """explain shape plan select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left join t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select42_11 """explain shape plan select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select42_12 """explain shape plan select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left join t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select42_13 """explain shape plan select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + +// left join + right join + qt_select43_1 """explain shape plan select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 right join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select43_2 """explain shape plan select count(*) from t1 left join [broadcast] (select c2 from t2) as alias2 on c1 = c2 right join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select43_3 """explain shape plan select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 right join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select43_4 """explain shape plan select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 right join t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select43_5 """explain shape plan select count(*) from t1 left join [broadcast] (select c2 from t2) as alias2 on c1 = c2 right join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select43_6 """explain shape plan select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 right join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select43_7 """explain shape plan select count(*) from t1 left join [broadcast] (select c2 from t2) as alias2 on c1 = c2 right join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select43_8 """explain shape plan select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 right join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select43_9 """explain shape plan select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 right join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select43_10 """explain shape plan select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 right join t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select43_11 """explain shape plan select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 right join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select43_12 """explain shape plan select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 right join t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select43_13 """explain shape plan select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 right join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + +// left join + semi join + qt_select44_1 """explain shape plan select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left semi join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select44_2 """explain shape plan select count(*) from t1 left join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left semi join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select44_3 """explain shape plan select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select44_4 """explain shape plan select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left semi join t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select44_5 """explain shape plan select count(*) from t1 left join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select44_6 """explain shape plan select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select44_7 """explain shape plan select count(*) from t1 left join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select44_8 """explain shape plan select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left semi join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select44_9 """explain shape plan select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select44_10 """explain shape plan select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left semi join t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select44_11 """explain shape plan select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select44_12 """explain shape plan select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left semi join t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select44_13 """explain shape plan select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + +// left join + anti join + qt_select45_1 """explain shape plan select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select45_2 """explain shape plan select count(*) from t1 left join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select45_3 """explain shape plan select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select45_4 """explain shape plan select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select45_5 """explain shape plan select count(*) from t1 left join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select45_6 """explain shape plan select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select45_7 """explain shape plan select count(*) from t1 left join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select45_8 """explain shape plan select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select45_9 """explain shape plan select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select45_10 """explain shape plan select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select45_11 """explain shape plan select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select45_12 """explain shape plan select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select45_13 """explain shape plan select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + +// right join + semi join + qt_select46_1 """explain shape plan select count(*) from t1 right join (select c2 from t2) as alias2 on c1 = c2 left semi join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select46_2 """explain shape plan select count(*) from t1 right join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left semi join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select46_3 """explain shape plan select count(*) from t1 right join (select c2 from t2) as alias2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select46_4 """explain shape plan select count(*) from t1 right join (select c2 from t2) as alias2 on c1 = c2 left semi join t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select46_5 """explain shape plan select count(*) from t1 right join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select46_6 """explain shape plan select count(*) from t1 right join (select c2 from t2) as alias2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select46_7 """explain shape plan select count(*) from t1 right join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select46_8 """explain shape plan select count(*) from t1 right join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left semi join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select46_9 """explain shape plan select count(*) from t1 right join (select c2 from t2) as alias2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select46_10 """explain shape plan select count(*) from t1 right join (select c2 from t2) as alias2 on c1 = c2 left semi join t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select46_11 """explain shape plan select count(*) from t1 right join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select46_12 """explain shape plan select count(*) from t1 right join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left semi join t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select46_13 """explain shape plan select count(*) from t1 right join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + +// right join + anti join + qt_select47_1 """explain shape plan select count(*) from t1 right join (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c1 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select47_2 """explain shape plan select count(*) from t1 right join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c1 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select47_3 """explain shape plan select count(*) from t1 right join (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select47_4 """explain shape plan select count(*) from t1 right join (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c1 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select47_5 """explain shape plan select count(*) from t1 right join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select47_6 """explain shape plan select count(*) from t1 right join (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select47_7 """explain shape plan select count(*) from t1 right join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select47_8 """explain shape plan select count(*) from t1 right join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c1 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select47_9 """explain shape plan select count(*) from t1 right join (select c2 from t2) as alias2 on c1 = c2 left anti join [shuffle] t3 on c1 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select47_10 """explain shape plan select count(*) from t1 right join (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c1 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select47_11 """explain shape plan select count(*) from t1 right join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join [shuffle] t3 on c1 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select47_12 """explain shape plan select count(*) from t1 right join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c1 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select47_13 """explain shape plan select count(*) from t1 right join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join [shuffle] t3 on c1 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + +// semi join + anti join + qt_select48_1 """explain shape plan select count(*) from t1 left semi join (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c1 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select48_2 """explain shape plan select count(*) from t1 left semi join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c1 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select48_3 """explain shape plan select count(*) from t1 left semi join (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select48_4 """explain shape plan select count(*) from t1 left semi join (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c1 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select48_5 """explain shape plan select count(*) from t1 left semi join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select48_6 """explain shape plan select count(*) from t1 left semi join (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select48_7 """explain shape plan select count(*) from t1 left semi join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select48_8 """explain shape plan select count(*) from t1 left semi join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c1 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select48_9 """explain shape plan select count(*) from t1 left semi join (select c2 from t2) as alias2 on c1 = c2 left anti join [shuffle] t3 on c1 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select48_10 """explain shape plan select count(*) from t1 left semi join (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c1 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select48_11 """explain shape plan select count(*) from t1 left semi join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join [shuffle] t3 on c1 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select48_12 """explain shape plan select count(*) from t1 left semi join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c1 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select48_13 """explain shape plan select count(*) from t1 left semi join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join [shuffle] t3 on c1 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + + //// test inner join with all edge and vertax is complete and equal predicates + qt_select_res2_1 """select count(*) from t1 join t2 on c1 = c2;""" + qt_select_res2_2 """select count(*) from t1 join [shuffle] t2 on c1 = c2;""" + qt_select_res2_3 """select count(*) from t1 join [broadcast] t2 on c1 = c2;""" + + qt_select_res3_1 """select count(*) from t1 join t2 on c1 = c2 join [shuffle] t3 on c2 = c3;""" + qt_select_res3_2 """select count(*) from t1 join [shuffle] t2 on c1 = c2 join t3 on c2 = c3;""" + qt_select_res3_3 """select count(*) from t1 join t2 on c1 = c2 join [broadcast] t3 on c2 = c3;""" + qt_select_res3_4 """select count(*) from t1 join [broadcast] t2 on c1 = c2 join t3 on c2 = c3;""" + qt_select_res3_5 """select count(*) from t1 join [broadcast] t2 on c1 = c2 join [shuffle] t3 on c2 = c3;""" + qt_select_res3_6 """select count(*) from t1 join [shuffle] t2 on c1 = c2 join [broadcast] t3 on c2 = c3;""" + qt_select_res3_7 """select count(*) from t1 join [shuffle] t2 on c1 = c2 join [shuffle] t3 on c2 = c3;""" + qt_select_res3_8 """select count(*) from t1 join [broadcast] t2 on c1 = c2 join [broadcast] t3 on c2 = c3;""" + + qt_select_res4_1 """select count(*) from t1 join [shuffle] t2 on c1 = c2 join [shuffle] t3 on c2 = c3 join [shuffle] t4 on c3 = c4;""" + qt_select_res4_2 """select count(*) from t1 join [broadcast] t2 on c1 = c2 join t3 on c2 = c3 join [broadcast] t4 on c3 = c4;""" + qt_select_res4_3 """select count(*) from t1 join t2 on c1 = c2 join [broadcast] t3 on c2 = c3 join t4 on c3 = c4;""" + qt_select_res4_4 """select count(*) from t1 join [broadcast] t2 on c1 = c2 join [broadcast] t3 on c2 = c3 join [broadcast] t4 on c3 = c4;""" + qt_select_res4_5 """select count(*) from t1 join [broadcast] t2 on c1 = c2 join [shuffle] t3 on c2 = c3 join t4 on c3 = c4;""" + + qt_select_res5_1 """select count(*) from t1 join [shuffle] t2 on c1 > c2;""" + qt_select_res5_2 """select count(*) from t1 join [broadcast] t2 on c1 > c2;""" + + qt_select_res6_1 """select count(*) from t1 join [shuffle] t2 on c1 > c2 join t3 on c2 > c3 where c1 < 100;""" + qt_select_res6_2 """select count(*) from t1 join t2 on c1 > c2 join t3 on c2 > c3 where c1 < 100;""" + +// (A leftjoin B on (Pab)) leftjoin C on (Pac) = (A leftjoin C on (Pac)) leftjoin B on (Pab) + qt_select_res7_1 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left join t3 on c1 = c3;""" + qt_select_res7_2 """select count(*) from t1 left join t2 on c1 = c2 left join [shuffle] t3 on c1 = c3;""" + + qt_select_res8_1 """select count(*) from t1 left join t2 on c1 = c2 left join [broadcast] t3 on c1 = c3 where c1 between 100 and 300;""" + qt_select_res8_2 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 left join t3 on c1 = c3 where c1 between 100 and 300;""" + + qt_select_res9_1 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 left join [broadcast] t3 on c1 = c3 where c3 between 100 and 300;""" + qt_select_res9_2 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left join [shuffle] t3 on c1 = c3 where c3 between 100 and 300;""" + + qt_select_res10_1 """select count(*) from t1 left join t2 on c1 = c2 left join t3 on c1 = c3 where c2 between 100 and 300;""" + qt_select_res10_2 """select count(*) from t1 left join t2 on c1 = c2 left join t3 on c1 = c3 where c2 between 100 and 300;""" + + qt_select_res11_1 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left join [broadcast] t3 on c1 > c3 where c3 between 100 and 300;""" + qt_select_res11_2 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 left join t3 on c1 > c3 where c3 between 100 and 300;""" + +// (A leftjoin B on (Pab)) leftjoin C on (Pbc) = A leftjoin (B leftjoin C on (Pbc)) on (Pab) + qt_select_res12_1 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 left join t3 on c2 = c3;""" + qt_select_res12_2 """select count(*) from t1 left join t2 on c1 = c2 left join [broadcast] t3 on c2 = c3;""" + + qt_select_res13_1 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 left join t3 on c2 = c3 where c1 between 100 and 300;""" + qt_select_res13_2 """select count(*) from t1 left join t2 on c1 = c2 left join [broadcast] t3 on c2 = c3 where c1 between 100 and 300;""" + + qt_select_res14_1 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 left join [broadcast] t3 on c2 = c3 where c2 between 100 and 300;""" + qt_select_res14_2 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 left join t3 on c2 = c3 where c2 between 100 and 300;""" + + qt_select_res15_1 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 left join t3 on c2 = c3 where c3 between 100 and 300;""" + qt_select_res15_2 """select count(*) from t1 left join t2 on c1 = c2 left join [broadcast] t3 on c2 = c3 where c3 between 100 and 300;""" + +//// test outer join which can not swap +// A leftjoin (B join C on (Pbc)) on (Pab) != (A leftjoin B on (Pab)) join C on (Pbc) output should be unused when explain +// this can be done because left join can be eliminated to inner join + qt_select_res16_1 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 join t3 on c2 = c3;""" + qt_select_res16_2 """select count(*) from t1 left join t2 on c1 = c2 join [broadcast] t3 on c2 = c3;""" + +// inner join + full outer join + qt_select_res17_1 """select count(*) from t1 join t2 on c1 = c2 full join t3 on c2 = c3;""" + qt_select_res17_2 """select count(*) from t1 join [broadcast] t2 on c1 = c2 full join t3 on c2 = c3;""" + qt_select_res17_3 """select count(*) from t1 join t2 on c1 = c2 full join [broadcast] t3 on c2 = c3;""" + qt_select_res17_4 """select count(*) from t1 join [broadcast] t2 on c1 = c2 full join [broadcast] t3 on c2 = c3;""" + qt_select_res17_5 """select count(*) from t1 join [shuffle] t2 on c1 = c2 full join t3 on c2 = c3;""" + qt_select_res17_6 """select count(*) from t1 join t2 on c1 = c2 full join [shuffle] t3 on c2 = c3;""" + qt_select_res17_7 """select count(*) from t1 join [shuffle] t2 on c1 = c2 full join [shuffle] t3 on c2 = c3;""" + qt_select_res17_8 """select count(*) from t1 join [shuffle] t2 on c1 = c2 full join [broadcast] t3 on c2 = c3;""" + qt_select_res17_9 """select count(*) from t1 join [broadcast] t2 on c1 = c2 full join [shuffle] t3 on c2 = c3;""" + +// inner join + left outer join + qt_select_res18_1 """select count(*) from t1 join t2 on c1 = c2 left join t3 on c2 = c3;""" + qt_select_res18_2 """select count(*) from t1 join [broadcast] t2 on c1 = c2 left join t3 on c2 = c3;""" + qt_select_res18_3 """select count(*) from t1 join t2 on c1 = c2 left join [broadcast] t3 on c2 = c3;""" + qt_select_res18_4 """select count(*) from t1 join [broadcast] t2 on c1 = c2 left join [broadcast] t3 on c2 = c3;""" + qt_select_res18_5 """select count(*) from t1 join [shuffle] t2 on c1 = c2 left join t3 on c2 = c3;""" + qt_select_res18_6 """select count(*) from t1 join t2 on c1 = c2 left join [shuffle] t3 on c2 = c3;""" + qt_select_res18_7 """select count(*) from t1 join [shuffle] t2 on c1 = c2 left join [shuffle] t3 on c2 = c3;""" + qt_select_res18_8 """select count(*) from t1 join [shuffle] t2 on c1 = c2 left join [broadcast] t3 on c2 = c3;""" + qt_select_res18_9 """select count(*) from t1 join [broadcast] t2 on c1 = c2 left join [shuffle] t3 on c2 = c3;""" + +// inner join + right outer join + qt_select_res19_1 """select count(*) from t1 join t2 on c1 = c2 right join t3 on c2 = c3;""" + qt_select_res19_2 """select count(*) from t1 join [broadcast] t2 on c1 = c2 right join t3 on c2 = c3;""" + qt_select_res19_3 """select count(*) from t1 join t2 on c1 = c2 right join [broadcast] t3 on c2 = c3;""" + qt_select_res19_4 """select count(*) from t1 join [broadcast] t2 on c1 = c2 right join [broadcast] t3 on c2 = c3;""" + qt_select_res19_5 """select count(*) from t1 join [shuffle] t2 on c1 = c2 right join t3 on c2 = c3;""" + qt_select_res19_6 """select count(*) from t1 join t2 on c1 = c2 right join [shuffle] t3 on c2 = c3;""" + qt_select_res19_7 """select count(*) from t1 join [shuffle] t2 on c1 = c2 right join [shuffle] t3 on c2 = c3;""" + qt_select_res19_8 """select count(*) from t1 join [shuffle] t2 on c1 = c2 right join [broadcast] t3 on c2 = c3;""" + qt_select_res19_9 """select count(*) from t1 join [broadcast] t2 on c1 = c2 right join [shuffle] t3 on c2 = c3;""" + +// inner join + semi join + qt_select_res20_1 """select count(*) from t1 join t2 on c1 = c2 left semi join t3 on c2 = c3;""" + qt_select_res20_2 """select count(*) from t1 join [broadcast] t2 on c1 = c2 left semi join t3 on c2 = c3;""" + qt_select_res20_3 """select count(*) from t1 join t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3;""" + qt_select_res20_4 """select count(*) from t1 join [broadcast] t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3;""" + qt_select_res20_5 """select count(*) from t1 join [shuffle] t2 on c1 = c2 left semi join t3 on c2 = c3;""" + qt_select_res20_6 """select count(*) from t1 join t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3;""" + qt_select_res20_7 """select count(*) from t1 join [shuffle] t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3;""" + qt_select_res20_8 """select count(*) from t1 join [shuffle] t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3;""" + qt_select_res20_9 """select count(*) from t1 join [broadcast] t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3;""" + +// inner join + anti join + qt_select_res21_1 """select count(*) from t1 join t2 on c1 = c2 left anti join t3 on c2 = c3;""" + qt_select_res21_2 """select count(*) from t1 join [broadcast] t2 on c1 = c2 left anti join t3 on c2 = c3;""" + qt_select_res21_3 """select count(*) from t1 join t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3;""" + qt_select_res21_4 """select count(*) from t1 join [broadcast] t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3;""" + qt_select_res21_5 """select count(*) from t1 join [shuffle] t2 on c1 = c2 left anti join t3 on c2 = c3;""" + qt_select_res21_6 """select count(*) from t1 join t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3;""" + qt_select_res21_7 """select count(*) from t1 join [shuffle] t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3;""" + qt_select_res21_8 """select count(*) from t1 join [shuffle] t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3;""" + qt_select_res21_9 """select count(*) from t1 join [broadcast] t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3;""" + +// left join + left join + qt_select_res22_1 """select count(*) from t1 left join t2 on c1 = c2 left join t3 on c2 = c3;""" + qt_select_res22_2 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 left join t3 on c2 = c3;""" + qt_select_res22_3 """select count(*) from t1 left join t2 on c1 = c2 left join [broadcast] t3 on c2 = c3;""" + qt_select_res22_4 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 left join [broadcast] t3 on c2 = c3;""" + qt_select_res22_5 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left join t3 on c2 = c3;""" + qt_select_res22_6 """select count(*) from t1 left join t2 on c1 = c2 left join [shuffle] t3 on c2 = c3;""" + qt_select_res22_7 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left join [shuffle] t3 on c2 = c3;""" + qt_select_res22_8 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left join [broadcast] t3 on c2 = c3;""" + qt_select_res22_9 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 left join [shuffle] t3 on c2 = c3;""" + +// left join + right join + qt_select_res23_1 """select count(*) from t1 left join t2 on c1 = c2 right join t3 on c2 = c3;""" + qt_select_res23_2 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 right join t3 on c2 = c3;""" + qt_select_res23_3 """select count(*) from t1 left join t2 on c1 = c2 right join [broadcast] t3 on c2 = c3;""" + qt_select_res23_4 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 right join [broadcast] t3 on c2 = c3;""" + qt_select_res23_5 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 right join t3 on c2 = c3;""" + qt_select_res23_6 """select count(*) from t1 left join t2 on c1 = c2 right join [shuffle] t3 on c2 = c3;""" + qt_select_res23_7 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 right join [shuffle] t3 on c2 = c3;""" + qt_select_res23_8 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 right join [broadcast] t3 on c2 = c3;""" + qt_select_res23_9 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 right join [shuffle] t3 on c2 = c3;""" + +// left join + semi join + qt_select_res24_1 """select count(*) from t1 left join t2 on c1 = c2 left semi join t3 on c2 = c3;""" + qt_select_res24_2 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 left semi join t3 on c2 = c3;""" + qt_select_res24_3 """select count(*) from t1 left join t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3;""" + qt_select_res24_4 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3;""" + qt_select_res24_5 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left semi join t3 on c2 = c3;""" + qt_select_res24_6 """select count(*) from t1 left join t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3;""" + qt_select_res24_7 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3;""" + qt_select_res24_8 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3;""" + qt_select_res24_9 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3;""" + +// left join + anti join + qt_select_res25_1 """select count(*) from t1 left join t2 on c1 = c2 left anti join t3 on c2 = c3;""" + qt_select_res25_2 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 left anti join t3 on c2 = c3;""" + qt_select_res25_3 """select count(*) from t1 left join t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3;""" + qt_select_res25_4 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3;""" + qt_select_res25_5 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left anti join t3 on c2 = c3;""" + qt_select_res25_6 """select count(*) from t1 left join t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3;""" + qt_select_res25_7 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3;""" + qt_select_res25_8 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3;""" + qt_select_res25_9 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3;""" + +// right join + semi join + qt_select_res26_1 """select count(*) from t1 right join t2 on c1 = c2 left semi join t3 on c2 = c3;""" + qt_select_res26_2 """select count(*) from t1 right join [broadcast] t2 on c1 = c2 left semi join t3 on c2 = c3;""" + qt_select_res26_3 """select count(*) from t1 right join t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3;""" + qt_select_res26_4 """select count(*) from t1 right join [broadcast] t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3;""" + qt_select_res26_5 """select count(*) from t1 right join [shuffle] t2 on c1 = c2 left semi join t3 on c2 = c3;""" + qt_select_res26_6 """select count(*) from t1 right join t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3;""" + qt_select_res26_7 """select count(*) from t1 right join [shuffle] t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3;""" + qt_select_res26_8 """select count(*) from t1 right join [shuffle] t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3;""" + qt_select_res26_9 """select count(*) from t1 right join [broadcast] t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3;""" + +// right join + anti join + qt_select_res27_1 """select count(*) from t1 right join t2 on c1 = c2 left anti join t3 on c2 = c3;""" + qt_select_res27_2 """select count(*) from t1 right join [broadcast] t2 on c1 = c2 left anti join t3 on c2 = c3;""" + qt_select_res27_3 """select count(*) from t1 right join t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3;""" + qt_select_res27_4 """select count(*) from t1 right join [broadcast] t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3;""" + qt_select_res27_5 """select count(*) from t1 right join [shuffle] t2 on c1 = c2 left anti join t3 on c2 = c3;""" + qt_select_res27_6 """select count(*) from t1 right join t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3;""" + qt_select_res27_7 """select count(*) from t1 right join [shuffle] t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3;""" + qt_select_res27_8 """select count(*) from t1 right join [shuffle] t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3;""" + qt_select_res27_9 """select count(*) from t1 right join [broadcast] t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3;""" + +// semi join + anti join + qt_select_res28_1 """select count(*) from t1 left semi join t2 on c1 = c2 left anti join t3 on c1 = c3;""" + qt_select_res28_2 """select count(*) from t1 left semi join [broadcast] t2 on c1 = c2 left anti join t3 on c1 = c3;""" + qt_select_res28_3 """select count(*) from t1 left semi join t2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3;""" + qt_select_res28_4 """select count(*) from t1 left semi join [broadcast] t2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3;""" + qt_select_res28_5 """select count(*) from t1 left semi join [shuffle] t2 on c1 = c2 left anti join t3 on c1 = c3;""" + qt_select_res28_6 """select count(*) from t1 left semi join t2 on c1 = c2 left anti join [shuffle] t3 on c1 = c3;""" + qt_select_res28_7 """select count(*) from t1 left semi join [shuffle] t2 on c1 = c2 left anti join [shuffle] t3 on c1 = c3;""" + qt_select_res28_8 """select count(*) from t1 left semi join [shuffle] t2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3;""" + qt_select_res28_9 """select count(*) from t1 left semi join [broadcast] t2 on c1 = c2 left anti join [shuffle] t3 on c1 = c3;""" + +// left join + left join + inner join + qt_select_res32_1 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left join t3 on c2 = c3 join t4 on c3 = c4;""" + qt_select_res32_2 """select count(*) from t1 left join t2 on c1 = c2 left join [shuffle] t3 on c2 = c3 join t4 on c3 = c4;""" + qt_select_res32_3 """select count(*) from t1 left join t2 on c1 = c2 left join t3 on c2 = c3 join [shuffle] t4 on c3 = c4;""" + qt_select_res32_4 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left join [shuffle] t3 on c2 = c3 join t4 on c3 = c4;""" + qt_select_res32_5 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left join t3 on c2 = c3 join [shuffle] t4 on c3 = c4;""" + qt_select_res32_6 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 left join [shuffle] t3 on c2 = c3 join [shuffle] t4 on c3 = c4;""" + qt_select_res32_7 """select count(*) from t1 left join t2 on c1 = c2 left join [broadcast] t3 on c2 = c3 join t4 on c3 = c4;""" + qt_select_res32_8 """select count(*) from t1 left join t2 on c1 = c2 left join t3 on c2 = c3 join [broadcast] t4 on c3 = c4;""" + qt_select_res32_9 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 left join t3 on c2 = c3 join [broadcast] t4 on c3 = c4;""" + qt_select_res32_10 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 left join [broadcast] t3 on c2 = c3 join t4 on c3 = c4;""" + qt_select_res32_11 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left join [broadcast] t3 on c2 = c3 join [broadcast] t4 on c3 = c4;""" + qt_select_res32_12 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left join [broadcast] t3 on c2 = c3 join [broadcast] t4 on c3 = c4;""" + qt_select_res32_13 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left join t3 on c2 = c3 join [broadcast] t4 on c3 = c4;""" + +// left join + right join + inner join + qt_select_res33_1 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 right join t3 on c2 = c3 join t4 on c3 = c4;""" + qt_select_res33_2 """select count(*) from t1 left join t2 on c1 = c2 right join [shuffle] t3 on c2 = c3 join t4 on c3 = c4;""" + qt_select_res33_3 """select count(*) from t1 left join t2 on c1 = c2 right join t3 on c2 = c3 join [shuffle] t4 on c3 = c4;""" + qt_select_res33_4 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 right join [shuffle] t3 on c2 = c3 join t4 on c3 = c4;""" + qt_select_res33_5 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 right join t3 on c2 = c3 join [shuffle] t4 on c3 = c4;""" + qt_select_res33_6 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 right join [shuffle] t3 on c2 = c3 join [shuffle] t4 on c3 = c4;""" + qt_select_res33_7 """select count(*) from t1 left join t2 on c1 = c2 right join [broadcast] t3 on c2 = c3 join t4 on c3 = c4;""" + qt_select_res33_8 """select count(*) from t1 left join t2 on c1 = c2 right join t3 on c2 = c3 join [broadcast] t4 on c3 = c4;""" + qt_select_res33_9 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 right join t3 on c2 = c3 join [broadcast] t4 on c3 = c4;""" + qt_select_res33_10 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 right join [broadcast] t3 on c2 = c3 join t4 on c3 = c4;""" + qt_select_res33_11 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 right join [broadcast] t3 on c2 = c3 join [broadcast] t4 on c3 = c4;""" + qt_select_res33_12 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 right join [broadcast] t3 on c2 = c3 join [broadcast] t4 on c3 = c4;""" + qt_select_res33_13 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 right join t3 on c2 = c3 join [broadcast] t4 on c3 = c4;""" + +// left join + semi join + inner join + qt_select_res34_1 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left semi join t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select_res34_2 """select count(*) from t1 left join t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select_res34_3 """select count(*) from t1 left join t2 on c1 = c2 left semi join t3 on c2 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select_res34_4 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select_res34_5 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left semi join t3 on c2 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select_res34_6 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select_res34_7 """select count(*) from t1 left join t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select_res34_8 """select count(*) from t1 left join t2 on c1 = c2 left semi join t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select_res34_9 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 left semi join t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select_res34_10 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select_res34_11 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select_res34_12 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select_res34_13 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left semi join t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + +// left join + anti join + inner join + qt_select_res35_1 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left anti join t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select_res35_2 """select count(*) from t1 left join t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select_res35_3 """select count(*) from t1 left join t2 on c1 = c2 left anti join t3 on c2 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select_res35_4 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select_res35_5 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left anti join t3 on c2 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select_res35_6 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select_res35_7 """select count(*) from t1 left join t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select_res35_8 """select count(*) from t1 left join t2 on c1 = c2 left anti join t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select_res35_9 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 left anti join t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select_res35_10 """select count(*) from t1 left join [broadcast] t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select_res35_11 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select_res35_12 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select_res35_13 """select count(*) from t1 left join [shuffle] t2 on c1 = c2 left anti join t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + +// right join + semi join + inner join + qt_select_res36_1 """select count(*) from t1 right join [shuffle] t2 on c1 = c2 left semi join t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select_res36_2 """select count(*) from t1 right join t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select_res36_3 """select count(*) from t1 right join t2 on c1 = c2 left semi join t3 on c2 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select_res36_4 """select count(*) from t1 right join [shuffle] t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select_res36_5 """select count(*) from t1 right join [shuffle] t2 on c1 = c2 left semi join t3 on c2 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select_res36_6 """select count(*) from t1 right join [broadcast] t2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select_res36_7 """select count(*) from t1 right join t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select_res36_8 """select count(*) from t1 right join t2 on c1 = c2 left semi join t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select_res36_9 """select count(*) from t1 right join [broadcast] t2 on c1 = c2 left semi join t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select_res36_10 """select count(*) from t1 right join [broadcast] t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select_res36_11 """select count(*) from t1 right join [shuffle] t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select_res36_12 """select count(*) from t1 right join [shuffle] t2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select_res36_13 """select count(*) from t1 right join [shuffle] t2 on c1 = c2 left semi join t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + +// right join + anti join + inner join + qt_select_res37_1 """select count(*) from t1 right join [shuffle] t2 on c1 = c2 left anti join t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select_res37_2 """select count(*) from t1 right join t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select_res37_3 """select count(*) from t1 right join t2 on c1 = c2 left anti join t3 on c2 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select_res37_4 """select count(*) from t1 right join [shuffle] t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select_res37_5 """select count(*) from t1 right join [shuffle] t2 on c1 = c2 left anti join t3 on c2 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select_res37_6 """select count(*) from t1 right join [broadcast] t2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select_res37_7 """select count(*) from t1 right join t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select_res37_8 """select count(*) from t1 right join t2 on c1 = c2 left anti join t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select_res37_9 """select count(*) from t1 right join [broadcast] t2 on c1 = c2 left anti join t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select_res37_10 """select count(*) from t1 right join [broadcast] t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 join t4 on c1 = c4;""" + qt_select_res37_11 """select count(*) from t1 right join [shuffle] t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select_res37_12 """select count(*) from t1 right join [shuffle] t2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select_res37_13 """select count(*) from t1 right join [shuffle] t2 on c1 = c2 left anti join t3 on c2 = c3 join [broadcast] t4 on c1 = c4;""" + +// semi join + anti join + inner join + qt_select_res38_1 """select count(*) from t1 left semi join [shuffle] t2 on c1 = c2 left anti join t3 on c1 = c3 join t4 on c1 = c4;""" + qt_select_res38_2 """select count(*) from t1 left semi join t2 on c1 = c2 left anti join [shuffle] t3 on c1 = c3 join t4 on c1 = c4;""" + qt_select_res38_3 """select count(*) from t1 left semi join t2 on c1 = c2 left anti join t3 on c1 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select_res38_4 """select count(*) from t1 left semi join [shuffle] t2 on c1 = c2 left anti join [shuffle] t3 on c1 = c3 join t4 on c1 = c4;""" + qt_select_res38_5 """select count(*) from t1 left semi join [shuffle] t2 on c1 = c2 left anti join t3 on c1 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select_res38_6 """select count(*) from t1 left semi join [broadcast] t2 on c1 = c2 left anti join [shuffle] t3 on c1 = c3 join [shuffle] t4 on c1 = c4;""" + qt_select_res38_7 """select count(*) from t1 left semi join t2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3 join t4 on c1 = c4;""" + qt_select_res38_8 """select count(*) from t1 left semi join t2 on c1 = c2 left anti join t3 on c1 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select_res38_9 """select count(*) from t1 left semi join [broadcast] t2 on c1 = c2 left anti join t3 on c1 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select_res38_10 """select count(*) from t1 left semi join [broadcast] t2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3 join t4 on c1 = c4;""" + qt_select_res38_11 """select count(*) from t1 left semi join [shuffle] t2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select_res38_12 """select count(*) from t1 left semi join [shuffle] t2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3 join [broadcast] t4 on c1 = c4;""" + qt_select_res38_13 """select count(*) from t1 left semi join [shuffle] t2 on c1 = c2 left anti join t3 on c1 = c3 join [broadcast] t4 on c1 = c4;""" + +// alias +// inner join + anti join + qt_select_res41_1 """select count(*) from t1 join (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res41_2 """select count(*) from t1 join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res41_3 """select count(*) from t1 join (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res41_4 """select count(*) from t1 join (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select_res41_5 """select count(*) from t1 join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res41_6 """select count(*) from t1 join (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select_res41_7 """select count(*) from t1 join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select_res41_8 """select count(*) from t1 join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res41_9 """select count(*) from t1 join (select c2 from t2) as alias2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res41_10 """select count(*) from t1 join (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select_res41_11 """select count(*) from t1 join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res41_12 """select count(*) from t1 join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select_res41_13 """select count(*) from t1 join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + +// left join + left join + qt_select_res42_1 """select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res42_2 """select count(*) from t1 left join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res42_3 """select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res42_4 """select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left join t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select_res42_5 """select count(*) from t1 left join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res42_6 """select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select_res42_7 """select count(*) from t1 left join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select_res42_8 """select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res42_9 """select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res42_10 """select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left join t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select_res42_11 """select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res42_12 """select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left join t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select_res42_13 """select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + +// left join + right join + qt_select_res43_1 """select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 right join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res43_2 """select count(*) from t1 left join [broadcast] (select c2 from t2) as alias2 on c1 = c2 right join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res43_3 """select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 right join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res43_4 """select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 right join t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select_res43_5 """select count(*) from t1 left join [broadcast] (select c2 from t2) as alias2 on c1 = c2 right join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res43_6 """select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 right join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select_res43_7 """select count(*) from t1 left join [broadcast] (select c2 from t2) as alias2 on c1 = c2 right join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select_res43_8 """select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 right join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res43_9 """select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 right join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res43_10 """select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 right join t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select_res43_11 """select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 right join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res43_12 """select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 right join t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select_res43_13 """select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 right join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + +// left join + semi join + qt_select_res44_1 """select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left semi join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res44_2 """select count(*) from t1 left join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left semi join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res44_3 """select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res44_4 """select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left semi join t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select_res44_5 """select count(*) from t1 left join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res44_6 """select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select_res44_7 """select count(*) from t1 left join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select_res44_8 """select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left semi join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res44_9 """select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res44_10 """select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left semi join t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select_res44_11 """select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res44_12 """select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left semi join t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select_res44_13 """select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + +// left join + anti join + qt_select_res45_1 """select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res45_2 """select count(*) from t1 left join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res45_3 """select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res45_4 """select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select_res45_5 """select count(*) from t1 left join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res45_6 """select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select_res45_7 """select count(*) from t1 left join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select_res45_8 """select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res45_9 """select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res45_10 """select count(*) from t1 left join (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select_res45_11 """select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res45_12 """select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select_res45_13 """select count(*) from t1 left join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + +// right join + semi join + qt_select_res46_1 """select count(*) from t1 right join (select c2 from t2) as alias2 on c1 = c2 left semi join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res46_2 """select count(*) from t1 right join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left semi join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res46_3 """select count(*) from t1 right join (select c2 from t2) as alias2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res46_4 """select count(*) from t1 right join (select c2 from t2) as alias2 on c1 = c2 left semi join t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select_res46_5 """select count(*) from t1 right join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res46_6 """select count(*) from t1 right join (select c2 from t2) as alias2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select_res46_7 """select count(*) from t1 right join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left semi join [broadcast] t3 on c2 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select_res46_8 """select count(*) from t1 right join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left semi join t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res46_9 """select count(*) from t1 right join (select c2 from t2) as alias2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res46_10 """select count(*) from t1 right join (select c2 from t2) as alias2 on c1 = c2 left semi join t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select_res46_11 """select count(*) from t1 right join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res46_12 """select count(*) from t1 right join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left semi join t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select_res46_13 """select count(*) from t1 right join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left semi join [shuffle] t3 on c2 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + +// right join + anti join + qt_select_res47_1 """select count(*) from t1 right join (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c1 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res47_2 """select count(*) from t1 right join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c1 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res47_3 """select count(*) from t1 right join (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res47_4 """select count(*) from t1 right join (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c1 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select_res47_5 """select count(*) from t1 right join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res47_6 """select count(*) from t1 right join (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select_res47_7 """select count(*) from t1 right join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select_res47_8 """select count(*) from t1 right join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c1 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res47_9 """select count(*) from t1 right join (select c2 from t2) as alias2 on c1 = c2 left anti join [shuffle] t3 on c1 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res47_10 """select count(*) from t1 right join (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c1 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select_res47_11 """select count(*) from t1 right join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join [shuffle] t3 on c1 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res47_12 """select count(*) from t1 right join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c1 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select_res47_13 """select count(*) from t1 right join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join [shuffle] t3 on c1 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + +// semi join + anti join + qt_select_res48_1 """select count(*) from t1 left semi join (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c1 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res48_2 """select count(*) from t1 left semi join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c1 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res48_3 """select count(*) from t1 left semi join (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res48_4 """select count(*) from t1 left semi join (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c1 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select_res48_5 """select count(*) from t1 left semi join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res48_6 """select count(*) from t1 left semi join (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select_res48_7 """select count(*) from t1 left semi join [broadcast] (select c2 from t2) as alias2 on c1 = c2 left anti join [broadcast] t3 on c1 = c3 where exists (select 1 from t3 join [broadcast] t4 on c3 = c4);""" + qt_select_res48_8 """select count(*) from t1 left semi join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c1 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res48_9 """select count(*) from t1 left semi join (select c2 from t2) as alias2 on c1 = c2 left anti join [shuffle] t3 on c1 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res48_10 """select count(*) from t1 left semi join (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c1 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select_res48_11 """select count(*) from t1 left semi join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join [shuffle] t3 on c1 = c3 where exists (select 1 from t3 join t4 on c3 = c4);""" + qt_select_res48_12 """select count(*) from t1 left semi join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join t3 on c1 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + qt_select_res48_13 """select count(*) from t1 left semi join [shuffle] (select c2 from t2) as alias2 on c1 = c2 left anti join [shuffle] t3 on c1 = c3 where exists (select 1 from t3 join [shuffle] t4 on c3 = c4);""" + + + sql """drop table if exists t1;""" + sql """drop table if exists t2;""" + sql """drop table if exists t3;""" + sql """drop table if exists t4;""" +} diff --git a/regression-test/suites/nereids_p0/hint/test_leading.groovy b/regression-test/suites/nereids_p0/hint/test_leading.groovy index e983c7130a..fd1abbc526 100644 --- a/regression-test/suites/nereids_p0/hint/test_leading.groovy +++ b/regression-test/suites/nereids_p0/hint/test_leading.groovy @@ -26,6 +26,7 @@ suite("test_leading") { // setting planner to nereids sql 'set enable_nereids_planner=true' sql 'set enable_fallback_to_original_planner=false' + sql 'set runtime_filter_mode=OFF' // create tables sql """drop table if exists t1;""" diff --git a/regression-test/suites/nereids_rules_p0/cte/test_cte_filter_pushdown.groovy b/regression-test/suites/nereids_rules_p0/cte/test_cte_filter_pushdown.groovy new file mode 100644 index 0000000000..3448cec9fe --- /dev/null +++ b/regression-test/suites/nereids_rules_p0/cte/test_cte_filter_pushdown.groovy @@ -0,0 +1,113 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +suite("test_cte_filter_pushdown") { + sql "SET enable_nereids_planner=true" + sql "SET enable_pipeline_engine=true" + sql "SET enable_fallback_to_original_planner=false" + // CTE filter pushing down with the same filter + sql """ + CREATE TABLE IF NOT EXISTS `test` ( + `k0` boolean null comment "", + `k1` tinyint(4) null comment "", + `k2` smallint(6) null comment "", + `k3` int(11) null comment "", + `k4` bigint(20) null comment "", + `k5` decimal(9, 3) null comment "", + `k6` char(5) null comment "", + `k10` date null comment "", + `k11` datetime null comment "", + `k7` varchar(20) null comment "", + `k8` double max null comment "", + `k9` float sum null comment "", + `k12` string replace_if_not_null null comment "", + `k13` largeint(40) replace null comment "" + ) engine=olap + DISTRIBUTED BY HASH(`k1`) BUCKETS 5 properties("replication_num" = "1") + """ + sql """ + CREATE TABLE IF NOT EXISTS `baseall` ( + `k0` boolean null comment "", + `k1` tinyint(4) null comment "", + `k2` smallint(6) null comment "", + `k3` int(11) null comment "", + `k4` bigint(20) null comment "", + `k5` decimal(9, 3) null comment "", + `k6` char(5) null comment "", + `k10` date null comment "", + `k11` datetime null comment "", + `k7` varchar(20) null comment "", + `k8` double max null comment "", + `k9` float sum null comment "", + `k12` string replace null comment "", + `k13` largeint(40) replace null comment "" + ) engine=olap + DISTRIBUTED BY HASH(`k1`) BUCKETS 5 properties("replication_num" = "1") + """ + qt_cte_filter_pushdown_1 """ + explain shape plan + with main AS ( + select k1, row_number() over (partition by k1) rn + from test + ) + select * from ( + select m1.* from main m1, main m2 + where m1.k1 = m2.k1 + ) temp + where k1 = 1; + """ + qt_cte_filter_pushdown_2 """ + explain shape plan + with main AS ( + select k1, row_number() over (partition by k2) rn + from test + ) + select * from ( + select m1.* from main m1, main m2 + where m1.k1 = m2.k1 + ) temp + where k1 = 1; + """ + sql 'set exec_mem_limit=21G' + sql 'set be_number_for_test=3' + sql 'set parallel_fragment_exec_instance_num=8; ' + sql 'set parallel_pipeline_task_num=8; ' + sql 'set forbid_unknown_col_stats=true' + sql 'set enable_nereids_timeout = false' + sql 'set enable_runtime_filter_prune=false' + sql 'set runtime_filter_mode=off' + sql 'set dump_nereids_memo=false' + sql "set disable_join_reorder=true" + qt_cte_filter_pushdown_3 """ + explain shape plan + with tmp as ( + select + k1, + k3, + sum(k2) over (partition by l.k1 order by l.k3 ) pay_num + from ( select * from test)l + ), + tmp2 as ( + select + tt.* + from + tmp tt join (select k3 from baseall ) dd + on tt.k3=dd.k3 + ) + SELECT * from tmp2 + where k3=0 and k1=1; + """ +} diff --git a/regression-test/suites/nereids_p0/cte/test_cte_name_reuse.groovy b/regression-test/suites/nereids_rules_p0/cte/test_cte_name_reuse.groovy similarity index 100% rename from regression-test/suites/nereids_p0/cte/test_cte_name_reuse.groovy rename to regression-test/suites/nereids_rules_p0/cte/test_cte_name_reuse.groovy diff --git a/regression-test/suites/nereids_p0/cte/test_cte_reuse_with_window.groovy b/regression-test/suites/nereids_rules_p0/cte/test_cte_reuse_with_window.groovy similarity index 100% rename from regression-test/suites/nereids_p0/cte/test_cte_reuse_with_window.groovy rename to regression-test/suites/nereids_rules_p0/cte/test_cte_reuse_with_window.groovy