diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java index 916dda773e3d7d..47a4d6fa52c7db 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java @@ -2919,16 +2919,6 @@ public MTMVSnapshotIf getTableSnapshot() { return new MTMVVersionSnapshot(visibleVersion); } - @Override - public String getPartitionName(long partitionId) throws AnalysisException { - readLock(); - try { - return getPartitionOrAnalysisException(partitionId).getName(); - } finally { - readUnlock(); - } - } - private static Cloud.GetVersionResponse getVersionFromMeta(Cloud.GetVersionRequest req) throws RpcException { long startAt = System.nanoTime(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HMSExternalTable.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HMSExternalTable.java index d34d8cf769bfbc..6b153f25ba0c3d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HMSExternalTable.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HMSExternalTable.java @@ -48,6 +48,7 @@ import org.apache.doris.thrift.TTableDescriptor; import org.apache.doris.thrift.TTableType; +import com.google.common.collect.BiMap; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; @@ -746,28 +747,13 @@ public Map getAndCopyPartitionItems() { getDbName(), getName(), getPartitionColumnTypes()); Map res = Maps.newHashMap(); Map idToPartitionItem = hivePartitionValues.getIdToPartitionItem(); + BiMap idToName = hivePartitionValues.getPartitionNameToIdMap().inverse(); for (Entry entry : idToPartitionItem.entrySet()) { - try { - res.put(getPartitionName(entry.getKey()), entry.getValue()); - } catch (AnalysisException e) { - LOG.info("can not get partitionName by: " + entry.getKey()); - } - + res.put(idToName.get(entry.getKey()), entry.getValue()); } return res; } - @Override - public String getPartitionName(long partitionId) throws AnalysisException { - Map partitionNameToIdMap = getHivePartitionValues().getPartitionNameToIdMap(); - for (Entry entry : partitionNameToIdMap.entrySet()) { - if (entry.getValue().equals(partitionId)) { - return entry.getKey(); - } - } - throw new AnalysisException("can not find partition, partitionId: " + partitionId); - } - private HiveMetaStoreCache.HivePartitionValues getHivePartitionValues() { HiveMetaStoreCache cache = Env.getCurrentEnv().getExtMetaCacheMgr() .getMetaStoreCache((HMSExternalCatalog) getCatalog()); diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HiveMetaStoreCache.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HiveMetaStoreCache.java index 7f23385d847886..b27cc7e93cc521 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HiveMetaStoreCache.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HiveMetaStoreCache.java @@ -55,6 +55,8 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; import com.google.common.base.Strings; +import com.google.common.collect.BiMap; +import com.google.common.collect.HashBiMap; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.collect.Maps; @@ -247,7 +249,7 @@ private HivePartitionValues loadPartitionValues(PartitionValueCacheKey key) { LOG.debug("load #{} partitions for {} in catalog {}", partitionNames.size(), key, catalog.getName()); } Map idToPartitionItem = Maps.newHashMapWithExpectedSize(partitionNames.size()); - Map partitionNameToIdMap = Maps.newHashMapWithExpectedSize(partitionNames.size()); + BiMap partitionNameToIdMap = HashBiMap.create(partitionNames.size()); Map> idToUniqueIdsMap = Maps.newHashMapWithExpectedSize(partitionNames.size()); long idx = 0; for (String partitionName : partitionNames) { @@ -1086,7 +1088,7 @@ public static class HiveFileStatus { @Data public static class HivePartitionValues { private long nextPartitionId; - private Map partitionNameToIdMap; + private BiMap partitionNameToIdMap; private Map> idToUniqueIdsMap; private Map idToPartitionItem; private Map> partitionValuesMap; @@ -1105,7 +1107,7 @@ public HivePartitionValues(Map idToPartitionItem, Map, UniqueId> rangeToId, RangeMap singleColumnRangeMap, long nextPartitionId, - Map partitionNameToIdMap, + BiMap partitionNameToIdMap, Map> idToUniqueIdsMap, Map> singleUidToColumnRangeMap, Map> partitionValuesMap) { @@ -1123,7 +1125,7 @@ public HivePartitionValues(Map idToPartitionItem, public HivePartitionValues copy() { HivePartitionValues copy = new HivePartitionValues(); copy.setNextPartitionId(nextPartitionId); - copy.setPartitionNameToIdMap(partitionNameToIdMap == null ? null : Maps.newHashMap(partitionNameToIdMap)); + copy.setPartitionNameToIdMap(partitionNameToIdMap == null ? null : HashBiMap.create(partitionNameToIdMap)); copy.setIdToUniqueIdsMap(idToUniqueIdsMap == null ? null : Maps.newHashMap(idToUniqueIdsMap)); copy.setIdToPartitionItem(idToPartitionItem == null ? null : Maps.newHashMap(idToPartitionItem)); copy.setPartitionValuesMap(partitionValuesMap == null ? null : Maps.newHashMap(partitionValuesMap)); diff --git a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVPartitionUtil.java b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVPartitionUtil.java index 3d77f42a1ccb40..2c0f157020c1f0 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVPartitionUtil.java +++ b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVPartitionUtil.java @@ -41,7 +41,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -166,14 +165,6 @@ public static Map> generateRelatedPartitionDescs(M return result.getDescs(); } - public static List getPartitionNamesByIds(MTMV mtmv, Collection ids) throws AnalysisException { - List res = Lists.newArrayList(); - for (Long partitionId : ids) { - res.add(mtmv.getPartitionName(partitionId)); - } - return res; - } - public static List getPartitionsIdsByNames(MTMV mtmv, List partitions) throws AnalysisException { mtmv.readLock(); try { diff --git a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVRelatedTableIf.java b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVRelatedTableIf.java index 8aee7741cee0a0..c34df750de5bdc 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVRelatedTableIf.java +++ b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVRelatedTableIf.java @@ -79,15 +79,6 @@ public interface MTMVRelatedTableIf extends TableIf { */ MTMVSnapshotIf getTableSnapshot() throws AnalysisException; - /** - * getPartitionName - * - * @param partitionId - * @return partitionName - * @throws AnalysisException - */ - String getPartitionName(long partitionId) throws AnalysisException; - /** * Does the current type of table allow timed triggering * diff --git a/fe/fe-core/src/test/java/org/apache/doris/datasource/CatalogMgrTest.java b/fe/fe-core/src/test/java/org/apache/doris/datasource/CatalogMgrTest.java index 364e1f23b16de1..5f1e19f32846f2 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/datasource/CatalogMgrTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/datasource/CatalogMgrTest.java @@ -63,6 +63,8 @@ import com.github.benmanes.caffeine.cache.LoadingCache; import com.google.common.base.Preconditions; +import com.google.common.collect.BiMap; +import com.google.common.collect.HashBiMap; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Range; @@ -477,6 +479,7 @@ public void testAddSingleColumnPartitionsCache() { partitionValueCacheKey.getTypes()); HivePartitionValues partitionValues = metaStoreCache.getPartitionValues(partitionValueCacheKey); Assert.assertEquals(partitionValues.getPartitionNameToIdMap().size(), 4); + Assert.assertEquals(partitionValues.getPartitionNameToIdMap().inverse().size(), 4); } @Test @@ -520,7 +523,7 @@ private HivePartitionValues loadPartitionValues(PartitionValueCacheKey key, List HiveMetaStoreCache metaStoreCache) { // partition name format: nation=cn/city=beijing Map idToPartitionItem = Maps.newHashMapWithExpectedSize(partitionNames.size()); - Map partitionNameToIdMap = Maps.newHashMapWithExpectedSize(partitionNames.size()); + BiMap partitionNameToIdMap = HashBiMap.create(partitionNames.size()); Map> idToUniqueIdsMap = Maps.newHashMapWithExpectedSize(partitionNames.size()); long idx = 0; for (String partitionName : partitionNames) { diff --git a/fe/fe-core/src/test/java/org/apache/doris/mtmv/MTMVPartitionUtilTest.java b/fe/fe-core/src/test/java/org/apache/doris/mtmv/MTMVPartitionUtilTest.java index c125e548d06ac6..5cb03801d09d41 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/mtmv/MTMVPartitionUtilTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/mtmv/MTMVPartitionUtilTest.java @@ -99,10 +99,6 @@ public void setUp() throws NoSuchMethodException, SecurityException, AnalysisExc minTimes = 0; result = baseSnapshotIf; - mtmv.getPartitionName(anyLong); - minTimes = 0; - result = "name1"; - mtmv.getRefreshSnapshot(); minTimes = 0; result = refreshSnapshot; @@ -123,10 +119,6 @@ public void setUp() throws NoSuchMethodException, SecurityException, AnalysisExc minTimes = 0; result = baseSnapshotIf; - baseOlapTable.getPartitionName(anyLong); - minTimes = 0; - result = "name1"; - refreshSnapshot.equalsWithRelatedPartition(anyString, anyString, (MTMVSnapshotIf) any); minTimes = 0; result = true;