Version
1.23.0
What happened?
A SQL type timestamp with time zone is not recognized as timestamptz when timestamptz is overridden with time.Time.
as mentioned by @andrewmbenton here: #2630 (comment)
Relevant log output
///////////////////////////////////////
// models.go
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.23.0
package db
import (
"time"
"github.com/jackc/pgx/v5/pgtype"
)
type User struct {
ID int32
FirstLogin *time.Time
LastLogin pgtype.Timestamptz // BUG: not recognized, so not overridden as *time.Time
}
///////////////////////////////////////
// query.sql.go
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.23.0
// source: query.sql
package db
import (
"context"
"github.com/jackc/pgx/v5/pgtype"
)
const updateLoginTime = `-- name: UpdateLoginTime :one
UPDATE users
SET first_login = CASE WHEN first_login IS NULL THEN $2 END,
last_login = $2
WHERE id = $1
RETURNING id, first_login, last_login
`
// BUG:
// should read: func (q *Queries) UpdateLoginTime(ctx context.Context, iD int32, lastLogin *time.Time)
func (q *Queries) UpdateLoginTime(ctx context.Context, iD int32, lastLogin pgtype.Timestamptz) (User, error) {
row := q.db.QueryRow(ctx, updateLoginTime, iD, lastLogin)
var i User
err := row.Scan(&i.ID, &i.FirstLogin, &i.LastLogin)
return i, err
}
Database schema
CREATE TABLE IF NOT EXISTS users
(
id SERIAL PRIMARY KEY,
first_login timestamptz,
last_login timestamp with time zone
);
SQL queries
-- name: UpdateLoginTime :one
UPDATE users
SET first_login = CASE WHEN first_login IS NULL THEN $2 END,
last_login = $2
WHERE id = $1
RETURNING *;
Configuration
version: "2"
sql:
- engine: "postgresql"
queries: "."
schema: "."
gen:
go:
sql_package: "pgx/v5"
package: "db"
out: "db"
emit_pointers_for_null_types: true
query_parameter_limit: 5
overrides:
- db_type: "timestamptz"
go_type:
import: "time"
type: "Time"
pointer: true
nullable: true
# Test...
- db_type: "timestamp with time zone"
go_type:
import: "time"
type: "Time"
pointer: true
nullable: true
Playground URL
https://play.sqlc.dev/p/d1b3dd0e8105ed7efdbc421c5cf2c6e0896d6ed57c7a17b4eec27b0ce28ca1b1
What operating system are you using?
macOS
What database engines are you using?
PostgreSQL
What type of code are you generating?
Go
Reactions are currently unavailable
Version
1.23.0
What happened?
A SQL type timestamp with time zone is not recognized as timestamptz when timestamptz is overridden with time.Time.
as mentioned by @andrewmbenton here: #2630 (comment)
Relevant log output
Database schema
SQL queries
Configuration
Playground URL
https://play.sqlc.dev/p/d1b3dd0e8105ed7efdbc421c5cf2c6e0896d6ed57c7a17b4eec27b0ce28ca1b1
What operating system are you using?
macOS
What database engines are you using?
PostgreSQL
What type of code are you generating?
Go