From fb66fbd31cef88aa4eb0874f23012283819410bd Mon Sep 17 00:00:00 2001 From: Yosyp Buchma Date: Sat, 20 Jul 2024 16:49:49 +0200 Subject: [PATCH] fix ProjectionList{}.As method (issue #364) --- internal/jet/projection.go | 4 ++++ internal/jet/projection_test.go | 13 ++++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/internal/jet/projection.go b/internal/jet/projection.go index 1b1c625..3139d3f 100644 --- a/internal/jet/projection.go +++ b/internal/jet/projection.go @@ -45,6 +45,10 @@ func (pl ProjectionList) As(tableAlias string) ProjectionList { newProjectionList = append(newProjectionList, p.As(tableAlias)) case ColumnExpression: newProjectionList = append(newProjectionList, newAlias(p, tableAlias+"."+p.Name())) + case ColumnList: + for _, c := range p { + newProjectionList = append(newProjectionList, newAlias(c, tableAlias+"."+c.Name())) + } case *alias: newAlias := *p _, columnName := extractTableAndColumnName(newAlias.alias) diff --git a/internal/jet/projection_test.go b/internal/jet/projection_test.go index 7728e15..96727d5 100644 --- a/internal/jet/projection_test.go +++ b/internal/jet/projection_test.go @@ -12,6 +12,7 @@ func TestProjectionAs(t *testing.T) { AVG(table1ColInt).AS("avg"), AVG(table1ColInt).AS("t.avg"), }, + ColumnList{table2Col3, table2Col4}, } aliasedProjectionList := projectionList.As("new_alias.*") @@ -22,7 +23,9 @@ SUM(table1.col_int) AS "new_alias.sum", SUM(table1.col_int) AS "new_alias.sum", table1.col_bool AS "new_alias.col_bool", AVG(table1.col_int) AS "new_alias.avg", -AVG(table1.col_int) AS "new_alias.avg"`) +AVG(table1.col_int) AS "new_alias.avg", +table2.col3 AS "new_alias.col3", +table2.col4 AS "new_alias.col4"`) subQueryProjections := projectionList.fromImpl(NewSelectTable(nil, "subQuery")) @@ -32,7 +35,9 @@ AVG(table1.col_int) AS "new_alias.avg"`) "subQuery"."table.sum" AS "table.sum", "subQuery"."table1.col_bool" AS "table1.col_bool", "subQuery".avg AS "avg", -"subQuery"."t.avg" AS "t.avg"`) +"subQuery"."t.avg" AS "t.avg", +"subQuery"."table2.col3" AS "table2.col3", +"subQuery"."table2.col4" AS "table2.col4"`) aliasedSubQueryProjectionList := subQueryProjections.(ProjectionList).As("subAlias") @@ -42,5 +47,7 @@ AVG(table1.col_int) AS "new_alias.avg"`) "subQuery"."table.sum" AS "subAlias.sum", "subQuery"."table1.col_bool" AS "subAlias.col_bool", "subQuery".avg AS "subAlias.avg", -"subQuery"."t.avg" AS "subAlias.avg"`) +"subQuery"."t.avg" AS "subAlias.avg", +"subQuery"."table2.col3" AS "subAlias.col3", +"subQuery"."table2.col4" AS "subAlias.col4"`) }