This is an automated email from the ASF dual-hosted git repository.

dataroaring pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-2.0 by this push:
     new 049bedae331 [fix](binlog) Add is temp for UpsertRecord (#35776)
049bedae331 is described below

commit 049bedae33133995e43d5b370196b8a65f8d43a9
Author: walter <w41te...@gmail.com>
AuthorDate: Mon Jun 3 21:08:11 2024 +0800

    [fix](binlog) Add is temp for UpsertRecord (#35776)
    
    Cherry-pick #35636.
    
    The ccr-syncer does not support syncing temporary partitions, so this PR
    adds a field to record whether this upsert record comes from a temporary
    partition.
---
 .../src/main/java/org/apache/doris/binlog/UpsertRecord.java |  4 ++++
 .../src/main/java/org/apache/doris/catalog/OlapTable.java   |  4 ++++
 .../main/java/org/apache/doris/catalog/TempPartitions.java  |  4 ++++
 .../apache/doris/transaction/DatabaseTransactionMgr.java    |  6 ++++--
 .../org/apache/doris/transaction/PartitionCommitInfo.java   | 13 +++++++++++--
 5 files changed, 27 insertions(+), 4 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/binlog/UpsertRecord.java 
b/fe/fe-core/src/main/java/org/apache/doris/binlog/UpsertRecord.java
index f42c7031cf0..cdfe8550d4f 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/binlog/UpsertRecord.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/binlog/UpsertRecord.java
@@ -42,6 +42,9 @@ public class UpsertRecord {
 
             @SerializedName(value = "version")
             public long version;
+
+            @SerializedName(value = "isTempPartition")
+            public boolean isTemp;
         }
 
         @SerializedName(value = "partitionRecords")
@@ -60,6 +63,7 @@ public class UpsertRecord {
             partitionRecord.partitionId = partitionCommitInfo.getPartitionId();
             partitionRecord.range = partitionCommitInfo.getPartitionRange();
             partitionRecord.version = partitionCommitInfo.getVersion();
+            partitionRecord.isTemp = partitionCommitInfo.isTempPartition();
             partitionRecords.add(partitionRecord);
         }
 
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 2595a7f9ae3..c3070d903f9 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
@@ -223,6 +223,10 @@ public class OlapTable extends Table {
         return getOrCreatTableProperty().isBeingSynced();
     }
 
+    public boolean isTemporaryPartition(long partitionId) {
+        return tempPartitions.hasPartition(partitionId);
+    }
+
     public void setTableProperty(TableProperty tableProperty) {
         this.tableProperty = tableProperty;
     }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/catalog/TempPartitions.java 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/TempPartitions.java
index 9cd2d61bf91..b3f93661396 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/TempPartitions.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/TempPartitions.java
@@ -104,6 +104,10 @@ public class TempPartitions implements Writable, 
GsonPostProcessable {
         return nameToPartition.containsKey(partName);
     }
 
+    public boolean hasPartition(long partitionId) {
+        return idToPartition.containsKey(partitionId);
+    }
+
     public boolean isEmpty() {
         return idToPartition.isEmpty();
     }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/transaction/DatabaseTransactionMgr.java
 
b/fe/fe-core/src/main/java/org/apache/doris/transaction/DatabaseTransactionMgr.java
index 6044cec35f5..f5e77563545 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/transaction/DatabaseTransactionMgr.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/transaction/DatabaseTransactionMgr.java
@@ -1168,7 +1168,8 @@ public class DatabaseTransactionMgr {
                         || tblPartitionInfo.getType() == PartitionType.LIST) {
                     partitionRange = 
tblPartitionInfo.getItem(partitionId).getItems().toString();
                 }
-                PartitionCommitInfo partitionCommitInfo = new 
PartitionCommitInfo(partitionId, partitionRange, -1, -1);
+                PartitionCommitInfo partitionCommitInfo = new 
PartitionCommitInfo(partitionId, partitionRange, -1, -1,
+                        table.isTemporaryPartition(partitionId));
                 tableCommitInfo.addPartitionCommitInfo(partitionCommitInfo);
             }
             transactionState.putIdToTableCommitInfo(tableId, tableCommitInfo);
@@ -1211,7 +1212,8 @@ public class DatabaseTransactionMgr {
                 }
                 PartitionCommitInfo partitionCommitInfo = new 
PartitionCommitInfo(partitionId, partitionRange,
                         partition.getNextVersion(),
-                        System.currentTimeMillis() /* use as partition visible 
time */);
+                        System.currentTimeMillis() /* use as partition visible 
time */,
+                        table.isTemporaryPartition(partitionId));
                 tableCommitInfo.addPartitionCommitInfo(partitionCommitInfo);
             }
             transactionState.putIdToTableCommitInfo(tableId, tableCommitInfo);
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/transaction/PartitionCommitInfo.java
 
b/fe/fe-core/src/main/java/org/apache/doris/transaction/PartitionCommitInfo.java
index 3f35c1d2954..e372a1fb2ce 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/transaction/PartitionCommitInfo.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/transaction/PartitionCommitInfo.java
@@ -37,17 +37,21 @@ public class PartitionCommitInfo implements Writable {
     private long version;
     @SerializedName(value = "versionTime")
     private long versionTime;
+    @SerializedName(value = "isTempPartition")
+    private boolean isTempPartition;
 
     public PartitionCommitInfo() {
 
     }
 
-    public PartitionCommitInfo(long partitionId, String partitionRange, long 
version, long visibleTime) {
+    public PartitionCommitInfo(long partitionId, String partitionRange, long 
version, long visibleTime,
+            boolean isTempPartition) {
         super();
         this.partitionId = partitionId;
         this.range = partitionRange;
         this.version = version;
         this.versionTime = visibleTime;
+        this.isTempPartition = isTempPartition;
     }
 
     @Override
@@ -85,12 +89,17 @@ public class PartitionCommitInfo implements Writable {
         this.versionTime = versionTime;
     }
 
+    public boolean isTempPartition() {
+        return this.isTempPartition;
+    }
+
     @Override
     public String toString() {
-        StringBuilder sb = new StringBuilder("partitionid=");
+        StringBuilder sb = new StringBuilder("partitionId=");
         sb.append(partitionId);
         sb.append(", version=").append(version);
         sb.append(", versionTime=").append(versionTime);
+        sb.append(", isTemp=").append(isTempPartition);
         return sb.toString();
     }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to