Skip to content

Commit 37af47f

Browse files
authored
internal/dinosql: Check parameter style before ref (#488)
A invalid query with mixed parameter styles ($1, sqlc.arg, @) and missing parameter refs ($1, $3, but no $2) should error with a mixed parameter style error.
1 parent d51baf2 commit 37af47f

File tree

2 files changed

+3
-3
lines changed

2 files changed

+3
-3
lines changed

internal/dinosql/parser.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -398,10 +398,10 @@ func validateCmd(n nodes.Node, name, cmd string) error {
398398
var errUnsupportedStatementType = errors.New("parseQuery: unsupported statement type")
399399

400400
func parseQuery(c core.Catalog, stmt nodes.Node, source string, rewriteParameters bool) (*Query, error) {
401-
if err := validateParamRef(stmt); err != nil {
401+
if err := validateParamStyle(stmt); err != nil {
402402
return nil, err
403403
}
404-
if err := validateParamStyle(stmt); err != nil {
404+
if err := validateParamRef(stmt); err != nil {
405405
return nil, err
406406
}
407407
raw, ok := stmt.(nodes.RawStmt)

internal/endtoend/testdata/invalid_params/query.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ SELECT foo FROM bar WHERE baz = $1 AND baz = $3;
1010
SELECT foo FROM bar;
1111

1212
-- name: Named :many
13-
SELECT id FROM bar WHERE id = $1 AND sqlc.arg(named) = true;
13+
SELECT id FROM bar WHERE id = $1 AND sqlc.arg(named) = true AND id = $5;
1414

1515
-- stderr
1616
-- # package querytest

0 commit comments

Comments
 (0)