[log](Nereids): add more debug info when check logicalproperties. (#19763)

This commit is contained in:
jakevin
2023-05-18 08:37:10 +08:00
committed by GitHub
parent 35ad081784
commit 098dac20c2
3 changed files with 8 additions and 3 deletions

View File

@ -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;

View File

@ -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<GroupExpression> groupExpr = plan.getGroupExpression();

View File

@ -76,7 +76,7 @@ public class LogicalProject<CHILD_TYPE extends Plan> extends LogicalUnary<CHILD_
this(projects, excepts, true, child, isDistinct);
}
public LogicalProject(List<NamedExpression> projects, List<NamedExpression> excepts,
private LogicalProject(List<NamedExpression> projects, List<NamedExpression> excepts,
boolean canEliminate, CHILD_TYPE child, boolean isDistinct) {
this(projects, excepts, canEliminate, Optional.empty(), Optional.empty(), child, isDistinct);
}