diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/InlineViewRef.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/InlineViewRef.java index 750fcfea9fa801..8df63b44922004 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/InlineViewRef.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/InlineViewRef.java @@ -108,9 +108,12 @@ public InlineViewRef(View view, TableRef origTblRef) { // TODO(zc) // view_.getTableName().toString().toLowerCase(), view.getName().toLowerCase() if (view.isLocalView()) { - aliases_ = new String[] { view.getName() }; + aliases_ = new String[]{view.getName()}; } else { - aliases_ = new String[] { name.toString(), view.getName() }; + aliases_ = new String[]{name.toString(), view.getName()}; + } + if (origTblRef.getLateralViewRefs() != null) { + lateralViewRefs = (ArrayList) origTblRef.getLateralViewRefs().clone(); } } diff --git a/fe/fe-core/src/test/java/org/apache/doris/planner/TableFunctionPlanTest.java b/fe/fe-core/src/test/java/org/apache/doris/planner/TableFunctionPlanTest.java index a2b26e4b855148..c127d2fd9c2b7e 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/planner/TableFunctionPlanTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/planner/TableFunctionPlanTest.java @@ -480,7 +480,7 @@ public void aggColumnInOuterQuery() throws Exception { } @Test - public void testLaterViewWithView() throws Exception { + public void testLateralViewWithView() throws Exception { // test 1 String createViewStr = "create view db1.v1 (k1,e1) as select k1,e1 from db1.table_for_view lateral view explode_split(k3,',') tmp as e1;"; CreateViewStmt createViewStmt = (CreateViewStmt) UtFrameUtils.parseAndAnalyzeStmt(createViewStr, ctx); @@ -495,7 +495,7 @@ public void testLaterViewWithView() throws Exception { } @Test - public void testLaterViewWithWhere() throws Exception { + public void testLateralViewWithWhere() throws Exception { String sql = "select k1,e1 from db1.table_for_view lateral view explode_split(k3,',') tmp as e1 where k1 in (select k2 from db1.table_for_view);"; String explainString = UtFrameUtils.getSQLPlanOrErrorMsg(ctx, sql, true); Assert.assertTrue(explainString.contains("join op: LEFT SEMI JOIN (BROADCAST)")); @@ -504,23 +504,21 @@ public void testLaterViewWithWhere() throws Exception { } @Test - public void testLaterViewWithCTE() throws Exception { + public void testLateralViewWithCTE() throws Exception { String sql = "with tmp as (select k1,e1 from db1.table_for_view lateral view explode_split(k3,',') tmp2 as e1) select * from tmp;"; String explainString = UtFrameUtils.getSQLPlanOrErrorMsg(ctx, sql, true); Assert.assertTrue(explainString.contains("table function: explode_split(`default_cluster:db1`.`table_for_view`.`k3`, ',') ")); } - @Ignore - // errCode = 2, detailMessage = Unknown column 'e1' in 'table list' - public void testLaterViewWithCTEBug() throws Exception { + @Test + public void testLateralViewWithCTEBug() throws Exception { String sql = "with tmp as (select * from db1.table_for_view where k2=1) select k1,e1 from tmp lateral view explode_split(k3,',') tmp2 as e1;"; String explainString = UtFrameUtils.getSQLPlanOrErrorMsg(ctx, sql, true); Assert.assertTrue(!explainString.contains("Unknown column 'e1' in 'table list'")); } - @Ignore - // errCode = 2, detailMessage = Unknown column 'e1' in 'table list' - public void testLaterViewUnknowColumnBug() throws Exception { + @Test + public void testLateralViewUnknownColumnBug() throws Exception { // test2 String createViewStr = "create view db1.v2 (k1,k3) as select k1,k3 from db1.table_for_view;"; CreateViewStmt createViewStmt = (CreateViewStmt) UtFrameUtils.parseAndAnalyzeStmt(createViewStr, ctx);