Skip to content

Commit

Permalink
fix: table alias can not find column
Browse files Browse the repository at this point in the history
  • Loading branch information
nusr committed Mar 26, 2024
1 parent e4e1371 commit 9e2545d
Show file tree
Hide file tree
Showing 20 changed files with 584 additions and 1 deletion.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
__pycache__
.DS_Store
.*.swp
.vscode

# Devenv
.envrc
Expand Down
6 changes: 5 additions & 1 deletion internal/compiler/output_columns.go
Original file line number Diff line number Diff line change
Expand Up @@ -656,7 +656,11 @@ func outputColumnRefs(res *ast.ResTarget, tables []*Table, node *ast.ColumnRef)
if schema != "" && t.Rel.Schema != schema {
continue
}
if alias != "" && t.Rel.Name != alias {
originTableName := ""
if len(t.Columns) > 0 && t.Columns[0] != nil && t.Columns[0].Table != nil {
originTableName = t.Columns[0].Table.Name
}
if alias != "" && t.Rel.Name != alias && originTableName != alias {
continue
}
for _, c := range t.Columns {
Expand Down
31 changes: 31 additions & 0 deletions internal/endtoend/testdata/alias_join/mysql/go/db.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 21 additions & 0 deletions internal/endtoend/testdata/alias_join/mysql/go/models.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

88 changes: 88 additions & 0 deletions internal/endtoend/testdata/alias_join/mysql/go/query.sql.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

19 changes: 19 additions & 0 deletions internal/endtoend/testdata/alias_join/mysql/query.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
-- name: RetrieveAllWithDeprecation :many
select
arn,
name,
aws_rds_databases.engine
from
aws_rds_databases r
natural join aws_rds_databases_engines
;

-- name: RetrieveAllWithDeprecationOther :many
select
arn,
name,
r.engine
from
aws_rds_databases r
natural join aws_rds_databases_engines
;
21 changes: 21 additions & 0 deletions internal/endtoend/testdata/alias_join/mysql/schema.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
CREATE TABLE IF NOT EXISTS aws_rds_databases (
account_id TEXT NOT NULL,
region TEXT NOT NULL,
arn TEXT NOT NULL,
name TEXT NOT NULL,
engine TEXT NOT NULL,
engine_version TEXT NOT NULL,

-- tags is a JSON object
tags TEXT NOT NULL,

UNIQUE (account_id, region, arn)
);

CREATE TABLE IF NOT EXISTS aws_rds_databases_engines (
engine TEXT NOT NULL,
engine_version TEXT NOT NULL,
deprecation TEXT NOT NULL,

UNIQUE (engine, engine_version)
);
12 changes: 12 additions & 0 deletions internal/endtoend/testdata/alias_join/mysql/sqlc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"version": "1",
"packages": [
{
"path": "go",
"engine": "mysql",
"name": "querytest",
"schema": "schema.sql",
"queries": "query.sql"
}
]
}
31 changes: 31 additions & 0 deletions internal/endtoend/testdata/alias_join/postgresql/go/db.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 21 additions & 0 deletions internal/endtoend/testdata/alias_join/postgresql/go/models.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

88 changes: 88 additions & 0 deletions internal/endtoend/testdata/alias_join/postgresql/go/query.sql.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

19 changes: 19 additions & 0 deletions internal/endtoend/testdata/alias_join/postgresql/query.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
-- name: RetrieveAllWithDeprecation :many
select
arn,
name,
aws_rds_databases.engine
from
aws_rds_databases r
natural join aws_rds_databases_engines
;

-- name: RetrieveAllWithDeprecationOther :many
select
arn,
name,
r.engine
from
aws_rds_databases r
natural join aws_rds_databases_engines
;
Loading

0 comments on commit 9e2545d

Please sign in to comment.