Skip to content

Commit 3c7cb00

Browse files
authored
Merge pull request #1 from timwmillard/fix-for-nick
Fix for nick
2 parents 6389cdc + 0be2ea3 commit 3c7cb00

File tree

3 files changed

+38
-8
lines changed

3 files changed

+38
-8
lines changed

internal/endtoend/testdata/sqlc_embed/postgresql/pgx/go/query.sql.go

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

internal/endtoend/testdata/sqlc_embed/postgresql/pgx/query.sql

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,7 @@ SELECT sqlc.embed(bu) FROM baz.users bu;
2222

2323
-- name: WithCrossSchema :many
2424
SELECT sqlc.embed(users), sqlc.embed(bu) FROM users
25-
INNER JOIN baz.users bu ON users.id = bu.id;
25+
INNER JOIN baz.users bu ON users.id = bu.id;
26+
27+
-- name: WithSpaceBeforeParen :one
28+
SELECT sqlc.embed (users) FROM users;

internal/sql/rewrite/embeds.go

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,23 @@ package rewrite
22

33
import (
44
"fmt"
5+
"strings"
56

67
"github.com/sqlc-dev/sqlc/internal/sql/ast"
78
"github.com/sqlc-dev/sqlc/internal/sql/astutils"
89
)
910

1011
// Embed is an instance of `sqlc.embed(param)`
1112
type Embed struct {
12-
Table *ast.TableName
13-
param string
14-
Node *ast.ColumnRef
13+
Table *ast.TableName
14+
param string
15+
Node *ast.ColumnRef
16+
spaces string
1517
}
1618

1719
// Orig string to replace
1820
func (e Embed) Orig() string {
19-
return fmt.Sprintf("sqlc.embed(%s)", e.param)
21+
return fmt.Sprintf("sqlc.embed%s(%s)", e.spaces, e.param)
2022
}
2123

2224
// EmbedSet is a set of Embed instances
@@ -51,6 +53,15 @@ func Embeds(raw *ast.RawStmt) (*ast.RawStmt, EmbedSet) {
5153

5254
param, _ := flatten(fun.Args)
5355

56+
// Calculate spaces between function name and opening parenthesis
57+
// to handle formatters that insert spaces (e.g., pgFormatter)
58+
funcName := "sqlc.embed"
59+
spaces := ""
60+
if fun.Args != nil && len(fun.Args.Items) > 0 {
61+
leftParen := fun.Args.Items[0].Pos() - 1
62+
spaces = strings.Repeat(" ", leftParen-fun.Location-len(funcName))
63+
}
64+
5465
node := &ast.ColumnRef{
5566
Fields: &ast.List{
5667
Items: []ast.Node{
@@ -61,9 +72,10 @@ func Embeds(raw *ast.RawStmt) (*ast.RawStmt, EmbedSet) {
6172
}
6273

6374
embeds = append(embeds, &Embed{
64-
Table: &ast.TableName{Name: param},
65-
param: param,
66-
Node: node,
75+
Table: &ast.TableName{Name: param},
76+
param: param,
77+
Node: node,
78+
spaces: spaces,
6779
})
6880

6981
cr.Replace(node)

0 commit comments

Comments
 (0)