xy720 commented on code in PR #68038:
URL: https://github.com/apache/doris/pull/68038#discussion_r4033249773
##########
fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVRelationManager.java:
##########
@@ -258,29 +271,48 @@ private void
addMTMVTablesOneLevelAndFromView(Set<BaseTableInfo> baseTables, Bas
if (CollectionUtils.isEmpty(baseTables)) {
return;
}
- for (BaseTableInfo baseTableInfo : baseTables) {
+ Set<BaseTableInfo> snapshot = ImmutableSet.copyOf(baseTables);
+ mtmvToBaseTablesOneLevelAndFromView.put(mtmvInfo, snapshot);
+ for (BaseTableInfo baseTableInfo : snapshot) {
getOrCreateMTMVsOneLevelAndFromView(baseTableInfo).add(mtmvInfo);
}
}
private void removeMTMV(BaseTableInfo mtmvInfo) {
- for (Set<BaseTableInfo> sets : tableMTMVs.values()) {
- sets.remove(mtmvInfo);
- }
- for (Set<BaseTableInfo> sets : viewMTMVs.values()) {
- sets.remove(mtmvInfo);
+ removeFromForwardMap(tableMTMVs, mtmvToBaseTables, mtmvInfo);
+ removeFromForwardMap(viewMTMVs, mtmvToBaseViews, mtmvInfo);
+ removeFromForwardMap(tableMTMVsOneLevelAndFromView,
mtmvToBaseTablesOneLevelAndFromView, mtmvInfo);
+ }
+
+ private void removeFromForwardMap(Map<BaseTableInfo, Set<BaseTableInfo>>
forwardMap,
+ Map<BaseTableInfo, Set<BaseTableInfo>> reverseIndex, BaseTableInfo
mtmvInfo) {
+ Set<BaseTableInfo> bases = reverseIndex.remove(mtmvInfo);
+ if (bases == null) {
+ return;
}
- for (Set<BaseTableInfo> sets : tableMTMVsOneLevelAndFromView.values())
{
- sets.remove(mtmvInfo);
+ for (BaseTableInfo base : bases) {
+ Set<BaseTableInfo> mtmvs = forwardMap.get(base);
Review Comment:
反向索引的 key 是 new BaseTableInfo(mtmv, dbId),构造时 ctlName 就是
INTERNAL_CATALOG_NAME,不参与 compatible 迁移,hash key 稳定;value 里的 base 对象与 forward
map key 是同一物理对象,mutation 双方同步,查询一致。hashCode/equals 契约违约是历史遗留问题,建议另开 PR 修复。
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]