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

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


The following commit(s) were added to refs/heads/branch-2.1 by this push:
     new 1de9e7f9e8f branch-2.1: [fix](view)fix reset view def for restore 
wrong replace #50567 (#50600)
1de9e7f9e8f is described below

commit 1de9e7f9e8f06fe87c486b1f18e004ce1317c291
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Tue May 6 20:15:45 2025 +0800

    branch-2.1: [fix](view)fix reset view def for restore wrong replace #50567 
(#50600)
    
    Cherry-picked from #50567
    
    Co-authored-by: koarz <[email protected]>
---
 fe/fe-core/src/main/java/org/apache/doris/catalog/View.java    |  3 ++-
 .../src/test/java/org/apache/doris/catalog/CreateViewTest.java | 10 ++++++++++
 .../suites/backup_restore/test_backup_restore_with_view.groovy |  2 ++
 3 files changed, 14 insertions(+), 1 deletion(-)

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 54a8f87dc16..74cdad71074 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
@@ -251,7 +251,8 @@ public class View extends Table {
     public void resetViewDefForRestore(String srcDbName, String dbName) {
         // the source db name is not setted in old BackupMeta, keep compatible 
with the old one.
         if (srcDbName != null) {
-            inlineViewDef = inlineViewDef.replaceAll(srcDbName, dbName);
+            // replace dbName with a regular expression
+            inlineViewDef = 
inlineViewDef.replaceAll("(?<=`internal`\\.`)([^`]+)(?=`\\.`)", dbName);
         }
     }
 
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/catalog/CreateViewTest.java 
b/fe/fe-core/src/test/java/org/apache/doris/catalog/CreateViewTest.java
index 46bf3ddcde9..01c8a4f0ab9 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/catalog/CreateViewTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/catalog/CreateViewTest.java
@@ -190,4 +190,14 @@ public class CreateViewTest {
                         + "ORDER BY `w1` ASC NULLS FIRST",
                 alter1.getInlineViewDef());
     }
+
+    @Test
+    public void testResetViewDefForRestore() {
+        View view = new View();
+        view.setInlineViewDefWithSqlMode("SELECT `internal`.`test`.`test`.`k2` 
AS `k1`, "
+                + "FROM `internal`.`test`.`test`;", 1);
+        view.resetViewDefForRestore("test", "test1");
+        Assert.assertEquals("SELECT `internal`.`test1`.`test`.`k2` AS `k1`, "
+                + "FROM `internal`.`test1`.`test`;", view.getInlineViewDef());
+    }
 }
diff --git 
a/regression-test/suites/backup_restore/test_backup_restore_with_view.groovy 
b/regression-test/suites/backup_restore/test_backup_restore_with_view.groovy
index eae59f33df2..afb8e2a6e50 100644
--- a/regression-test/suites/backup_restore/test_backup_restore_with_view.groovy
+++ b/regression-test/suites/backup_restore/test_backup_restore_with_view.groovy
@@ -109,6 +109,8 @@ suite("test_backup_restore_with_view", "backup_restore") {
     restore_result.last()
     logger.info("show restore result: ${restore_result}")
     assertTrue(restore_result.last().State == "FINISHED")
+    def res = sql "SHOW VIEW FROM ${dbName1}.${tableName}"
+    assertTrue(res.size() > 0)
 
     sql "DROP TABLE ${dbName}.${tableName} FORCE"
     sql "DROP VIEW ${dbName}.${viewName}"


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

Reply via email to