-
Notifications
You must be signed in to change notification settings - Fork 978
Closed
Labels
bugSomething isn't workingSomething isn't workingtriageNew issues that hasn't been reviewedNew issues that hasn't been reviewed
Description
Version
1.15.0
What happened?
We've had an issue where a query we did a LEFT JOIN in didn't generate Null* fields in the *Row struct, resulting in the converting NULL to %s is unsupported error at runtime.
We found out this was fixed by putting an INNER JOIN that came after that LEFT JOIN before it. Somehow, query TestLeftInner generates a different struct than query TestInnerLeft:
type TestLeftInnerRow struct {
A string
B string
C string
}
type TestInnerLeftRow struct {
A string
B string
C sql.NullString
}
Relevant log output
No response
Database schema
CREATE TABLE a (
id BIGSERIAL PRIMARY KEY,
a TEXT NOT NULL
);
CREATE TABLE b (
id BIGSERIAL PRIMARY KEY,
b TEXT NOT NULL,
a_id BIGINT NOT NULL REFERENCES a (id)
);
CREATE TABLE c (
id BIGSERIAL PRIMARY KEY,
c TEXT NOT NULL,
a_id BIGINT NOT NULL REFERENCES a (id)
);SQL queries
-- name: TestLeftInner :many
SELECT a.a, b.b, c.c
FROM b
LEFT JOIN c ON c.a_id = a.id
INNER JOIN a ON b.a_id = a.id;
-- name: TestInnerLeft :many
SELECT a.a, b.b, c.c
FROM b
INNER JOIN a ON b.a_id = a.id
LEFT JOIN c ON c.a_id = a.id;Configuration
{
"version": "1",
"packages": [
{
"path": "db",
"engine": "postgresql",
"schema": "query.sql",
"queries": "query.sql"
}
]
}Playground URL
https://play.sqlc.dev/p/56e981109a258f404058dd3cfe845c8fd0e0b195c0f3410479a819caea2c72ef
What operating system are you using?
Linux
What database engines are you using?
PostgreSQL, MySQL
What type of code are you generating?
Go
haton14 and cholazzzb
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingtriageNew issues that hasn't been reviewedNew issues that hasn't been reviewed