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

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

commit 8e416b9fd9f7bf19a3066e04c9b6bab0a1a97b36
Author: w41ter <w41te...@gmail.com>
AuthorDate: Fri Jul 5 09:42:48 2024 +0000

    [chore](backup) Fix the db name of the restored view
    
    Previously, during restore, the database name in the CREATE VIEW statement 
was
    not modified, causing the restored view to be unviewable with the SHOW VIEW
    command. This PR retains the original cluster's database name in the 
BackupMeta
    and manually replaces it with the new cluster's database name in the CREATE 
VIEW
    statement during restore.
---
 .../src/main/java/org/apache/doris/backup/BackupJob.java      |  9 +--------
 .../src/main/java/org/apache/doris/backup/BackupMeta.java     | 11 +++++++++--
 .../src/main/java/org/apache/doris/backup/RestoreJob.java     |  3 ++-
 fe/fe-core/src/main/java/org/apache/doris/catalog/View.java   |  7 ++++++-
 .../test/java/org/apache/doris/backup/BackupHandlerTest.java  |  2 +-
 .../src/test/java/org/apache/doris/backup/RestoreJobTest.java |  2 +-
 6 files changed, 20 insertions(+), 14 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/backup/BackupJob.java 
b/fe/fe-core/src/main/java/org/apache/doris/backup/BackupJob.java
index 00894863650..c706fb70753 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/backup/BackupJob.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/backup/BackupJob.java
@@ -454,7 +454,7 @@ public class BackupJob extends AbstractJob {
             }
         }
 
-        backupMeta = new BackupMeta(copiedTables, copiedResources);
+        backupMeta = new BackupMeta(db.getName(), copiedTables, 
copiedResources);
 
         // send tasks
         for (AgentTask task : batchTask.getAllTasks()) {
@@ -992,8 +992,6 @@ public class BackupJob extends AbstractJob {
 
         // table refs
         int size = in.readInt();
-        LOG.info("read {} tablerefs ", size);
-
         tableRefs = Lists.newArrayList();
         for (int i = 0; i < size; i++) {
             TableRef tblRef = TableRef.read(in);
@@ -1008,8 +1006,6 @@ public class BackupJob extends AbstractJob {
 
         // snapshot info
         size = in.readInt();
-        LOG.info("read {} snapshotinfo ", size);
-
         for (int i = 0; i < size; i++) {
             SnapshotInfo snapshotInfo = SnapshotInfo.read(in);
             snapshotInfos.put(snapshotInfo.getTabletId(), snapshotInfo);
@@ -1017,7 +1013,6 @@ public class BackupJob extends AbstractJob {
 
         // backup meta
         if (in.readBoolean()) {
-            LOG.info("read backup meta");
             backupMeta = BackupMeta.read(in);
         }
 
@@ -1033,8 +1028,6 @@ public class BackupJob extends AbstractJob {
         }
         // read properties
         size = in.readInt();
-        LOG.info("read {} property ", size);
-
         for (int i = 0; i < size; i++) {
             String key = Text.readString(in);
             String value = Text.readString(in);
diff --git a/fe/fe-core/src/main/java/org/apache/doris/backup/BackupMeta.java 
b/fe/fe-core/src/main/java/org/apache/doris/backup/BackupMeta.java
index e27c8d19a84..c08d8c16002 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/backup/BackupMeta.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/backup/BackupMeta.java
@@ -42,7 +42,8 @@ import java.util.List;
 import java.util.Map;
 
 public class BackupMeta implements Writable, GsonPostProcessable {
-
+    @SerializedName(value = "db")
+    private String dbName;
     // tbl name -> tbl
     @SerializedName(value = "tblNameMap")
     private Map<String, Table> tblNameMap = Maps.newHashMap();
@@ -55,7 +56,9 @@ public class BackupMeta implements Writable, 
GsonPostProcessable {
     private BackupMeta() {
     }
 
-    public BackupMeta(List<Table> tables, List<Resource> resources) {
+    public BackupMeta(String dbName, List<Table> tables, List<Resource> 
resources) {
+        this.dbName = dbName;
+
         for (Table table : tables) {
             tblNameMap.put(table.getName(), table);
             tblIdMap.put(table.getId(), table);
@@ -65,6 +68,10 @@ public class BackupMeta implements Writable, 
GsonPostProcessable {
         }
     }
 
+    public String getDbName() {
+        return dbName;
+    }
+
     public Map<String, Table> getTables() {
         return tblNameMap;
     }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/backup/RestoreJob.java 
b/fe/fe-core/src/main/java/org/apache/doris/backup/RestoreJob.java
index 098c473d32e..ac94e03f252 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/backup/RestoreJob.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/backup/RestoreJob.java
@@ -783,7 +783,8 @@ public class RestoreJob extends AbstractJob implements 
GsonPostProcessable {
                         return;
                     }
                 } else {
-                    remoteView.resetIdsForRestore(env);
+                    String srcDbName = backupMeta.getDbName();
+                    remoteView.resetIdsForRestore(env, srcDbName, 
db.getFullName());
                     restoredTbls.add(remoteView);
                 }
             }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/View.java 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/View.java
index 4d2558f8748..8285dedc094 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/View.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/View.java
@@ -250,8 +250,13 @@ public class View extends Table implements 
GsonPostProcessable {
         return GsonUtils.GSON.fromJson(Text.readString(in), View.class);
     }
 
-    public void resetIdsForRestore(Env env) {
+    public void resetIdsForRestore(Env env, String srcDbName, String dbName) {
         id = env.getNextId();
+
+        // the source db name is not setted in old BackupMeta, keep compatible 
with the old one.
+        if (srcDbName != null) {
+            inlineViewDef = inlineViewDef.replaceAll(srcDbName, dbName);
+        }
     }
 
     @Override
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/backup/BackupHandlerTest.java 
b/fe/fe-core/src/test/java/org/apache/doris/backup/BackupHandlerTest.java
index 97e689b6972..5de2be6c9ee 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/backup/BackupHandlerTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/backup/BackupHandlerTest.java
@@ -212,7 +212,7 @@ public class BackupHandlerTest {
                 List<Table> tbls = Lists.newArrayList();
                 tbls.add(tbl);
                 List<Resource> resources = Lists.newArrayList();
-                BackupMeta backupMeta = new BackupMeta(tbls, resources);
+                BackupMeta backupMeta = new BackupMeta(null, tbls, resources);
                 Map<Long, SnapshotInfo> snapshotInfos = Maps.newHashMap();
                 for (Partition part : tbl.getPartitions()) {
                     for (MaterializedIndex idx : 
part.getMaterializedIndices(IndexExtState.VISIBLE)) {
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/backup/RestoreJobTest.java 
b/fe/fe-core/src/test/java/org/apache/doris/backup/RestoreJobTest.java
index 71cad0438c9..43bdc5c2675 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/backup/RestoreJobTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/backup/RestoreJobTest.java
@@ -258,7 +258,7 @@ public class RestoreJobTest {
         List<Table> tbls = Lists.newArrayList();
         List<Resource> resources = Lists.newArrayList();
         tbls.add(expectedRestoreTbl);
-        backupMeta = new BackupMeta(tbls, resources);
+        backupMeta = new BackupMeta(null, tbls, resources);
     }
 
     @Test


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

Reply via email to