Skip to content

Commit a4deefe

Browse files
authored
[fix](catalog) gen partition id by name (#39325) (#39625)
bp #39325
1 parent a3fd13f commit a4deefe

File tree

2 files changed

+5
-11
lines changed

2 files changed

+5
-11
lines changed

fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HiveMetaStoreCache.java

+4-10
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import org.apache.doris.common.security.authentication.AuthenticationConfig;
3535
import org.apache.doris.common.util.CacheBulkLoader;
3636
import org.apache.doris.common.util.LocationPath;
37+
import org.apache.doris.common.util.Util;
3738
import org.apache.doris.datasource.CacheException;
3839
import org.apache.doris.datasource.hive.AcidInfo.DeleteDeltaInfo;
3940
import org.apache.doris.datasource.property.PropertyConverter;
@@ -250,9 +251,8 @@ private HivePartitionValues loadPartitionValues(PartitionValueCacheKey key) {
250251
Map<Long, PartitionItem> idToPartitionItem = Maps.newHashMapWithExpectedSize(partitionNames.size());
251252
BiMap<String, Long> partitionNameToIdMap = HashBiMap.create(partitionNames.size());
252253
Map<Long, List<UniqueId>> idToUniqueIdsMap = Maps.newHashMapWithExpectedSize(partitionNames.size());
253-
long idx = 0;
254254
for (String partitionName : partitionNames) {
255-
long partitionId = idx++;
255+
long partitionId = Util.genIdByName(catalog.getName(), key.dbName, key.tblName, partitionName);
256256
ListPartitionItem listPartitionItem = toListPartitionItem(partitionName, key.types);
257257
idToPartitionItem.put(partitionId, listPartitionItem);
258258
partitionNameToIdMap.put(partitionName, partitionId);
@@ -273,7 +273,7 @@ private HivePartitionValues loadPartitionValues(PartitionValueCacheKey key) {
273273
singleUidToColumnRangeMap = ListPartitionPrunerV2.genSingleUidToColumnRange(singleColumnRangeMap);
274274
}
275275
Map<Long, List<String>> partitionValuesMap = ListPartitionPrunerV2.getPartitionValuesMap(idToPartitionItem);
276-
return new HivePartitionValues(idToPartitionItem, uidToPartitionRange, rangeToId, singleColumnRangeMap, idx,
276+
return new HivePartitionValues(idToPartitionItem, uidToPartitionRange, rangeToId, singleColumnRangeMap,
277277
partitionNameToIdMap, idToUniqueIdsMap, singleUidToColumnRangeMap, partitionValuesMap);
278278
}
279279

@@ -638,13 +638,12 @@ public void addPartitionsCache(String dbName, String tblName, List<String> parti
638638
Map<String, Long> partitionNameToIdMapBefore = copy.getPartitionNameToIdMap();
639639
Map<Long, List<UniqueId>> idToUniqueIdsMap = copy.getIdToUniqueIdsMap();
640640
Map<Long, PartitionItem> idToPartitionItem = new HashMap<>();
641-
long idx = copy.getNextPartitionId();
642641
for (String partitionName : partitionNames) {
643642
if (partitionNameToIdMapBefore.containsKey(partitionName)) {
644643
LOG.info("addPartitionsCache partitionName:[{}] has exist in table:[{}]", partitionName, tblName);
645644
continue;
646645
}
647-
long partitionId = idx++;
646+
long partitionId = Util.genIdByName(catalog.getName(), dbName, tblName, partitionName);
648647
ListPartitionItem listPartitionItem = toListPartitionItem(partitionName, key.types);
649648
idToPartitionItemBefore.put(partitionId, listPartitionItem);
650649
idToPartitionItem.put(partitionId, listPartitionItem);
@@ -653,7 +652,6 @@ public void addPartitionsCache(String dbName, String tblName, List<String> parti
653652
Map<Long, List<String>> partitionValuesMapBefore = copy.getPartitionValuesMap();
654653
Map<Long, List<String>> partitionValuesMap = ListPartitionPrunerV2.getPartitionValuesMap(idToPartitionItem);
655654
partitionValuesMapBefore.putAll(partitionValuesMap);
656-
copy.setNextPartitionId(idx);
657655
if (key.types.size() > 1) {
658656
Map<UniqueId, Range<PartitionKey>> uidToPartitionRangeBefore = copy.getUidToPartitionRange();
659657
// uidToPartitionRange and rangeToId are only used for multi-column partition
@@ -1075,7 +1073,6 @@ public static class HiveFileStatus {
10751073

10761074
@Data
10771075
public static class HivePartitionValues {
1078-
private long nextPartitionId;
10791076
private BiMap<String, Long> partitionNameToIdMap;
10801077
private Map<Long, List<UniqueId>> idToUniqueIdsMap;
10811078
private Map<Long, PartitionItem> idToPartitionItem;
@@ -1094,7 +1091,6 @@ public HivePartitionValues(Map<Long, PartitionItem> idToPartitionItem,
10941091
Map<UniqueId, Range<PartitionKey>> uidToPartitionRange,
10951092
Map<Range<PartitionKey>, UniqueId> rangeToId,
10961093
RangeMap<ColumnBound, UniqueId> singleColumnRangeMap,
1097-
long nextPartitionId,
10981094
BiMap<String, Long> partitionNameToIdMap,
10991095
Map<Long, List<UniqueId>> idToUniqueIdsMap,
11001096
Map<UniqueId, Range<ColumnBound>> singleUidToColumnRangeMap,
@@ -1103,7 +1099,6 @@ public HivePartitionValues(Map<Long, PartitionItem> idToPartitionItem,
11031099
this.uidToPartitionRange = uidToPartitionRange;
11041100
this.rangeToId = rangeToId;
11051101
this.singleColumnRangeMap = singleColumnRangeMap;
1106-
this.nextPartitionId = nextPartitionId;
11071102
this.partitionNameToIdMap = partitionNameToIdMap;
11081103
this.idToUniqueIdsMap = idToUniqueIdsMap;
11091104
this.singleUidToColumnRangeMap = singleUidToColumnRangeMap;
@@ -1112,7 +1107,6 @@ public HivePartitionValues(Map<Long, PartitionItem> idToPartitionItem,
11121107

11131108
public HivePartitionValues copy() {
11141109
HivePartitionValues copy = new HivePartitionValues();
1115-
copy.setNextPartitionId(nextPartitionId);
11161110
copy.setPartitionNameToIdMap(partitionNameToIdMap == null ? null : HashBiMap.create(partitionNameToIdMap));
11171111
copy.setIdToUniqueIdsMap(idToUniqueIdsMap == null ? null : Maps.newHashMap(idToUniqueIdsMap));
11181112
copy.setIdToPartitionItem(idToPartitionItem == null ? null : Maps.newHashMap(idToPartitionItem));

fe/fe-core/src/test/java/org/apache/doris/datasource/CatalogMgrTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -548,7 +548,7 @@ private HivePartitionValues loadPartitionValues(PartitionValueCacheKey key, List
548548
singleUidToColumnRangeMap = ListPartitionPrunerV2.genSingleUidToColumnRange(singleColumnRangeMap);
549549
}
550550
Map<Long, List<String>> partitionValuesMap = ListPartitionPrunerV2.getPartitionValuesMap(idToPartitionItem);
551-
return new HivePartitionValues(idToPartitionItem, uidToPartitionRange, rangeToId, singleColumnRangeMap, idx,
551+
return new HivePartitionValues(idToPartitionItem, uidToPartitionRange, rangeToId, singleColumnRangeMap,
552552
partitionNameToIdMap, idToUniqueIdsMap, singleUidToColumnRangeMap, partitionValuesMap);
553553
}
554554

0 commit comments

Comments
 (0)