Skip to content

Commit 0edf687

Browse files
committed
1
1 parent 02c3057 commit 0edf687

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

pkg/ccr/base/spec.go

+7
Original file line numberDiff line numberDiff line change
@@ -631,6 +631,7 @@ func (s *Spec) CreateTableOrView(createTable *record.CreateTable, srcDatabase st
631631
}
632632

633633
createSql = AddDBPrefixToCreateTableOrViewSql(s.Database, createSql)
634+
createSql = ReplaceDBNameForCreateSql(createSql, s.Database, s.Database)
634635

635636
// Compatible with doris 2.1.x, see apache/doris#44834 for details.
636637
for strings.Contains(createSql, "MAXVALUEMAXVALUE") {
@@ -1550,3 +1551,9 @@ func AddDBPrefixToCreateTableOrViewSql(dbName, createSql string) string {
15501551
}
15511552
return createSql
15521553
}
1554+
1555+
func ReplaceDBNameForCreateSql(createSql, srcDbName, destName string) string {
1556+
re := regexp.MustCompile(fmt.Sprintf(`\b%s\b`, srcDbName))
1557+
createSql = re.ReplaceAllString(createSql, destName)
1558+
return createSql
1559+
}

pkg/ccr/base/spec_test.go

+17
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,20 @@ func TestAddDBPrefixToCreateTableOrViewSql(t *testing.T) {
2626
}
2727
}
2828
}
29+
30+
func TestReplaceDBNameForCreateSql(t *testing.T) {
31+
type TestCase struct {
32+
origin, expect string
33+
}
34+
35+
testCases := []TestCase{
36+
{"CREATE VIEW `target_db`.`v` AS (select `origin_db`.`func`(`internal`.`target_db`.`create_view_table1`.`id`) as `c1`,abs(`internal`.`target_db`.`create_view_table1`.`id`) from `internal`.`target_db`.`create_view_table1`)", "CREATE VIEW `target_db`.`v` AS (select `target_db`.`func`(`internal`.`target_db`.`create_view_table1`.`id`) as `c1`,abs(`internal`.`target_db`.`create_view_table1`.`id`) from `internal`.`target_db`.`create_view_table1`)"},
37+
{"CREATE VIEW `target_db`.`v` AS (select `origin_db_not_replace`.`func`(`internal`.`target_db`.`create_view_table1`.`id`) as `c1`,abs(`internal`.`target_db`.`create_view_table1`.`id`) from `internal`.`target_db`.`create_view_table1`)", "CREATE VIEW `target_db`.`v` AS (select `origin_db_not_replace`.`func`(`internal`.`target_db`.`create_view_table1`.`id`) as `c1`,abs(`internal`.`target_db`.`create_view_table1`.`id`) from `internal`.`target_db`.`create_view_table1`)"},
38+
}
39+
40+
for i, c := range testCases {
41+
if actual := base.ReplaceDBNameForCreateSql(c.origin, "origin_db", "target_db"); actual != c.expect {
42+
t.Errorf("case %d failed, expect %s, but got %s", i, c.expect, actual)
43+
}
44+
}
45+
}

0 commit comments

Comments
 (0)