-
Notifications
You must be signed in to change notification settings - Fork 962
Description
What do you want to change?
pgFormatter is a tool for formatting SQL for PostgreSQL, effectively go fmt for SQL.
sqlc.arg and sqlc.narg are sqlc-specific tweaks to SQL that is used to support named parameters and nullable parameters.
pgFormatter by default puts spaces before function calls, which converts sqlc.arg(name)::text to sqlc.arg (name)::text, which sqlc then does not parse:
$ sudo apt install -y pgformatter
...
$ git clone https://github.com/kyleconroy/sqlc
...
$ cd sqlc/examples/batch
$ pg_format --inplace postgresql/query.sql
$ git status
On branch main
Your branch is up to date with 'origin/main'.
Changes not staged for commit:
modified: postgresql/query.sql
no changes added to commit
$ git grep sqlc.arg
postgresql/query.sql:WHERE book_id = sqlc.arg (book_id);
$ sqlc generate
# package batch
postgresql/query.sql:18:1: edited query syntax is invalid: syntax error at or near ")"Removing the space between sqlc.arg and (book_id) allows sqlc to parse the SQL:
$ sed -i 's/sqlc\.arg /sqlc.arg/' postgresql/query.sql
$ git grep sqlc.arg
postgresql/query.sql:WHERE book_id = sqlc.arg(book_id);
$ sqlc generate
$ echo $?
0It would be great if sqlc supported spaces between sqlc.arg/sqlc.narg and the following opening parenthesis to make it compatible with pgFormatter in pgFormatter's default configuration.
Note that, as a work-around, users can use the --placeholder option to pg_format to prevent pgFormatter from adding the space:
$ pg_format --inplace --placeholder 'sqlc\.n?arg\(.*?\)' postgresql/query.sqlWhat database engines need to be changed?
PostgreSQL
What programming language backends need to be changed?
No response