diff --git a/named_args.go b/named_args.go index e6906b3b..3d91367b 100644 --- a/named_args.go +++ b/named_args.go @@ -128,7 +128,7 @@ func namedArgState(l *sqlLexer) stateFn { l.start = l.pos } return nil - } else if !(isLetter(r) || (r >= '0' && r <= '9')) { + } else if !(isLetter(r) || (r >= '0' && r <= '9') || r == '_') { l.pos -= width na := namedArg(l.src[l.start:l.pos]) if _, found := l.nameToOrdinal[na]; !found { diff --git a/named_args_test.go b/named_args_test.go index fea3b897..116e03dc 100644 --- a/named_args_test.go +++ b/named_args_test.go @@ -36,6 +36,12 @@ func TestNamedArgsRewriteQuery(t *testing.T) { expectedSQL: "select $1::int, $2::text", expectedArgs: []any{int32(42), "foo"}, }, + { + sql: "select @Abc::int, @b_4::text", + namedArgs: pgx.NamedArgs{"Abc": int32(42), "b_4": "foo"}, + expectedSQL: "select $1::int, $2::text", + expectedArgs: []any{int32(42), "foo"}, + }, { sql: "at end @", namedArgs: pgx.NamedArgs{"a": int32(42), "b": "foo"},