Repository navigation
Commit 027ca2c
fix: support PostgreSQL 18 RETURNING OLD/NEW syntax
The pg_query_go parser already parses RETURNING OLD.* and RETURNING
NEW.* correctly, but sqlc's compiler rejected these queries because
the star expansion and column resolution logic tried to match
"old"/"new" against actual table names and found no match.
This caused star expansion to produce empty column lists (resulting in
invalid SQL like "RETURNING ;") and column refs like OLD.bar to fail
with "column does not exist".
The fix recognizes "old" and "new" as special scope/alias values in
three places and lets them match the target table's columns instead
of being filtered out.
Fixes #3600
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>1 parent 4bf2159 commit 027ca2c
8 files changed
Lines changed: 151 additions & 3 deletions
File tree
- internal
- compiler
- endtoend/testdata/returning_old_new/postgresql/stdlib
- go
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
132 | 132 | | |
133 | 133 | | |
134 | 134 | | |
135 | | - | |
| 135 | + | |
| 136 | + | |
136 | 137 | | |
137 | 138 | | |
138 | 139 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| 6 | + | |
6 | 7 | | |
7 | 8 | | |
8 | 9 | | |
| |||
269 | 270 | | |
270 | 271 | | |
271 | 272 | | |
272 | | - | |
| 273 | + | |
| 274 | + | |
273 | 275 | | |
274 | 276 | | |
275 | 277 | | |
| |||
669 | 671 | | |
670 | 672 | | |
671 | 673 | | |
672 | | - | |
| 674 | + | |
| 675 | + | |
673 | 676 | | |
674 | 677 | | |
675 | 678 | | |
| |||
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
0 commit comments