This is an automated email from the ASF dual-hosted git repository.
dataroaring pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new a15e3e549af [fix](catelog) Unifies partition items string (#45669)
a15e3e549af is described below
commit a15e3e549af1aa125e9e5317214c26230f51c415
Author: walter <[email protected]>
AuthorDate: Fri Dec 20 12:34:24 2024 +0800
[fix](catelog) Unifies partition items string (#45669)
### What problem does this PR solve?
Issue Number: close #xxx
Related PR: #xxx
Problem Summary:
For range partitions, `getItems().toString()` is equal to
`getItemsString`, but for list partitions, there has a `,` between each
item.
The upsert record of binlog is generated via `getItemsString`, but the
getMeta method fetches partition items string via
`getItems().toString()`, which are different in the list partitions, and
the ccr-syncer is unable to identify them.
This PR unifies all partition items string via `getItemsString`.
---
fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java | 6 +-----
.../java/org/apache/doris/catalog/ListPartitionItem.java | 12 ++++++------
.../java/org/apache/doris/catalog/RangePartitionItem.java | 12 ++++++------
.../org/apache/doris/common/proc/EsPartitionsProcDir.java | 2 +-
.../java/org/apache/doris/common/proc/PartitionsProcDir.java | 2 +-
5 files changed, 15 insertions(+), 19 deletions(-)
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java
b/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java
index cc7b8846b1f..1c6345613d7 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java
@@ -6486,11 +6486,7 @@ public class Env {
long partitionId = partition.getId();
partitionMeta.setId(partitionId);
partitionMeta.setName(partition.getName());
- String partitionRange = "";
- if (tblPartitionInfo.getType() == PartitionType.RANGE
- || tblPartitionInfo.getType() == PartitionType.LIST) {
- partitionRange =
tblPartitionInfo.getItem(partitionId).getItems().toString();
- }
+ String partitionRange =
tblPartitionInfo.getPartitionRangeString(partitionId);
partitionMeta.setRange(partitionRange);
partitionMeta.setVisibleVersion(partition.getVisibleVersion());
// partitionMeta.setTemp(partition.isTemp());
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/catalog/ListPartitionItem.java
b/fe/fe-core/src/main/java/org/apache/doris/catalog/ListPartitionItem.java
index dba109a9539..98585381244 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/ListPartitionItem.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/ListPartitionItem.java
@@ -61,7 +61,12 @@ public class ListPartitionItem extends PartitionItem {
}
public String getItemsString() {
- return toString();
+ // ATTN: DO NOT EDIT unless unless you explicitly guarantee
compatibility
+ // between different versions.
+ //
+ // the ccr syncer depends on this string to identify partitions
between two
+ // clusters (cluster versions may be different).
+ return getItems().toString();
}
public String getItemsSql() {
@@ -173,11 +178,6 @@ public class ListPartitionItem extends PartitionItem {
@Override
public String toString() {
- // ATTN: DO NOT EDIT unless unless you explicitly guarantee
compatibility
- // between different versions.
- //
- // the ccr syncer depends on this string to identify partitions
between two
- // clusters (cluster versions may be different).
StringBuilder builder = new StringBuilder();
builder.append("partitionKeys: [");
for (PartitionKey partitionKey : partitionKeys) {
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/catalog/RangePartitionItem.java
b/fe/fe-core/src/main/java/org/apache/doris/catalog/RangePartitionItem.java
index 690ab88991b..96bf0097c28 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/RangePartitionItem.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/RangePartitionItem.java
@@ -46,7 +46,12 @@ public class RangePartitionItem extends PartitionItem {
}
public String getItemsString() {
- return toString();
+ // ATTN: DO NOT EDIT unless unless you explicitly guarantee
compatibility
+ // between different versions.
+ //
+ // the ccr syncer depends on this string to identify partitions
between two
+ // clusters (cluster versions may be different).
+ return partitionKeyRange.toString();
}
public String getItemsSql() {
@@ -125,11 +130,6 @@ public class RangePartitionItem extends PartitionItem {
@Override
public String toString() {
- // ATTN: DO NOT EDIT unless unless you explicitly guarantee
compatibility
- // between different versions.
- //
- // the ccr syncer depends on this string to identify partitions
between two
- // clusters (cluster versions may be different).
return partitionKeyRange.toString();
}
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/common/proc/EsPartitionsProcDir.java
b/fe/fe-core/src/main/java/org/apache/doris/common/proc/EsPartitionsProcDir.java
index 87e7fa449f1..ed5cfc18d13 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/common/proc/EsPartitionsProcDir.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/common/proc/EsPartitionsProcDir.java
@@ -93,7 +93,7 @@ public class EsPartitionsProcDir implements ProcDirInterface {
}
partitionInfo.add(joiner.join(colNames)); // partition key
partitionInfo.add(
-
rangePartitionInfo.getItem(esShardPartitions.getPartitionId()).getItems().toString());
// range
+
rangePartitionInfo.getItem(esShardPartitions.getPartitionId()).getItemsString());
// range
partitionInfo.add("-"); // dis
partitionInfo.add(esShardPartitions.getShardRoutings().size()); // shards
partitionInfo.add(1); // replica num
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/common/proc/PartitionsProcDir.java
b/fe/fe-core/src/main/java/org/apache/doris/common/proc/PartitionsProcDir.java
index 3c44874cb7d..3ac8b797d64 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/common/proc/PartitionsProcDir.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/common/proc/PartitionsProcDir.java
@@ -323,7 +323,7 @@ public class PartitionsProcDir implements ProcDirInterface {
String colNamesStr = joiner.join(colNames);
partitionInfo.add(colNamesStr);
trow.addToColumnValue(new
TCell().setStringVal(colNamesStr));
- String itemStr =
tblPartitionInfo.getItem(partitionId).getItems().toString();
+ String itemStr =
tblPartitionInfo.getPartitionRangeString(partitionId);
partitionInfo.add(itemStr);
trow.addToColumnValue(new TCell().setStringVal(itemStr));
} else {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]