fix ProjectionList{}.As method (issue #364)

This commit is contained in:
Yosyp Buchma 2024-07-20 16:49:49 +02:00
parent f37af464f4
commit fb66fbd31c
2 changed files with 14 additions and 3 deletions

View file

@ -45,6 +45,10 @@ func (pl ProjectionList) As(tableAlias string) ProjectionList {
newProjectionList = append(newProjectionList, p.As(tableAlias)) newProjectionList = append(newProjectionList, p.As(tableAlias))
case ColumnExpression: case ColumnExpression:
newProjectionList = append(newProjectionList, newAlias(p, tableAlias+"."+p.Name())) newProjectionList = append(newProjectionList, newAlias(p, tableAlias+"."+p.Name()))
case ColumnList:
for _, c := range p {
newProjectionList = append(newProjectionList, newAlias(c, tableAlias+"."+c.Name()))
}
case *alias: case *alias:
newAlias := *p newAlias := *p
_, columnName := extractTableAndColumnName(newAlias.alias) _, columnName := extractTableAndColumnName(newAlias.alias)

View file

@ -12,6 +12,7 @@ func TestProjectionAs(t *testing.T) {
AVG(table1ColInt).AS("avg"), AVG(table1ColInt).AS("avg"),
AVG(table1ColInt).AS("t.avg"), AVG(table1ColInt).AS("t.avg"),
}, },
ColumnList{table2Col3, table2Col4},
} }
aliasedProjectionList := projectionList.As("new_alias.*") 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", SUM(table1.col_int) AS "new_alias.sum",
table1.col_bool AS "new_alias.col_bool", 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"`) 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")) 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"."table.sum" AS "table.sum",
"subQuery"."table1.col_bool" AS "table1.col_bool", "subQuery"."table1.col_bool" AS "table1.col_bool",
"subQuery".avg AS "avg", "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") aliasedSubQueryProjectionList := subQueryProjections.(ProjectionList).As("subAlias")
@ -42,5 +47,7 @@ AVG(table1.col_int) AS "new_alias.avg"`)
"subQuery"."table.sum" AS "subAlias.sum", "subQuery"."table.sum" AS "subAlias.sum",
"subQuery"."table1.col_bool" AS "subAlias.col_bool", "subQuery"."table1.col_bool" AS "subAlias.col_bool",
"subQuery".avg AS "subAlias.avg", "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"`)
} }