Skip to content

Commit b3a1ec7

Browse files
committed
1 parent 30e83a9 commit b3a1ec7

File tree

2 files changed

+22
-7
lines changed

2 files changed

+22
-7
lines changed

fe/fe-core/src/main/java/com/starrocks/catalog/PaimonTable.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
package com.starrocks.catalog;
1616

1717
import com.google.common.base.Joiner;
18+
import com.google.common.base.Strings;
1819
import com.starrocks.analysis.DescriptorTable;
1920
import com.starrocks.common.util.TimeUtils;
2021
import com.starrocks.planner.PaimonScanNode;
@@ -40,6 +41,7 @@ public class PaimonTable extends Table {
4041
private String databaseName;
4142
private String tableName;
4243
private org.apache.paimon.table.Table paimonNativeTable;
44+
private String uuid;
4345
private List<String> partColumnNames;
4446
private List<String> paimonFieldNames;
4547
private Map<String, String> properties;
@@ -87,7 +89,11 @@ public void setPaimonNativeTable(org.apache.paimon.table.Table paimonNativeTable
8789

8890
@Override
8991
public String getUUID() {
90-
return String.join(".", catalogName, databaseName, tableName, paimonNativeTable.uuid());
92+
if (Strings.isNullOrEmpty(this.uuid)) {
93+
this.uuid = String.join(".", catalogName, databaseName, tableName,
94+
paimonNativeTable.uuid().replace(".", "_"));
95+
}
96+
return this.uuid;
9197
}
9298

9399
@Override

fe/fe-core/src/main/java/com/starrocks/connector/paimon/PaimonMetadata.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ public class PaimonMetadata implements ConnectorMetadata {
104104
private final Map<String, Database> databases = new ConcurrentHashMap<>();
105105
private final Map<PredicateSearchKey, PaimonSplitsInfo> paimonSplits = new ConcurrentHashMap<>();
106106
private final ConnectorProperties properties;
107-
private final Map<String, Partition> partitionInfos = new ConcurrentHashMap<>();
107+
private final Map<Identifier, Map<String, Partition>> partitionInfos = new ConcurrentHashMap<>();
108108

109109
public PaimonMetadata(String catalogName, HdfsEnvironment hdfsEnvironment, Catalog paimonNativeCatalog,
110110
ConnectorProperties properties) {
@@ -137,6 +137,9 @@ private void updatePartitionInfo(String databaseName, String tableName) {
137137
Identifier identifier = new Identifier(databaseName, tableName);
138138
org.apache.paimon.table.Table paimonTable;
139139
RowType dataTableRowType;
140+
if (!this.partitionInfos.containsKey(identifier)) {
141+
this.partitionInfos.put(identifier, new ConcurrentHashMap<>());
142+
}
140143
try {
141144
paimonTable = this.paimonNativeCatalog.getTable(identifier);
142145
dataTableRowType = paimonTable.rowType();
@@ -164,7 +167,7 @@ private void updatePartitionInfo(String databaseName, String tableName) {
164167
partition.fileSizeInBytes(), partition.fileCount(),
165168
partitionColumnNames, partitionColumnTypes, partitionValues,
166169
Timestamp.fromEpochMillis(partition.lastFileCreationTime()));
167-
this.partitionInfos.put(srPartition.getPartitionName(), srPartition);
170+
this.partitionInfos.get(identifier).put(srPartition.getPartitionName(), srPartition);
168171
}
169172
} catch (Catalog.TableNotExistException e) {
170173
LOG.error("Failed to update partition info of paimon table {}.{}.", databaseName, tableName, e);
@@ -210,8 +213,12 @@ private Long convertToSystemDefaultTime(Timestamp lastUpdateTime) {
210213

211214
@Override
212215
public List<String> listPartitionNames(String databaseName, String tableName, ConnectorMetadatRequestContext requestContext) {
216+
Identifier identifier = new Identifier(databaseName, tableName);
213217
updatePartitionInfo(databaseName, tableName);
214-
return new ArrayList<>(this.partitionInfos.keySet());
218+
if (this.partitionInfos.get(identifier) == null) {
219+
return Lists.newArrayList();
220+
}
221+
return new ArrayList<>(this.partitionInfos.get(identifier).keySet());
215222
}
216223

217224
@Override
@@ -553,6 +560,7 @@ public long getTableUpdateTime(String dbName, String tblName) {
553560
@Override
554561
public List<PartitionInfo> getPartitions(Table table, List<String> partitionNames) {
555562
PaimonTable paimonTable = (PaimonTable) table;
563+
Identifier identifier = new Identifier(paimonTable.getCatalogDBName(), paimonTable.getCatalogTableName());
556564
List<PartitionInfo> result = new ArrayList<>();
557565
if (table.isUnPartitioned()) {
558566

@@ -561,12 +569,13 @@ public List<PartitionInfo> getPartitions(Table table, List<String> partitionName
561569
null, null));
562570
return result;
563571
}
572+
Map<String, Partition> partitionInfo = this.partitionInfos.get(identifier);
564573
for (String partitionName : partitionNames) {
565-
if (this.partitionInfos.get(partitionName) == null) {
574+
if (partitionInfo == null || partitionInfo.get(partitionName) == null) {
566575
this.updatePartitionInfo(paimonTable.getCatalogDBName(), paimonTable.getCatalogTableName());
567576
}
568-
if (this.partitionInfos.get(partitionName) != null) {
569-
result.add(this.partitionInfos.get(partitionName));
577+
if (partitionInfo.get(partitionName) != null) {
578+
result.add(partitionInfo.get(partitionName));
570579
} else {
571580
LOG.warn("Cannot find the paimon partition info: {}", partitionName);
572581
}

0 commit comments

Comments
 (0)