in xtable-core/src/main/java/org/apache/xtable/hudi/catalog/HudiCatalogPartitionSyncTool.java [263:298]
private boolean syncPartitions(
HoodieTableMetaClient metaClient,
CatalogTableIdentifier tableIdentifier,
List<CatalogPartitionEvent> partitionEventList) {
List<CatalogPartition> newPartitions =
filterPartitions(
metaClient.getBasePathV2(),
partitionEventList,
CatalogPartitionEvent.PartitionEventType.ADD);
if (!newPartitions.isEmpty()) {
log.info("New Partitions " + newPartitions);
catalogClient.addPartitionsToTable(tableIdentifier, newPartitions);
}
List<CatalogPartition> updatePartitions =
filterPartitions(
metaClient.getBasePathV2(),
partitionEventList,
CatalogPartitionEvent.PartitionEventType.UPDATE);
if (!updatePartitions.isEmpty()) {
log.info("Changed Partitions " + updatePartitions);
catalogClient.updatePartitionsToTable(tableIdentifier, updatePartitions);
}
List<CatalogPartition> dropPartitions =
filterPartitions(
metaClient.getBasePathV2(),
partitionEventList,
CatalogPartitionEvent.PartitionEventType.DROP);
if (!dropPartitions.isEmpty()) {
log.info("Drop Partitions " + dropPartitions);
catalogClient.dropPartitions(tableIdentifier, dropPartitions);
}
return !updatePartitions.isEmpty() || !newPartitions.isEmpty() || !dropPartitions.isEmpty();
}