-
Notifications
You must be signed in to change notification settings - Fork 987
Open
Labels
Description
Version
1.30.0
What happened?
When sqlc generates Golang code for a MySQL query with DATEDIFF() comparison in it:
SELECT id
FROM wishlist_item
WHERE DATEDIFF(date_from, NOW()) >= sqlc.arg('min_days_to_date_from') AND
DATEDIFF(date_from, NOW()) <= sqlc.arg('max_days_to_date_from') AND
updated_at < sqlc.arg('updated_by');resulting datetype for arguments min_days_to_date_from/max_days_to_date_from is time.Time, even though DATEDIFF itself outputs an integer
const getUpdateableWishlistItemIDs = `-- name: GetUpdateableWishlistItemIDs :many
SELECT id
FROM wishlist_item
WHERE DATEDIFF(date_from, NOW()) >= ? AND
DATEDIFF(date_from, NOW()) <= ? AND
updated_at < ?
`
type GetUpdateableWishlistItemIDsParams struct {
MinDaysToDateFrom time.Time
MaxDaysToDateFrom time.Time
UpdatedBy sql.NullTime
}
func (q *Queries) GetUpdateableWishlistItemIDs(ctx context.Context, arg GetUpdateableWishlistItemIDsParams) ([]uint32, error) {
rows, err := q.db.QueryContext(ctx, getUpdateableWishlistItemIDs, arg.MinDaysToDateFrom, arg.MaxDaysToDateFrom, arg.UpdatedBy)
if err != nil {
return nil, err
}
defer rows.Close()
var items []uint32
for rows.Next() {
var id uint32
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
}The generated type of MinDaysToDateFrom should be int32, not time.Time
Relevant log output
Database schema
CREATE TABLE `wishlist_item` (
`id` int unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
.........unrelated fields
`date_from` date NOT NULL,
.........unrelated fields
`updated_at` timestamp NULL DEFAULT NULL,
.......unrelated fields
;SQL queries
SELECT id
FROM wishlist_item
WHERE DATEDIFF(date_from, NOW()) >= sqlc.arg('min_days_to_date_from') AND
DATEDIFF(date_from, NOW()) <= sqlc.arg('max_days_to_date_from') AND
updated_at < sqlc.arg('updated_by');Configuration
version: "2"
sql:
- engine: mysql
schema: migrations
queries: queries
gen:
go:
package: models
sql_package: "database/sql"
sql_driver: "github.com/go-sql-driver/mysql"
out: modelsPlayground URL
No response
What operating system are you using?
macOS
What database engines are you using?
MySQL
What type of code are you generating?
Go