diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/joinorder/hypergraph/SubgraphEnumerator.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/joinorder/hypergraph/SubgraphEnumerator.java index f3b9c8c74c..cc5a9cea96 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/joinorder/hypergraph/SubgraphEnumerator.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/joinorder/hypergraph/SubgraphEnumerator.java @@ -17,7 +17,6 @@ package org.apache.doris.nereids.jobs.joinorder.hypergraph; -import org.apache.doris.nereids.NereidsPlanner; import org.apache.doris.nereids.jobs.joinorder.hypergraph.bitmap.LongBitmap; import org.apache.doris.nereids.jobs.joinorder.hypergraph.bitmap.LongBitmapSubsetIterator; import org.apache.doris.nereids.jobs.joinorder.hypergraph.receiver.AbstractReceiver; @@ -40,7 +39,7 @@ import java.util.stream.Collectors; * More details are in Paper: Dynamic Programming Strikes Back and Build Query Optimizer. */ public class SubgraphEnumerator { - public static final Logger LOG = LogManager.getLogger(NereidsPlanner.class); + public static final Logger LOG = LogManager.getLogger(SubgraphEnumerator.class); // The receiver receives the csg and cmp and record them, named DPTable in paper AbstractReceiver receiver; diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/Memo.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/Memo.java index bb7b540f78..2b8bef8f4e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/Memo.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/Memo.java @@ -46,6 +46,8 @@ import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import java.util.ArrayList; import java.util.List; @@ -60,6 +62,7 @@ import javax.annotation.Nullable; * Representation for memo in cascades optimizer. */ public class Memo { + public static final Logger LOG = LogManager.getLogger(Memo.class); // generate group id in memo is better for test, since we can reproduce exactly same Memo. private static final EventProducer GROUP_MERGE_TRACER = new EventProducer(GroupMergeEvent.class, EventChannel.getDefaultChannel().addConsumers(new LogConsumer(GroupMergeEvent.class, EventChannel.LOG))); @@ -356,6 +359,9 @@ public class Memo { Preconditions.checkArgument(!(plan instanceof GroupPlan), "plan can not be GroupPlan"); // check logicalproperties, must same output in a Group. if (targetGroup != null && !plan.getLogicalProperties().equals(targetGroup.getLogicalProperties())) { + LOG.info("Insert a plan into targetGroup but differ in logicalproperties." + + "\nPlan logicalproperties: {}\n targetGroup logicalproperties: {}", + plan.getLogicalProperties(), targetGroup.getLogicalProperties()); throw new IllegalStateException("Insert a plan into targetGroup but differ in logicalproperties"); } Optional groupExpr = plan.getGroupExpression(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalProject.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalProject.java index f0baee3684..59cc6fe40f 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalProject.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalProject.java @@ -76,7 +76,7 @@ public class LogicalProject extends LogicalUnary projects, List excepts, + private LogicalProject(List projects, List excepts, boolean canEliminate, CHILD_TYPE child, boolean isDistinct) { this(projects, excepts, canEliminate, Optional.empty(), Optional.empty(), child, isDistinct); }