-
Notifications
You must be signed in to change notification settings - Fork 962
Open
Labels
Description
Version
1.10.0
What happened?
-- name: ShouldHaveNull :many
select
(select other_table.name from other_table where this_table.name = other_table.name) as "name"
from this_table;
sqlc will generate an output struct like this:
type ShouldHaveNullRow struct {
Name string
}
But the struct should be:
type ShouldHaveNullRow struct {
Name sql.NullString
}
The above example is with strings but I thought it was relevant to mention that this is happening with a replaced type that's configured similarly to:
- db_type: "pg_catalog.numeric"
nullable: false
go_type:
import: "github.com/shopspring/decimal"
type: "Decimal"
pointer: false
- db_type: "pg_catalog.numeric"
nullable: true
go_type:
import: "github.com/shopspring/decimal"
type: "NullDecimal"
pointer: falseI know the types in this example are all messed up. I'm in a huge rush and don't have time to file the issue with extreme precision at this moment.
You can see in the playground link because the type is non nullable in the table, it incorrectly assumes that the subselect can never return null for that field.
Relevant log output
No response
Database schema
No response
SQL queries
No response
Configuration
No response
Playground URL
https://play.sqlc.dev/p/bb47e4143c86e1b45bc659b147c4072d0464d968332d8598e36f7c2e3e531f18
What operating system are you using?
Linux
What database engines are you using?
PostgreSQL
What type of code are you generating?
Go