[fix](mtmv)fix mtmv show partition error when base table dropped (#35729) (#36051)

bp #35729
This commit is contained in:
zhangdong
2024-06-07 21:09:41 +08:00
committed by GitHub
parent 67f4d88988
commit 5148c3908e
3 changed files with 92 additions and 7 deletions

View File

@ -52,6 +52,7 @@ import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.Collection;
@ -245,10 +246,14 @@ public class PartitionsProcDir implements ProcDirInterface {
Joiner joiner = Joiner.on(", ");
Map<Long, List<String>> partitionsUnSyncTables = null;
String mtmvPartitionSyncErrorMsg = null;
if (olapTable instanceof MTMV) {
partitionsUnSyncTables = MTMVPartitionUtil
.getPartitionsUnSyncTables((MTMV) olapTable, partitionIds);
try {
partitionsUnSyncTables = MTMVPartitionUtil
.getPartitionsUnSyncTables((MTMV) olapTable, partitionIds);
} catch (AnalysisException e) {
mtmvPartitionSyncErrorMsg = e.getMessage();
}
}
for (Long partitionId : partitionIds) {
Partition partition = olapTable.getPartition(partitionId);
@ -314,9 +319,15 @@ public class PartitionsProcDir implements ProcDirInterface {
partitionInfo.add(tblPartitionInfo.getIsMutable(partitionId));
if (olapTable instanceof MTMV) {
List<String> partitionUnSyncTables = partitionsUnSyncTables.get(partitionId);
partitionInfo.add(CollectionUtils.isEmpty(partitionUnSyncTables));
partitionInfo.add(partitionUnSyncTables.toString());
if (StringUtils.isEmpty(mtmvPartitionSyncErrorMsg)) {
List<String> partitionUnSyncTables = partitionsUnSyncTables.getOrDefault(partitionId,
Lists.newArrayList());
partitionInfo.add(CollectionUtils.isEmpty(partitionUnSyncTables));
partitionInfo.add(partitionUnSyncTables.toString());
} else {
partitionInfo.add(false);
partitionInfo.add(mtmvPartitionSyncErrorMsg);
}
} else {
partitionInfo.add(true);
partitionInfo.add(FeConstants.null_string);

View File

@ -266,7 +266,9 @@ public class MTMVPartitionUtil {
if (mtmv.getMvPartitionInfo().getPartitionType() != MTMVPartitionType.SELF_MANAGE && mtmv
.getMvPartitionInfo().getRelatedTableInfo().equals(baseTableInfo)) {
if (CollectionUtils.isEmpty(relatedPartitionNames)) {
throw new AnalysisException("can not found related partition");
// can not found related partition
res.add(mtmvRelatedTableIf.getName());
continue;
}
boolean isSyncWithPartition = isSyncWithPartitions(mtmv, partitionName, mtmvRelatedTableIf,
relatedPartitionNames);