I have found the following issues around aliases.
Example 1
Query:
rel.Select("c.id", "c.name").From("contacts c")
Expected:
SELECT "c"."id","c"."name" FROM "contacts" "c";
Actual:
SELECT "c"."id","c"."name" FROM "contacts c";
Example 2
Query:
rel.Select("c.id", "c.name").From("contacts as c")
Expected:
SELECT "c"."id","c"."name" FROM "contacts" as "c";
Actual:
SELECT "contacts" AS "c","contacts" AS "c" FROM "contacts" AS "c";
Playground
Please find more advanced test query with aliases using the playground: https://go.dev/play/p/u9LoFRsSh2h
package main
import (
"fmt""github.com/go-rel/rel""github.com/go-rel/rel/where""github.com/go-rel/sql/builder"
)
funcmain() {
varquery=rel.
Select("a.id", "a.name", "^COUNT(b.id) as books_count", "^AVG(b.score) as books_score").
From("authors a").
JoinWith("LEFT JOIN", "books b", "b.author_id", "a.id").
Where(where.Or(where.Nil("b.archived"), where.Eq("b.archived", false))).
Group("a.id", "a.name").
Sort("a.name")
varsql, params=queryBuilder.Build(query)
fmt.Println("Query: ", sql, params)
}
varqueryBuilder= builder.Query{
BufferFactory: builder.BufferFactory{ArgumentPlaceholder: "?", Quoter: builder.Quote{IDPrefix: "`", IDSuffix: "`", IDSuffixEscapeChar: "`", ValueQuote: "'", ValueQuoteEscapeChar: "'"}},
Filter: builder.Filter{},
}
I have found the following issues around aliases.
Example 1
Query:
rel.Select("c.id", "c.name").From("contacts c")Expected:
SELECT "c"."id","c"."name" FROM "contacts" "c";Actual:
SELECT "c"."id","c"."name" FROM "contacts c";Example 2
Query:
rel.Select("c.id", "c.name").From("contacts as c")Expected:
SELECT "c"."id","c"."name" FROM "contacts" as "c";Actual:
SELECT "contacts" AS "c","contacts" AS "c" FROM "contacts" AS "c";Playground
Please find more advanced test query with aliases using the playground: https://go.dev/play/p/u9LoFRsSh2h