emit_pointer_for_null_types results in left join scan error
Smithx10 opened this issue · 1 comments
Smithx10 commented
The following results in
2024/10/11 18:20:31 can't scan into dest[8]: failed to scan array element 0: cannot scan NULL into *string
const GetUser = `-- name: GetUser :one
SELECT
u.uuid, u.name, u.email, u.alias, u.description, u.created_at, u.updated_at, u.deleted_at, COALESCE(array_agg(g.name), '{}')::text[] AS memberof
FROM
iam_user u
LEFT JOIN
iam_group_member gm ON u.uuid = gm.user_uuid
LEFT JOIN
iam_group g ON gm.group_uuid = g.uuid
WHERE
(
(u.uuid = $1 AND $1 IS NOT NULL)
OR
(u.name = $2 AND $2 IS NOT NULL)
)
GROUP BY
u.uuid
LIMIT 1
`
type GetUserParams struct {
Uuid *uuid.UUID
Name *string
}
type GetUserRow struct {
Uuid uuid.UUID
Name string
Email string
Alias *string
Description *string
CreatedAt pgtype.Timestamptz
UpdatedAt pgtype.Timestamptz
DeletedAt pgtype.Timestamptz
Memberof []string
}
// generate:
// package: iam.v1
// message: target: user
func (q *Queries) GetUser(ctx context.Context, db DBTX, arg GetUserParams) (GetUserRow, error) {
row := db.QueryRow(ctx, GetUser, arg.Uuid, arg.Name)
var i GetUserRow
err := row.Scan(
&i.Uuid,
&i.Name,
&i.Email,
&i.Alias,
&i.Description,
&i.CreatedAt,
&i.UpdatedAt,
&i.DeletedAt,
&i.Memberof,
)
return i, err
}
-- generate:
-- package: iam.v1
-- message: target: user
-- name: GetUser :one
SELECT
u.*, COALESCE(array_agg(g.name), '{}')::text[] AS memberof
FROM
iam_user u
LEFT JOIN
iam_group_member gm ON u.uuid = gm.user_uuid
LEFT JOIN
iam_group g ON gm.group_uuid = g.uuid
WHERE
(
(u.uuid = sqlc.narg('uuid') AND sqlc.narg('uuid') IS NOT NULL)
OR
(u.name = sqlc.narg('name') AND sqlc.narg('name') IS NOT NULL)
)
GROUP BY
u.uuid
LIMIT 1;
Smithx10 commented
Accidently opened this in pgx instead of sqlc .DOH!