Title: When upgrade to 1.11.0, nullable fields not correct in left join · Issue #1349 · sqlc-dev/sqlc · GitHub
Open Graph Title: When upgrade to 1.11.0, nullable fields not correct in left join · Issue #1349 · sqlc-dev/sqlc
X Title: When upgrade to 1.11.0, nullable fields not correct in left join · Issue #1349 · sqlc-dev/sqlc
Description: Version 1.11.0 What happened? When work with v1.10, left join is run correctly. When the code was generated with v1.10, the left join struct was as follows : type GetItemByUniqueIdentifierRow struct { ID int64 UniqueIdentifier string Tit...
Open Graph Description: Version 1.11.0 What happened? When work with v1.10, left join is run correctly. When the code was generated with v1.10, the left join struct was as follows : type GetItemByUniqueIdentifierRow struc...
X Description: Version 1.11.0 What happened? When work with v1.10, left join is run correctly. When the code was generated with v1.10, the left join struct was as follows : type GetItemByUniqueIdentifierRow struc...
Opengraph URL: https://github.com/sqlc-dev/sqlc/issues/1349
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"When upgrade to 1.11.0, nullable fields not correct in left join","articleBody":"### Version\r\n\r\n1.11.0\r\n\r\n### What happened?\r\n\r\nWhen work with v1.10, left join is run correctly. \r\n\r\nWhen the code was generated with **v1.10,** the left join struct was as follows :\r\n\r\n```\r\ntype GetItemByUniqueIdentifierRow struct {\r\n\tID int64\r\n\tUniqueIdentifier string\r\n\tTitle string\r\n\tContent string\r\n\tMetadataID sql.NullInt64\r\n\tMetadataRate sql.NullInt64\r\n\tID_2 sql.NullInt64\r\n\tRate sql.NullInt64\r\n\tName sql.NullString\r\n\tItemID sql.NullInt64\r\n}\r\n```\r\n\r\nWhen the code was generated with **v1.11** \r\n\r\n```\r\ntype GetItemByUniqueIdentifierRow struct {\r\n\tID int64\r\n\tUniqueIdentifier string\r\n\tTitle string\r\n\tContent string\r\n\tMetadataID sql.NullInt64\r\n\tMetadataRate sql.NullInt64\r\n\tID_2 int64\r\n\tRate int64\r\n\tName string\r\n\tItemID int64\r\n}\r\n```\r\nYou can see that the joined table fields (Rate, Name, ItemID..), should have Null* types but when used with v1.11 this fields seem like non-nullable(int64 instead of NullInt64).\r\n\r\nIn fact, when doing left join, if we use alias, it detects nullable fields correctly, if we do not use it and we say that it takes all columns like c.* without using alias, it shows the fields of the join table incorrectly.\r\n\r\nIf we look at the join query, the alias was used for the id and rate fields of the joined table, and these fields became nullable when the code was generated. It is true. \r\nWhen we use c.* to get all columns of the joined table, all fields are generated as non-nullable. There seems to be a bug here about using c.*\r\n\r\n**SQL tables and go models are below.**\r\n\r\n\r\n### Relevant log output\r\n\r\n_No response_\r\n\r\n### Database schema\r\n\r\n```sql\r\nCREATE TABLE item_metadata (\r\n id bigserial PRIMARY KEY,\r\n name TEXT NOT NULL DEFAULT '',\r\n rate BIGINT NOT NULL,\r\n item_id BIGINT REFERENCES items (id) ON DELETE CASCADE\r\n);\r\n\r\nCREATE TABLE item (\r\n id bigserial PRIMARY KEY,\r\n title TEXT NOT NULL DEFAULT '',\r\n content TEXT NOT NULL DEFAULT '',\r\n unique_identifier TEXT NOT NULL,\r\n UNIQUE(unique_identifier)\r\n);\r\n\r\n\r\n-- name: GetItemByUniqueIdentifier :one\r\nSELECT t.*,\r\n c.id as metadata_id,\r\n c.rate as metada_rate,\r\n c.*\r\nFROM item t\r\n LEFT JOIN item_metadata c ON c.item_id = t.id\r\nWHERE unique_identifier = $1;\r\n\r\n\r\nGo models : \r\n\r\ntype item struct {\r\n\tUniqueIdentifier string\r\n\tTitle string\r\n\tContent string\r\n\r\n\tItemMetadata *metadata.ItemMetadata\r\n\r\n}\r\n\r\ntype ItemMetadata struct {\r\n\tName string \r\n Rate int\r\n\r\n}\r\n```\r\n\r\n\r\n### SQL queries\r\n\r\n```sql\r\n-- name: GetItemByUniqueIdentifier :one\r\nSELECT t.*,\r\n c.id as metadata_id,\r\n c.rate as metadata_rate,\r\n c.*\r\nFROM item t\r\n LEFT JOIN item_metadata c ON c.item_id = t.id\r\nWHERE unique_identifier = $1;\r\n```\r\n\r\n\r\n### Configuration\r\n\r\n_No response_\r\n\r\n### Playground URL\r\n\r\n_No response_\r\n\r\n### What operating system are you using?\r\n\r\nmacOS\r\n\r\n### What database engines are you using?\r\n\r\nPostgreSQL\r\n\r\n### What type of code are you generating?\r\n\r\nGo","author":{"url":"https://github.com/damla-unal","@type":"Person","name":"damla-unal"},"datePublished":"2021-12-20T16:11:28.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":2},"url":"https://github.com/1349/sqlc/issues/1349"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:91fe0251-5337-38d6-c7a5-5d87aaf652a3 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | E448:1C6E1F:414E58:562395:6A52D1EC |
| html-safe-nonce | 20174820938ea1738631d909cdd6af49dc0096476fb75d7a31a077774037fa38 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFNDQ4OjFDNkUxRjo0MTRFNTg6NTYyMzk1OjZBNTJEMUVDIiwidmlzaXRvcl9pZCI6IjE0OTU2NzI4NTQ1Mjc3OTE1OTYiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 8c7f7c76a1992506acd60d79744c3a6bf1922b7183770317ee319682928b51be |
| hovercard-subject-tag | issue:1084963796 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/sqlc-dev/sqlc/1349/issue_layout |
| twitter:image | https://opengraph.githubassets.com/9b19e2aa9ced9c3922a6bd5bc13f31b4faaa3e36434617002955a0290cc58f30/sqlc-dev/sqlc/issues/1349 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/9b19e2aa9ced9c3922a6bd5bc13f31b4faaa3e36434617002955a0290cc58f30/sqlc-dev/sqlc/issues/1349 |
| og:image:alt | Version 1.11.0 What happened? When work with v1.10, left join is run correctly. When the code was generated with v1.10, the left join struct was as follows : type GetItemByUniqueIdentifierRow struc... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | damla-unal |
| hostname | github.com |
| expected-hostname | github.com |
| None | b9a586c06a05a7a86fc7e3f4dbd03e42f6869085879aa184aa6369456dbd50fb |
| turbo-cache-control | no-preview |
| go-import | github.com/sqlc-dev/sqlc git https://github.com/sqlc-dev/sqlc.git |
| octolytics-dimension-user_id | 136738596 |
| octolytics-dimension-user_login | sqlc-dev |
| octolytics-dimension-repository_id | 193160679 |
| octolytics-dimension-repository_nwo | sqlc-dev/sqlc |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 193160679 |
| octolytics-dimension-repository_network_root_nwo | sqlc-dev/sqlc |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 07a982c1d40157c619b364352b704c3ce66bb332 |
| ui-target | canary-2 |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width