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