[improvement](mtmv)Split expression get cherry pick21 (#35240)
* [improvement](mtmv) Split the expression mapping in LogicalCompatibilityContext for performance (#34646) Need query to view expression mapping when check the logic of hyper graph is equals or not. Getting all expression mapping one-time may affect performance. So split the expresson to three type JOIN_EDGE, NODE, FILTER_EDGE and get them step by step. * fix code style
This commit is contained in:
@ -18,7 +18,6 @@
|
||||
package org.apache.doris.nereids.rules.exploration.mv;
|
||||
|
||||
import org.apache.doris.nereids.jobs.joinorder.hypergraph.node.StructInfoNode;
|
||||
import org.apache.doris.nereids.memo.GroupExpression;
|
||||
import org.apache.doris.nereids.rules.exploration.mv.StructInfo.ExpressionPosition;
|
||||
import org.apache.doris.nereids.rules.exploration.mv.mapping.Mapping.MappedRelation;
|
||||
import org.apache.doris.nereids.rules.exploration.mv.mapping.RelationMapping;
|
||||
@ -28,7 +27,6 @@ import org.apache.doris.nereids.trees.expressions.Expression;
|
||||
import org.apache.doris.nereids.trees.expressions.NamedExpression;
|
||||
import org.apache.doris.nereids.trees.expressions.SlotReference;
|
||||
import org.apache.doris.nereids.trees.expressions.visitor.DefaultExpressionRewriter;
|
||||
import org.apache.doris.nereids.trees.plans.ObjectId;
|
||||
import org.apache.doris.nereids.trees.plans.RelationId;
|
||||
import org.apache.doris.nereids.util.ExpressionUtils;
|
||||
import org.apache.doris.nereids.util.Utils;
|
||||
@ -47,12 +45,9 @@ import java.util.function.Supplier;
|
||||
public class LogicalCompatibilityContext {
|
||||
private final BiMap<StructInfoNode, StructInfoNode> queryToViewNodeMapping;
|
||||
private final BiMap<Integer, Integer> queryToViewNodeIDMapping;
|
||||
private final ObjectId planNodeId;
|
||||
private final Supplier<BiMap<Expression, Expression>> queryToViewJoinEdgeExpressionMappingSupplier;
|
||||
private final Supplier<BiMap<Expression, Expression>> queryToViewNodeExpressionMappingSupplier;
|
||||
private final Supplier<BiMap<Expression, Expression>> queryToViewFilterEdgeExpressionMappingSupplier;
|
||||
@Deprecated
|
||||
private BiMap<Expression, Expression> queryToViewAllExpressionMapping;
|
||||
|
||||
/**
|
||||
* LogicalCompatibilityContext
|
||||
@ -79,9 +74,6 @@ public class LogicalCompatibilityContext {
|
||||
this.queryToViewNodeMapping = queryToViewNodeMapping;
|
||||
this.queryToViewNodeIDMapping = HashBiMap.create();
|
||||
queryToViewNodeMapping.forEach((k, v) -> queryToViewNodeIDMapping.put(k.getIndex(), v.getIndex()));
|
||||
|
||||
this.planNodeId = queryStructInfo.getTopPlan().getGroupExpression()
|
||||
.map(GroupExpression::getId).orElseGet(() -> new ObjectId(-1));
|
||||
}
|
||||
|
||||
public BiMap<StructInfoNode, StructInfoNode> getQueryToViewNodeMapping() {
|
||||
|
||||
Reference in New Issue
Block a user