diff --git a/internal/endtoend/testdata/column_as/mysql/go/models.go b/internal/endtoend/testdata/column_as/mysql/go/models.go index 1799cf3af6..e57c7500db 100644 --- a/internal/endtoend/testdata/column_as/mysql/go/models.go +++ b/internal/endtoend/testdata/column_as/mysql/go/models.go @@ -5,7 +5,3 @@ package querytest import () - -type Foo struct { - Email string -} diff --git a/internal/endtoend/testdata/column_as/mysql/go/query.sql.go b/internal/endtoend/testdata/column_as/mysql/go/query.sql.go index da7bd6bbe9..9c0f512ba6 100644 --- a/internal/endtoend/testdata/column_as/mysql/go/query.sql.go +++ b/internal/endtoend/testdata/column_as/mysql/go/query.sql.go @@ -9,29 +9,34 @@ import ( "context" ) -const columnAs = `-- name: ColumnAs :many -SELECT email AS id FROM foo +const withAs = `-- name: WithAs :one +SELECT 1 AS x, 2 AS y ` -func (q *Queries) ColumnAs(ctx context.Context) ([]string, error) { - rows, err := q.db.QueryContext(ctx, columnAs) - if err != nil { - return nil, err - } - defer rows.Close() - var items []string - for rows.Next() { - var id string - if err := rows.Scan(&id); err != nil { - return nil, err - } - items = append(items, id) - } - if err := rows.Close(); err != nil { - return nil, err - } - if err := rows.Err(); err != nil { - return nil, err - } - return items, nil +type WithAsRow struct { + X int32 + Y int32 +} + +func (q *Queries) WithAs(ctx context.Context) (WithAsRow, error) { + row := q.db.QueryRowContext(ctx, withAs) + var i WithAsRow + err := row.Scan(&i.X, &i.Y) + return i, err +} + +const withoutAs = `-- name: WithoutAs :one +SELECT 1 x, 2 y +` + +type WithoutAsRow struct { + X int32 + Y int32 +} + +func (q *Queries) WithoutAs(ctx context.Context) (WithoutAsRow, error) { + row := q.db.QueryRowContext(ctx, withoutAs) + var i WithoutAsRow + err := row.Scan(&i.X, &i.Y) + return i, err } diff --git a/internal/endtoend/testdata/column_as/mysql/query.sql b/internal/endtoend/testdata/column_as/mysql/query.sql index 4b055cc896..35014456bb 100644 --- a/internal/endtoend/testdata/column_as/mysql/query.sql +++ b/internal/endtoend/testdata/column_as/mysql/query.sql @@ -1,4 +1,5 @@ -CREATE TABLE foo (email text not null); +-- name: WithAs :one +SELECT 1 AS x, 2 AS y; -/* name: ColumnAs :many */ -SELECT email AS id FROM foo; +-- name: WithoutAs :one +SELECT 1 x, 2 y; \ No newline at end of file diff --git a/internal/endtoend/testdata/column_as/postgresql/pgx/v4/go/models.go b/internal/endtoend/testdata/column_as/postgresql/pgx/v4/go/models.go index 1799cf3af6..e57c7500db 100644 --- a/internal/endtoend/testdata/column_as/postgresql/pgx/v4/go/models.go +++ b/internal/endtoend/testdata/column_as/postgresql/pgx/v4/go/models.go @@ -5,7 +5,3 @@ package querytest import () - -type Foo struct { - Email string -} diff --git a/internal/endtoend/testdata/column_as/postgresql/pgx/v4/go/query.sql.go b/internal/endtoend/testdata/column_as/postgresql/pgx/v4/go/query.sql.go index ca2b6e2495..d0a54ab63c 100644 --- a/internal/endtoend/testdata/column_as/postgresql/pgx/v4/go/query.sql.go +++ b/internal/endtoend/testdata/column_as/postgresql/pgx/v4/go/query.sql.go @@ -9,26 +9,34 @@ import ( "context" ) -const columnAs = `-- name: ColumnAs :many -SELECT email AS id FROM foo +const withAs = `-- name: WithAs :one +SELECT 1 AS x, 2 AS y ` -func (q *Queries) ColumnAs(ctx context.Context) ([]string, error) { - rows, err := q.db.Query(ctx, columnAs) - if err != nil { - return nil, err - } - defer rows.Close() - var items []string - for rows.Next() { - var id string - if err := rows.Scan(&id); err != nil { - return nil, err - } - items = append(items, id) - } - if err := rows.Err(); err != nil { - return nil, err - } - return items, nil +type WithAsRow struct { + X int32 + Y int32 +} + +func (q *Queries) WithAs(ctx context.Context) (WithAsRow, error) { + row := q.db.QueryRow(ctx, withAs) + var i WithAsRow + err := row.Scan(&i.X, &i.Y) + return i, err +} + +const withoutAs = `-- name: WithoutAs :one +SELECT 1 x, 2 y +` + +type WithoutAsRow struct { + X int32 + Y int32 +} + +func (q *Queries) WithoutAs(ctx context.Context) (WithoutAsRow, error) { + row := q.db.QueryRow(ctx, withoutAs) + var i WithoutAsRow + err := row.Scan(&i.X, &i.Y) + return i, err } diff --git a/internal/endtoend/testdata/column_as/postgresql/pgx/v4/query.sql b/internal/endtoend/testdata/column_as/postgresql/pgx/v4/query.sql index 339627fd50..35014456bb 100644 --- a/internal/endtoend/testdata/column_as/postgresql/pgx/v4/query.sql +++ b/internal/endtoend/testdata/column_as/postgresql/pgx/v4/query.sql @@ -1,4 +1,5 @@ -CREATE TABLE foo (email text not null); +-- name: WithAs :one +SELECT 1 AS x, 2 AS y; --- name: ColumnAs :many -SELECT email AS id FROM foo; +-- name: WithoutAs :one +SELECT 1 x, 2 y; \ No newline at end of file diff --git a/internal/endtoend/testdata/column_as/postgresql/pgx/v5/go/models.go b/internal/endtoend/testdata/column_as/postgresql/pgx/v5/go/models.go index 1799cf3af6..e57c7500db 100644 --- a/internal/endtoend/testdata/column_as/postgresql/pgx/v5/go/models.go +++ b/internal/endtoend/testdata/column_as/postgresql/pgx/v5/go/models.go @@ -5,7 +5,3 @@ package querytest import () - -type Foo struct { - Email string -} diff --git a/internal/endtoend/testdata/column_as/postgresql/pgx/v5/go/query.sql.go b/internal/endtoend/testdata/column_as/postgresql/pgx/v5/go/query.sql.go index ca2b6e2495..d0a54ab63c 100644 --- a/internal/endtoend/testdata/column_as/postgresql/pgx/v5/go/query.sql.go +++ b/internal/endtoend/testdata/column_as/postgresql/pgx/v5/go/query.sql.go @@ -9,26 +9,34 @@ import ( "context" ) -const columnAs = `-- name: ColumnAs :many -SELECT email AS id FROM foo +const withAs = `-- name: WithAs :one +SELECT 1 AS x, 2 AS y ` -func (q *Queries) ColumnAs(ctx context.Context) ([]string, error) { - rows, err := q.db.Query(ctx, columnAs) - if err != nil { - return nil, err - } - defer rows.Close() - var items []string - for rows.Next() { - var id string - if err := rows.Scan(&id); err != nil { - return nil, err - } - items = append(items, id) - } - if err := rows.Err(); err != nil { - return nil, err - } - return items, nil +type WithAsRow struct { + X int32 + Y int32 +} + +func (q *Queries) WithAs(ctx context.Context) (WithAsRow, error) { + row := q.db.QueryRow(ctx, withAs) + var i WithAsRow + err := row.Scan(&i.X, &i.Y) + return i, err +} + +const withoutAs = `-- name: WithoutAs :one +SELECT 1 x, 2 y +` + +type WithoutAsRow struct { + X int32 + Y int32 +} + +func (q *Queries) WithoutAs(ctx context.Context) (WithoutAsRow, error) { + row := q.db.QueryRow(ctx, withoutAs) + var i WithoutAsRow + err := row.Scan(&i.X, &i.Y) + return i, err } diff --git a/internal/endtoend/testdata/column_as/postgresql/pgx/v5/query.sql b/internal/endtoend/testdata/column_as/postgresql/pgx/v5/query.sql index 339627fd50..35014456bb 100644 --- a/internal/endtoend/testdata/column_as/postgresql/pgx/v5/query.sql +++ b/internal/endtoend/testdata/column_as/postgresql/pgx/v5/query.sql @@ -1,4 +1,5 @@ -CREATE TABLE foo (email text not null); +-- name: WithAs :one +SELECT 1 AS x, 2 AS y; --- name: ColumnAs :many -SELECT email AS id FROM foo; +-- name: WithoutAs :one +SELECT 1 x, 2 y; \ No newline at end of file diff --git a/internal/endtoend/testdata/column_as/postgresql/stdlib/go/models.go b/internal/endtoend/testdata/column_as/postgresql/stdlib/go/models.go index 1799cf3af6..e57c7500db 100644 --- a/internal/endtoend/testdata/column_as/postgresql/stdlib/go/models.go +++ b/internal/endtoend/testdata/column_as/postgresql/stdlib/go/models.go @@ -5,7 +5,3 @@ package querytest import () - -type Foo struct { - Email string -} diff --git a/internal/endtoend/testdata/column_as/postgresql/stdlib/go/query.sql.go b/internal/endtoend/testdata/column_as/postgresql/stdlib/go/query.sql.go index da7bd6bbe9..9c0f512ba6 100644 --- a/internal/endtoend/testdata/column_as/postgresql/stdlib/go/query.sql.go +++ b/internal/endtoend/testdata/column_as/postgresql/stdlib/go/query.sql.go @@ -9,29 +9,34 @@ import ( "context" ) -const columnAs = `-- name: ColumnAs :many -SELECT email AS id FROM foo +const withAs = `-- name: WithAs :one +SELECT 1 AS x, 2 AS y ` -func (q *Queries) ColumnAs(ctx context.Context) ([]string, error) { - rows, err := q.db.QueryContext(ctx, columnAs) - if err != nil { - return nil, err - } - defer rows.Close() - var items []string - for rows.Next() { - var id string - if err := rows.Scan(&id); err != nil { - return nil, err - } - items = append(items, id) - } - if err := rows.Close(); err != nil { - return nil, err - } - if err := rows.Err(); err != nil { - return nil, err - } - return items, nil +type WithAsRow struct { + X int32 + Y int32 +} + +func (q *Queries) WithAs(ctx context.Context) (WithAsRow, error) { + row := q.db.QueryRowContext(ctx, withAs) + var i WithAsRow + err := row.Scan(&i.X, &i.Y) + return i, err +} + +const withoutAs = `-- name: WithoutAs :one +SELECT 1 x, 2 y +` + +type WithoutAsRow struct { + X int32 + Y int32 +} + +func (q *Queries) WithoutAs(ctx context.Context) (WithoutAsRow, error) { + row := q.db.QueryRowContext(ctx, withoutAs) + var i WithoutAsRow + err := row.Scan(&i.X, &i.Y) + return i, err } diff --git a/internal/endtoend/testdata/column_as/postgresql/stdlib/query.sql b/internal/endtoend/testdata/column_as/postgresql/stdlib/query.sql index 339627fd50..35014456bb 100644 --- a/internal/endtoend/testdata/column_as/postgresql/stdlib/query.sql +++ b/internal/endtoend/testdata/column_as/postgresql/stdlib/query.sql @@ -1,4 +1,5 @@ -CREATE TABLE foo (email text not null); +-- name: WithAs :one +SELECT 1 AS x, 2 AS y; --- name: ColumnAs :many -SELECT email AS id FROM foo; +-- name: WithoutAs :one +SELECT 1 x, 2 y; \ No newline at end of file diff --git a/internal/endtoend/testdata/column_as/sqlite/go/models.go b/internal/endtoend/testdata/column_as/sqlite/go/models.go index 1799cf3af6..e57c7500db 100644 --- a/internal/endtoend/testdata/column_as/sqlite/go/models.go +++ b/internal/endtoend/testdata/column_as/sqlite/go/models.go @@ -5,7 +5,3 @@ package querytest import () - -type Foo struct { - Email string -} diff --git a/internal/endtoend/testdata/column_as/sqlite/go/query.sql.go b/internal/endtoend/testdata/column_as/sqlite/go/query.sql.go index da7bd6bbe9..a7afa41d53 100644 --- a/internal/endtoend/testdata/column_as/sqlite/go/query.sql.go +++ b/internal/endtoend/testdata/column_as/sqlite/go/query.sql.go @@ -9,29 +9,34 @@ import ( "context" ) -const columnAs = `-- name: ColumnAs :many -SELECT email AS id FROM foo +const withAs = `-- name: WithAs :one +SELECT 1 AS x, 2 AS y ` -func (q *Queries) ColumnAs(ctx context.Context) ([]string, error) { - rows, err := q.db.QueryContext(ctx, columnAs) - if err != nil { - return nil, err - } - defer rows.Close() - var items []string - for rows.Next() { - var id string - if err := rows.Scan(&id); err != nil { - return nil, err - } - items = append(items, id) - } - if err := rows.Close(); err != nil { - return nil, err - } - if err := rows.Err(); err != nil { - return nil, err - } - return items, nil +type WithAsRow struct { + X int64 + Y int64 +} + +func (q *Queries) WithAs(ctx context.Context) (WithAsRow, error) { + row := q.db.QueryRowContext(ctx, withAs) + var i WithAsRow + err := row.Scan(&i.X, &i.Y) + return i, err +} + +const withoutAs = `-- name: WithoutAs :one +SELECT 1 x, 2 y +` + +type WithoutAsRow struct { + X int64 + Y int64 +} + +func (q *Queries) WithoutAs(ctx context.Context) (WithoutAsRow, error) { + row := q.db.QueryRowContext(ctx, withoutAs) + var i WithoutAsRow + err := row.Scan(&i.X, &i.Y) + return i, err } diff --git a/internal/endtoend/testdata/column_as/sqlite/query.sql b/internal/endtoend/testdata/column_as/sqlite/query.sql index 4b055cc896..c7282d88ef 100644 --- a/internal/endtoend/testdata/column_as/sqlite/query.sql +++ b/internal/endtoend/testdata/column_as/sqlite/query.sql @@ -1,4 +1,5 @@ -CREATE TABLE foo (email text not null); +-- name: WithAs :one +SELECT 1 AS x, 2 AS y; -/* name: ColumnAs :many */ -SELECT email AS id FROM foo; +-- name: WithoutAs :one +SELECT 1 x, 2 y; diff --git a/internal/engine/sqlite/convert.go b/internal/engine/sqlite/convert.go index 9ff35a79d9..7a9bfa6dbd 100644 --- a/internal/engine/sqlite/convert.go +++ b/internal/engine/sqlite/convert.go @@ -496,7 +496,7 @@ func (c *cc) getCols(core *parser.Select_coreContext) []ast.Node { continue } - if col.AS_() != nil { + if col.Column_alias() != nil { name := identifier(col.Column_alias().GetText()) target.Name = &name }