Skip to content

Commit 293301b

Browse files
committed
opt mv rewrite performance 4
1 parent 69419bd commit 293301b

File tree

1 file changed

+33
-16
lines changed

1 file changed

+33
-16
lines changed

fe/fe-core/src/main/java/org/apache/doris/nereids/memo/StructInfoMap.java

Lines changed: 33 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ public void refresh(Group group, CascadesContext cascadesContext,
227227
for (GroupExpression groupExpression : group.getLogicalExpressions()) {
228228
List<Set<BitSet>> childrenTableMap = new LinkedList<>();
229229
if (groupExpression.children().isEmpty()) {
230-
BitSet leaf = constructLeaf(groupExpression, cascadesContext, forceRefresh);
230+
BitSet leaf = constructLeaf(groupExpression, cascadesContext, forceRefresh, tableIdMode);
231231
if (leaf.isEmpty()) {
232232
break;
233233
}
@@ -304,24 +304,41 @@ public void refresh(Group group, CascadesContext cascadesContext,
304304
}
305305

306306
private BitSet constructLeaf(GroupExpression groupExpression, CascadesContext cascadesContext,
307-
boolean forceRefresh) {
307+
boolean forceRefresh, boolean tableIdMode) {
308308
Plan plan = groupExpression.getPlan();
309309
BitSet tableMap = new BitSet();
310-
if (plan instanceof LogicalCatalogRelation) {
311-
LogicalCatalogRelation logicalCatalogRelation = (LogicalCatalogRelation) plan;
312-
TableIf table = logicalCatalogRelation.getTable();
313-
// If disable materialized view nest rewrite, and mv already rewritten successfully once, doesn't construct
314-
// table id map for nest mv rewrite
315-
if (!forceRefresh && cascadesContext.getStatementContext()
316-
.getMaterializationRewrittenSuccessSet().contains(table.getFullQualifiers())) {
317-
return tableMap;
310+
if (tableIdMode) {
311+
if (plan instanceof LogicalCatalogRelation) {
312+
LogicalCatalogRelation logicalCatalogRelation = (LogicalCatalogRelation) plan;
313+
TableIf table = logicalCatalogRelation.getTable();
314+
// If disable materialized view nest rewrite, and mv already rewritten successfully once,
315+
// doesn't construct
316+
// table id map for nest mv rewrite
317+
if (!forceRefresh && cascadesContext.getStatementContext()
318+
.getMaterializationRewrittenSuccessSet().contains(table.getFullQualifiers())) {
319+
return tableMap;
320+
}
321+
tableMap.set(cascadesContext.getStatementContext().getTableId(
322+
logicalCatalogRelation.getTable()).asInt());
323+
}
324+
} else {
325+
if (plan instanceof LogicalCatalogRelation) {
326+
LogicalCatalogRelation logicalCatalogRelation = (LogicalCatalogRelation) plan;
327+
TableIf table = logicalCatalogRelation.getTable();
328+
// If disable materialized view nest rewrite, and mv already rewritten successfully once,
329+
// doesn't construct
330+
// table id map for nest mv rewrite
331+
if (!forceRefresh && cascadesContext.getStatementContext()
332+
.getMaterializationRewrittenSuccessSet().contains(table.getFullQualifiers())) {
333+
return tableMap;
334+
}
335+
tableMap.set(logicalCatalogRelation.getRelationId().asInt());
336+
}
337+
// one row relation / CTE consumer
338+
if (plan instanceof LogicalCTEConsumer || plan instanceof LogicalEmptyRelation
339+
|| plan instanceof LogicalOneRowRelation) {
340+
tableMap.set(((LogicalRelation) plan).getRelationId().asInt());
318341
}
319-
tableMap.set(logicalCatalogRelation.getRelationId().asInt());
320-
}
321-
// one row relation / CTE consumer
322-
if (plan instanceof LogicalCTEConsumer || plan instanceof LogicalEmptyRelation
323-
|| plan instanceof LogicalOneRowRelation) {
324-
tableMap.set(((LogicalRelation) plan).getRelationId().asInt());
325342
}
326343
return tableMap;
327344
}

0 commit comments

Comments
 (0)