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

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


The following commit(s) were added to refs/heads/branch-3.0 by this push:
     new c914d8044a0 [opt] (binlog) Support Modify ViewDef binlog #41167 
(#44115)
c914d8044a0 is described below

commit c914d8044a0128203c4a58c0c8e36a4cf3521c8d
Author: walter <[email protected]>
AuthorDate: Tue Nov 19 10:19:43 2024 +0800

    [opt] (binlog) Support Modify ViewDef binlog #41167 (#44115)
    
    cherry pick from #41167
    
    Co-authored-by: yanmingfu <[email protected]>
    Co-authored-by: yanmingfu <[email protected]>
---
 .../main/java/org/apache/doris/binlog/BinlogManager.java    | 13 +++++++++++++
 .../main/java/org/apache/doris/persist/AlterViewInfo.java   |  4 ++++
 .../src/main/java/org/apache/doris/persist/EditLog.java     |  7 ++++++-
 gensrc/thrift/FrontendService.thrift                        |  4 ++--
 4 files changed, 25 insertions(+), 3 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/binlog/BinlogManager.java 
b/fe/fe-core/src/main/java/org/apache/doris/binlog/BinlogManager.java
index 35588568511..6d483a41314 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/binlog/BinlogManager.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/binlog/BinlogManager.java
@@ -25,6 +25,7 @@ import org.apache.doris.common.Pair;
 import org.apache.doris.common.proc.BaseProcResult;
 import org.apache.doris.common.proc.ProcResult;
 import org.apache.doris.persist.AlterDatabasePropertyInfo;
+import org.apache.doris.persist.AlterViewInfo;
 import org.apache.doris.persist.BarrierLog;
 import org.apache.doris.persist.BatchModifyPartitionsInfo;
 import org.apache.doris.persist.BinlogGcInfo;
@@ -354,6 +355,18 @@ public class BinlogManager {
         addBinlog(dbId, tableIds, commitSeq, timestamp, type, data, false, 
info);
     }
 
+    // add Modify view
+    public void addModifyViewDef(AlterViewInfo alterViewInfo, long commitSeq) {
+        long dbId = alterViewInfo.getDbId();
+        List<Long> tableIds = Lists.newArrayList();
+        tableIds.add(alterViewInfo.getTableId());
+        long timestamp = -1;
+        TBinlogType type = TBinlogType.MODIFY_VIEW_DEF;
+        String data = alterViewInfo.toJson();
+
+        addBinlog(dbId, tableIds, commitSeq, timestamp, type, data, false, 
alterViewInfo);
+    }
+
     // get binlog by dbId, return first binlog.version > version
     public Pair<TStatus, TBinlog> getBinlog(long dbId, long tableId, long 
prevCommitSeq) {
         TStatus status = new TStatus(TStatusCode.OK);
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/persist/AlterViewInfo.java 
b/fe/fe-core/src/main/java/org/apache/doris/persist/AlterViewInfo.java
index df1fb5696c6..c54dfcf7c31 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/persist/AlterViewInfo.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/persist/AlterViewInfo.java
@@ -105,4 +105,8 @@ public class AlterViewInfo implements Writable {
         String json = Text.readString(in);
         return GsonUtils.GSON.fromJson(json, AlterViewInfo.class);
     }
+
+    public String toJson() {
+        return GsonUtils.GSON.toJson(this);
+    }
 }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/persist/EditLog.java 
b/fe/fe-core/src/main/java/org/apache/doris/persist/EditLog.java
index 10a22dc0bcc..a982bf6d694 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/persist/EditLog.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/persist/EditLog.java
@@ -312,6 +312,7 @@ public class EditLog {
                 case OperationType.OP_MODIFY_VIEW_DEF: {
                     AlterViewInfo info = (AlterViewInfo) journal.getData();
                     env.getAlterInstance().replayModifyViewDef(info);
+                    env.getBinlogManager().addModifyViewDef(info, logId);
                     break;
                 }
                 case OperationType.OP_RENAME_PARTITION: {
@@ -1577,7 +1578,11 @@ public class EditLog {
     }
 
     public void logModifyViewDef(AlterViewInfo alterViewInfo) {
-        logEdit(OperationType.OP_MODIFY_VIEW_DEF, alterViewInfo);
+        long logId = logEdit(OperationType.OP_MODIFY_VIEW_DEF, alterViewInfo);
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("log modify view, logId : {}, infos: {}", logId, 
alterViewInfo);
+        }
+        Env.getCurrentEnv().getBinlogManager().addModifyViewDef(alterViewInfo, 
logId);
     }
 
     public void logRollupRename(TableInfo tableInfo) {
diff --git a/gensrc/thrift/FrontendService.thrift 
b/gensrc/thrift/FrontendService.thrift
index daf02cdf46b..5bce845beaa 100644
--- a/gensrc/thrift/FrontendService.thrift
+++ b/gensrc/thrift/FrontendService.thrift
@@ -1189,6 +1189,7 @@ enum TBinlogType {
   RENAME_TABLE = 14,
   RENAME_COLUMN = 15,
   MODIFY_COMMENT = 16,
+  MODIFY_VIEW_DEF = 17,
 
   // Keep some IDs for allocation so that when new binlog types are added in 
the
   // future, the changes can be picked back to the old versions without 
breaking
@@ -1205,8 +1206,7 @@ enum TBinlogType {
   //    MODIFY_XXX = 17,
   //    MIN_UNKNOWN = 18,
   //    UNKNOWN_3 = 19,
-  MIN_UNKNOWN = 17,
-  UNKNOWN_2 = 18,
+  MIN_UNKNOWN = 18,
   UNKNOWN_3 = 19,
   UNKNOWN_4 = 20,
   UNKNOWN_5 = 21,


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to