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 2b8c6a08e56 [chore](backup) Fix the db name of the restored view (#38075) 2b8c6a08e56 is described below commit 2b8c6a08e5674fadfedcb4a9e78ba17ec4a428d2 Author: walter <w41te...@gmail.com> AuthorDate: Thu Jul 18 20:52:43 2024 +0800 [chore](backup) Fix the db name of the restored view (#38075) Cherry-pick #37412 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 | 2 +- .../src/main/java/org/apache/doris/backup/BackupMeta.java | 10 +++++++++- .../src/main/java/org/apache/doris/backup/RestoreJob.java | 3 ++- .../src/main/java/org/apache/doris/catalog/Database.java | 5 +++++ 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 +- 7 files changed, 25 insertions(+), 6 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 ec22d6eafc7..5fd4e141262 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 @@ -402,7 +402,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()) { 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 e22bb7f33ce..42f438a0c22 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 @@ -39,6 +39,8 @@ import java.util.Map; public class BackupMeta implements Writable { + @SerializedName(value = "db") + private String dbName; // tbl name -> tbl @SerializedName(value = "tblNameMap") private Map<String, Table> tblNameMap = Maps.newHashMap(); @@ -52,7 +54,9 @@ public class BackupMeta implements Writable { 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); @@ -62,6 +66,10 @@ public class BackupMeta implements Writable { } } + 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 5812679daaf..4224dc6c3e7 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 @@ -738,7 +738,8 @@ public class RestoreJob extends AbstractJob { 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/Database.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/Database.java index 9c17f554a8d..816fd021784 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Database.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Database.java @@ -222,6 +222,11 @@ public class Database extends MetaObject implements Writable, DatabaseIf<Table> return fullQualifiedName; } + public String getName() { + String[] strs = fullQualifiedName.split(":"); + return strs.length == 2 ? strs[1] : strs[0]; + } + public void setNameWithLock(String newName) { writeLock(); try { 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 bc2608d7b67..0919ce6c80d 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 @@ -240,8 +240,13 @@ public class View extends Table { return copied; } - 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 d361777fdd5..7e55f94f8d9 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 @@ -252,7 +252,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