Skip to content

Commit 7761663

Browse files
authored
compiler: Find columns in default schemas (#1003)
1 parent 6a4a825 commit 7761663

File tree

11 files changed

+176
-5
lines changed

11 files changed

+176
-5
lines changed

internal/compiler/resolve.go

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,17 @@ func resolveCatalogRefs(c *catalog.Catalog, rvs []*ast.RangeVar, args []paramRef
3737
if defaultTable == nil {
3838
defaultTable = table.Rel
3939
}
40-
if _, exists := typeMap[table.Rel.Schema]; !exists {
41-
typeMap[table.Rel.Schema] = map[string]map[string]*catalog.Column{}
40+
schema := table.Rel.Schema
41+
if schema == "" {
42+
schema = c.DefaultSchema
4243
}
43-
typeMap[table.Rel.Schema][table.Rel.Name] = map[string]*catalog.Column{}
44+
if _, exists := typeMap[schema]; !exists {
45+
typeMap[schema] = map[string]map[string]*catalog.Column{}
46+
}
47+
typeMap[schema][table.Rel.Name] = map[string]*catalog.Column{}
4448
for _, c := range table.Columns {
4549
cc := c
46-
typeMap[table.Rel.Schema][table.Rel.Name][c.Name] = cc
50+
typeMap[schema][table.Rel.Name][c.Name] = cc
4751
}
4852
return nil
4953
}
@@ -146,7 +150,11 @@ func resolveCatalogRefs(c *catalog.Catalog, rvs []*ast.RangeVar, args []paramRef
146150

147151
var found int
148152
for _, table := range search {
149-
if c, ok := typeMap[table.Schema][table.Name][key]; ok {
153+
schema := table.Schema
154+
if schema == "" {
155+
schema = c.DefaultSchema
156+
}
157+
if c, ok := typeMap[schema][table.Name][key]; ok {
150158
found += 1
151159
if ref.name != "" {
152160
key = ref.name
@@ -308,6 +316,9 @@ func resolveCatalogRefs(c *catalog.Catalog, rvs []*ast.RangeVar, args []paramRef
308316
schema = fqn.Schema
309317
rel = fqn.Name
310318
}
319+
if schema == "" {
320+
schema = c.DefaultSchema
321+
}
311322
if c, ok := typeMap[schema][rel][key]; ok {
312323
a = append(a, Parameter{
313324
Number: ref.ref.Number,

internal/endtoend/testdata/insert_values_public/mysql/go/db.go

Lines changed: 29 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/endtoend/testdata/insert_values_public/mysql/go/models.go

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/endtoend/testdata/insert_values_public/mysql/go/query.sql.go

Lines changed: 23 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
CREATE TABLE foo (a text, b integer);
2+
3+
/* name: InsertValues :exec */
4+
INSERT INTO public.foo (a, b) VALUES (?, ?);
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"version": "1",
3+
"packages": [
4+
{
5+
"engine": "mysql",
6+
"path": "go",
7+
"name": "querytest",
8+
"schema": "query.sql",
9+
"queries": "query.sql"
10+
}
11+
]
12+
}

internal/endtoend/testdata/insert_values_public/postgresql/go/db.go

Lines changed: 29 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/endtoend/testdata/insert_values_public/postgresql/go/models.go

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/endtoend/testdata/insert_values_public/postgresql/go/query.sql.go

Lines changed: 23 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
CREATE TABLE foo (a text, b integer);
2+
3+
-- name: InsertValues :exec
4+
INSERT INTO public.foo (a, b) VALUES ($1, $2);
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"version": "1",
3+
"packages": [
4+
{
5+
"engine": "postgresql",
6+
"path": "go",
7+
"name": "querytest",
8+
"schema": "query.sql",
9+
"queries": "query.sql"
10+
}
11+
]
12+
}

0 commit comments

Comments
 (0)