-
Notifications
You must be signed in to change notification settings - Fork 923
Open
Labels
bugSomething isn't workingSomething isn't workingtriageNew issues that hasn't been reviewedNew issues that hasn't been reviewed
Description
Version
1.24.0
What happened?
When you do a query like select sum(amount) from my_table where user_id = $1
the return of the generated go function will be of type int64
. However, when something such as a user doesn't exist, it returns a single NULL row rather than no rows:
-- name: CountActiveSubscriptions :one
SELECT SUM(quantity)
FROM subscriptions s
WHERE s.creator_id = $1
AND s.active = true
AND s.feature = $2
;

A solution is to wrap with COALESCE(..., 0)::INT8
Relevant log output
No response
Database schema
CREATE TABLE "public"."subscriptions" (
"id" text NOT NULL,
"creator_id" text NOT NULL,
"processor_id" text NOT NULL,
"processor_sub_id" text NOT NULL,
"renew_interval_months" int8 NOT NULL,
"price" int8 NOT NULL,
"quantity" int8 NOT NULL,
"started_at" timestamptz NOT NULL DEFAULT now(),
"renews_at" timestamptz NOT NULL,
"canceled_at" timestamptz,
"ended_at" timestamptz,
"active" bool NOT NULL DEFAULT false,
"created_at" timestamptz NOT NULL DEFAULT now(),
"updated_at" timestamptz NOT NULL DEFAULT now(),
"feature" text NOT NULL DEFAULT 'tts-slot',
"is_trialing" bool NOT NULL DEFAULT false,
PRIMARY KEY ("creator_id","id")
);
### SQL queries
_No response_
### Configuration
```yaml
version: 2
sql:
- engine: "postgresql"
schema: "schema.sql"
queries: "./queries/"
gen:
go:
sql_package: "pgx/v5"
out: "query"
package: "query"
overrides:
# for some reason we sometimes need the catalog prefix and sometimes not although docs say we should always use it
- db_type: "pg_catalog.bool"
go_type: "database/sql.NullBool"
nullable: true
- db_type: "bool"
go_type: "database/sql.NullBool"
nullable: true
- db_type: "int8"
go_type: "database/sql.NullInt64"
nullable: true
- db_type: "pg_catalog.int8"
go_type: "database/sql.NullInt64"
nullable: true
- db_type: "int2"
go_type: "database/sql.NullInt16"
nullable: true
- db_type: "pg_catalog.int2"
go_type: "database/sql.NullInt16"
nullable: true
- db_type: "float4"
go_type: "database/sql.NullFloat64"
nullable: true
- db_type: "float8"
go_type: "database/sql.NullFloat64"
nullable: true
- db_type: "text"
go_type: "database/sql.NullString"
nullable: true
- db_type: "timestamptz"
go_type: "database/sql.NullTime"
nullable: true
- db_type: "timestamptz"
go_type: "time.Time"
nullable: false
- db_type: "timestamptz"
go_type: "database/sql.NullTime"
nullable: false
Playground URL
No response
What operating system are you using?
macOS
What database engines are you using?
PostgreSQL
What type of code are you generating?
Go
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingtriageNew issues that hasn't been reviewedNew issues that hasn't been reviewed