Releases: darold/pgFormatter
Version 5.5
February 04 2023 - v5.5
This maintenance release fixes some issues reported by users since the last
month and some improvements.
Improvements:
- Prevent newline in function supporting the FROM keyword like substring().
- Add multi-line formatting on TRUNCATE with a table list. Thanks to GabenGar
for the feature request.
Here is the complete list of changes and acknowledgments:
- Fix not respected --no-space-function behavior with SELECT of function.
Thanks to fenuks for the report. - Update regression test result for fix on double quoted alias name. Thanks
to Christoph Berg for the report. - Fix potential exception on uninitialized variable. Thanks to Nate Smith
for the report.
Version 5.4
January 11 2023 - v5.4
This maintenance release fixes issues reported by users since the last five
months with some improvements and new features.
New options and features:
- Add option --no-space-function, when used pgFormatter removes the
space character between a function call and the open parenthesis that
follow. By default pgFormatter adds a space character, for example:
DROP FUNCTION IF EXISTS app_public.hello (a text);
When this option is used the resulting query is formatted as follow:
DROP FUNCTION IF EXISTS app_public.hello(a text);
Available in CGI mode as a checkbox. - Add command line option --extra-keyword to apply keywords formatting to
a list of additional keywords defined in a file (one keyword per line).
You can also pass a special value 'redshift' instead of a path to a file
to use the keywords defined internally in pgFormatter for this database.
This was historically possible through the -r | --redshift option that
is now obsolete and will be removed in the future. Thanks to Thom Brown
for the feature request.
Here is the complete list of changes and acknowledgments:
- Add option --no-space-function. Thanks to Aaron Merryman for the feature request.
- Fix particular case of alias with double quote. Thanks to Carl Jackson for the report.
- Fix some lines involuntary turned to comment. Thanks to Daniel Kukula for the report.
- Fix CREATE DOMAIN formatting. Thanks to Daniel Kukula for the report.
- Add formatting of code from SQL function.
- Fix wrong indentation in ORDER BY clause. Thanks to Thom Brown for the report.
- Fix CREATE TRIGGER formatting when there is a OR REPLACE clause. Thanks to hexcowboy for the report.
- Fix documentation by using variable based installation instruction. Thanks to Lav Patel for the patch.
- Add the possibility to format in place multiple files. Thanks to Benjamin Yolken for the report.
Version 5.3
August 07 2022 - v5.3
This maintenance release fixes issues reported by users since the last six
months. Here is the complete list of changes and acknowledgments:
- Remove some useless parenthesis in DML statement. Thanks to Marc Cousin for the request.
- Fix -o | --output that was always forced to stdout. Thanks to Linekio and Joraao Bernardo for the report.
- Fix unsupported json operator ?|. Thanks to Jack Thibaut for the report.
- Fix formatting of create table with option and tablespace. Thanks to jonyscathe for the report.
- Fix wrong wrapping in create table when --nocomment was used. Thanks to Alexander Haase for the report.
- Fix nested CREATE SCHEMA formatting. Thanks to GabenGar for the report.
- Fix invalid multi-line string constant formatting. Thanks to zaneduffield for the report.
- Force multiple INSERT values to be on separate lines. Previous behavior was to keep all values on the same line. Thanks to Damien-B for the report.
- Add missing ELSIF keyword. Thanks to ideev for the report.
- Fix bad indentation when INDEX is present in target list. Thanks to Marc Cousin for the report.
Version 5.2
December 03 2021 - v5.2
This maintenance release fixes issues reported by users since the last three months with some improvements and new features.
New options and features:
- Allow to pass multiple files when using --inplace. Thanks to mieszko4 for the patch.
- Add a button to copy formatted text to clipboard in the CGI interface. Thanks to Yan Sheng for the feature request.
Here is the complete list of changes and acknowledgments:
- Fix bad formatting of materialized view ddl with parameters. Thanks to Wilson Lin for the report.
- Fix/unicode and --inplace argument causing an error. Thanks to mieszko4 for the patch.
- Fix anonymizing disabled in last version. Thanks to Nikolas Poniros for the report.
- Correctly format casts to quoted types. Thanks to Adam Vartanian for the patch.
Version 5.1
September 28 2021 - v5.1
This maintenance release fixes issues reported by users since the last six months with some improvements and new features.
New options and features:
- Alternate format type (option -t) now keep enumeration in GROUP BY clause on a single line.
- Add new option -k or --keep-newline to preserve empty line in plpgsql code.
- Look for .pg_format configuration file in local directory first then in the $HOME directory.
- Force UTF8 encoding for all I/O to solve unicode character in object name parsing issues.
Here is the complete list of changes and acknowledgments:
- Fix typo in documentation with use of echo instead of cat. Thanks to
Сергей Бурладян for the patch.
- Fix space added after negative sign of numbers. Thanks to Carlos Hanson
for the report.
- Formatting words with CREATE prefix or DROP suffix raises a deadly
warning. Thanks to Martin Jan Kohler for the patch.
- Fix indentation in CASE clause. Thanks to jonyscathe for the report.
- Force UTF8 encoding for all I/O to solve unicode character in object name
parsing issues. Thanks to Monson Shao for the report.
- Fix formatting of the BETWEEN clause. Thanks to Monson Shao for the report.
- Look for .pg_format configuration file in local directory first then in the
$HOME directory. Thanks to Peter Lithammer for the suggestion.
- Add option -k or --keep-newline to preserve empty line in plpgsql code.
This doesn't work with comments for the moment. Thanks to Andrey Larionov
for the feature request.
- Fix "Unmatched ) in regex;" error. Thanks to Hew Wolff for the report.
- Fix an other use of uninitialized value in substitution iterator. Thanks to
Christophe Courtois for the report.
- Fix false positives for TYPE keyword and fix %TYPE and %ROWTYPE. Thanks to
Hew Wolff for the report
- Option -t (alternate format type) now keep enumeration in GROUP BY clause
on a single line. Thanks to MeadMaker pfassina for the feature request.
- Remove temporary debug code
- Fix indentation of FROM and WHERE in subquery. Thanks to Hew Wolff and
Sergey Shepelev for the report.
- Fix indentation before RETURNS when it is a RETURNS NULL ON clause.
- Fix seadly warning: Filehandle STDIN reopened as $[...] only for output.
Thanks to Andrew Dunstan for the report.
- Fix formatting of multi-line comment. Thanks to Jacob Beard for the report.
- Fix use of uninitialized value in pattern match. Thanks to arlt for the
report.
Version 5.0
February 11 2021 - v5.0
This major release fixes issues reported by users since the last six months with some improvements and new features.
New options and features:
- Add new option -M | --multiline to enable multi-line search with placeholder regexp specified at command line with -p or --placeholder.
- Fix improper handling of constants between quotes in all kind of queries and especially in function body. They were sometime corrupted by extra space before of after single quotes or some words was identified as keywords and turned upper case.
- Add keywords ALWAYS, DISABLE, ENABLE, LEVEL and STORED.
- Improve formatting of CREATE POLICY which doesn't the need anymore that alternate formatting (-t) be enabled.
- More fix of false positive keywords detection following their place.
- Add REGCLASS, REGCONFIG, REGDICTIONARY, REGNAMESPACE, REGOPER, REGOPERATOR, REGPROC, REGPROCEDURE, REGROLE, REGTYPE, to list of data types.
Here is the complete list of changes and acknowledgments:
- Fix false positive detection of keyword following their place. Thanks to allprecisely for the report.
- Add quick regression test for constant handling.
- Fix formatting for RAISE, CAST and EXCEPTION.
- Fix case of NEW/OLD in triggers code
- Fix improper handling of columns and tables aliases between double quotes.
- Don't assume HOME variable exists in Makefile.PL. Thanks to Samyak Bakliwal for the patch.
- Add new option -M | --multiline to enable multi-line search with placeholder regexp specified at command line with -p or --placeholder. Thanks to Taro Sato for the feature request.
- Fix generated columns formatting. Thanks to Oliver Ni for the report.
- Include regression test to not wrap URL hint and update the documentation.
- Adding example for regular expression preserving the URL and to prevent it from being wrapped. Thanks to Clement Aubert for the patch.
- Improve RLS policy formatting when alternate format is enabled. Thanks to madflow for the report.
- Fix formatting of numbers with signed exponents. Thanks to Jakob Egger for the report.
- Fix HTML footer in CGI mode.
- Fix formatting of CREATE TABLE using a CTE. Thanks to prichardson211 for the report.
- Replace deprecated TG_RELNAME with TG_TABLE_NAME. Thanks to Andreas Karlsson fot the patch.
- Fix regression in COPY formatting. Thanks to Paul Melnikow for the report.
- Fix CTE formatting with NOT MATERIALIZED clause. Thanks to Sergey Shepelev for the report.
- Update regression tests with the addition of oid types and fix for C functions formatting.
- Fix error format string for extra-function and 2 typos. Thanks to Sven Klemm for the patch.
- Fix formatting for C functions with obj_file and link_symbol. Thanks to Sven Klemm for the patch.
- Fix typo in CGI text. Thanks to Justin Hawkins for the report.
- Add oid types to list of data types. Thanks to Sven Klemm for the patch.
Version 4.4
August 31 2020 - v4.4
This is a maintenance release to fix issues reported by users since
the last six months. As usual there is also some improvements and
new features.
New options and features:
* Add command line option --extra-function to apply formatting to
a user defined list of function like with PG internal functions.
* Add --no-rcfile / -X option to avoid loading user configuration
file. Thanks to Norbert Buchmueller for the patch.
* Add -i | --inplace command line option to override an input file
with the resulting formatted content.
* Add new command line option -L, --no-extra-line. By default an
empty line is added after the end of a statement when it is
terminated by a semi-colon except in a plpgsql code block.
If the extra empty line at end of the output is useless, you can
remove it by adding this option to the command line.
* Add option -C, --wrap-comment to enable comment wrapping. Used
to wrap comments at the length defined by -w or --wrap-limit
whatever is the part of the comment. Indent is not included in
the character count.
* Add Dockerfile that builds image with pgformatter.
Here is the complete list of changes and acknowledgments:
- Fix unwanted extra new line after comment.
- Add Dockerfile that builds image with pgformatter. The tool can
then be run as
cat file.sql | docker run --rm -a stdin -a stdout -i darold.net/pgformatter -
where darold.net/pgformatter is name of the image build using
docker build -t darold.net/pgformatter .
Thanks to Manish Tomar for the patch.
- Add new option --extra-function and associated configuration
directive extra-function. pgFormatter applies some formatting to
the PostgreSQL internal functions call but it can not detect user
defined function. It is possible to defined a list of functions
into a file (one name per line) and give it to pgFormatter through
the --extra-function option that will be formatter as PostgreSQL
internal functions. Thanks to Sven Klemm for the feature request.
- Fix unwanted space inserting inside triple single quotes. Thanks
to Caleb Cushing for the report.
- Add -i | --inplace command line option to override an input file
with the resulting formatted content. Thanks to Francilio Araujo
for the feature request.
- Fix an other uncaught exception and formatting issue to insert
statement. Thanks to allprecisely for the report.
- Add new command line option -L, --no-extra-line. By default an
empty line is always added after the end of a statement when it
is terminated by a ; except in a plpgsql code block. If the extra
empty line at end of the output is useless, you can remove it by
using this option. Thanks to Wael Nasreddine for the feature
request and David Johnston for the patch review.
- Fix new uncaught exception with non semi-colon terminated query.
Thanks to allprecisely for the report.
- Order options list in alphabetic order for usage output.
- Use env PG_FORMAT to check that pg_format compiles ok and improve
regression test. Thank to Norbert Buchmueller for the patches.
- Do not read configuration file if the filename is empty. Thank to
Norbert Buchmueller for the patch.
- Add support of pg_trgm operators. Thanks to Carlo Hyvonen for the
report.
- Fix some regexp with or condition.
- Add word boundaries when AS statements require a newline. Thanks
to Vikrum Nijjar for the patch.
- Add possible use of configuration file. Thanks to Duncan Holm for
the feature request.
- Fix case of time zone data type.
- Add new regression test about data type and function case.
- Fix upper case of column name with the same name as a data type.
Thanks to Jacques Dafflon for the report.
- Fix upper case of double precision data type.
- Fix upper case when object name is also a built-in function.
Thanks to Jacques Dafflon for the report.
- Fix special handling of MySQL code delimiter // or $$. Thanks to
Clement Aubert for the test cases.
- Fix integrity of comments broken with last commits. Thanks to mjfs
for the report and tests cases.
- Fix special case of DELIMITER followed by a ;. Thanks to Clement
Aubert for the report.
- Fix newline after a comment inside a function parameters. Thanks
to mfs for the report.
- Complete previous patch when --comma-start is used.
- Change position of a comma when it appears after a comment if
option -b | --comma-start is not use.
- Fix error related to modification of non-creatable array value.
Thanks to John Walsh and Mark Fletcher for the report.
- Add hints on using stdin as input to pg_format. Thanks to Vignesh
Raja for the suggestion.
- Fix several incorrect case conversion for data types. Thanks to
Jacques Dafflon for the report.
- Fix wrong case of function detection in a CREATE TABLE statement
when the name of the table is also the name of a function. Thanks
to Jacques Dafflon for the report.
- Fix uncaught exception. Thanks to George MacKerron for the report.
- Fix connection limit formatting in CREATE ROLE. Thanks to Nathan
Cahill for the report.
- Fix unwanted code formatting in format() function. Thanks to Ervin
Weber for the report.
- Fix indentation in identity column GENENERATED BY clause. Thanks
to Peter Boromissza for the report.
Version 4.3
Marsh 29 2020 - v4.3
This is a maintenance release to fix issues reported by users since
the last two months. As usual there is also some improvements and
more formatting supported.
New option:
* Add command line option -r | --redshift to add RedShift specific
keywords to the list of SQL keywords to format.
* Add command line option -N | --numbering to include statement
numbering. All formatted statements or block of code are prefixed
by a line with comment: /* Statement # n */.
Also available in CGI mode as a select box option.
Backward compatibility:
* Keep simple quote as function code delimiter, previous behavior
was to replace them by $$ and replace all double simple quote in
the code by a single one. Now they are kept unchanged.
* Restore formatting of --comma-break option with INSERT statement, a
regression was introduced in version 4.2.
Here is the complete list of changes and acknowledgments:
- Better indentation of sub queries inside a "WITH" clause. Thanks
to Cyril Chaboisseau for the report.
- Fix WHERE tuple indentation. Thanks to Sergey Shepelev for the
report.
- Add more information to the -r | --redshift option
- Document --redshift option. Thanks to Elliott Shugerman for the
patch.
- Fix indentation of join clause in CTE. Thanks to ejabu for the
report.
- Format (NEW|OLD).colname keyword in trigger function.
- Fix formatting of scripts using psql command. Thanks to phiresky
for the report.
- Fix several cases of string literal corrupted by the formatting
- Fix formatting of B'...' string.
- Fix case where column aliases was lost. Thanks to YunheXu for
the report.
- Add AWS RedShift keywords to formatting.
- Fix unwanted formatting of multi-line text.
- Prevent newline between parameters of custom functions.
- Remove newline with an ORDER BY and USING clause in a function.
- Prevent newline in parameters of PREPARE and EXECUTE statement.
- Remove newline in columns list in ANALYZE statement.
- Add several builtin functions to the list of PostgreSQL functions.
- Prevent newline in FOREIGN SERVER OPTIONS list.
- Remove newline inside IN (...) values
- Fix data type formatting after IN, OUT and INOUT in functions
parameters. Thanks to prichardson211 for the report.
- Add new command line option to add statement numbering. Thanks to
Gajus Kuizinas for the feature request.
- Fix wrong indentation of WHERE clause after a JOIN in a CTE.
Thanks to Ejabu for the report.
- Update regression test for --comma-break
- Fix a case sensitive condition and update regression tests.
- Restore formatting of --comma-break option with INSERT statement.
Thanks to Brady Holt for the report.
- Add WITHOUT in the list of keywords and fix formatting of CAST
keyword that was formatted as a function.
- Apply data type formatting after RETURNS and CAST AS clauses.
- Fix formatting of DO ALSO rules.
Version 4.2
January 26 2020 - v4.2
This is a maintenance release to fix issues reported by users since
the last three months. As usual there is also some improvements and
more formatting supported.
New option:
* -U | --type-case N : Change the case of the data type name. Default is
lowercase: 1. Values: 0=>unchanged, 1=>lowercase,
2=>uppercase, 3=>capitalize.
also avalaible in CGI mode as a select box option.
Here is the complete list of changes and acknowledgments:
- Fix indentation if CASE clause when there is ; in statement.
Thanks to Sergey Shepelev for the report.
- Fix indentation of ORDER BY in OVER() clause. Thanks to Giorgi
Modebadze for the report.
- Keep CREATE STATISTICS statement on a single line.
- Restore CREATE INDEX on a single line (no newline before using)
to conform to pg_dump output.
- Fix indentation when IF NOT EXISTS clause is present.
- Add execution of regression tests through call to: make test.
Thanks to Christoph Berg for the feature request.
- Fix uninitialized variable error.
- Fix identation of VALUES clause for INSERT statement in function
code. Thanks to Sergey Shepelev for the report.
- Fix indentation between comment and closed parenthesis before a
column alias. Thanks to Laszlo Zsolt Nagy for the report.
- Fix indentation of a FOR UPDATE clause in plpgsql function and
after a LIMIT clause. Thanks to Sergey Shepelev.
- Remove extra newline on inline comment. Thanks to prichardson211
for the report.
- Fix indentation of VALUES in some cases of INSERT statements
- Fix wrong current statement assignment with comment keywword.
- Fix invalid indentation of INSERT into function.
- Dump array values in _dump_var() function.
- Add RAISE to keywords.
- Fix indentation in function with nested BEGIN/END blocks. Thanks
to prichardson211 for the reports.
- Fix other bad formatting in CREATE TYPE statements.
- Indent AS followed by code delimiter in CREATE PROCEDURE statement
just like with CREATE FUNCTION.
- Fix indentation after a function/procedure with single quote as
delimiter.
- Prevent newline between open and close parenthesis in create
function clause when there is no parameters.
- Apply same behavior than previous commit for colon followed by the
variable name in double quotes
- Fix formatting of psql variable used in sql file. Thanks to Girish
Pasupathy for the report.
- Add detection of cast in token for keyword and function formatting
Do not treat TRUE/FALSE as keyword when used a column aliases.
- Fix formatting with casts type after case when using ::. Thanks to
Giorgi Modebadze for the report.
- Fix wrong detection as keyword or column name of tokens COMMENT,
INDEX and CONSTRAINT.
- Add debug information for SQL keyword detection.
- Fix new line in FK constrains between ON and UPDATE.
- Remove newline between UPDATE and the relation name, they appears
now on the same line.
- Fix formatting of ON CONFLICT DO clause. Thanks to prichardson211
for the report.
- Fix formatting of PREPARE ... AS UPDATE
- Replace double quote in functions that has single quote as quote
separator as we replace it by $$.
- Fix wrong formatting with CREATE TABLE in EXPLAIN statement.
- Add newline between AS and WITH keywords. Thanks to Andriy Diulin
for the report.
- Fix indent of RETURNS TABLE clause. Thanks to Ziyaddin Sadigov for
the report.
- Fix formatting of trigger with INSTEAD OF.
- Fix indentation of SELECT inside INSERT statement. Thanks to
Laszlo Zsolt Nagy for the report.
- Fix case where formatting adds a newline before ASC or DESC.
Thanks to Giorgi Modebadze for the report.
- Fix formatting in CREATE TABLE statement with no indent after
first foreign key.
- Fix parsing of function with internal language that was breaking
formatting of subsequent statements.
- Fix formatting of CONSTRAINT TRIGGER.
- Add more debug capabilities.
- Fix wrap in compound FOREIGN KEY. Thanks to Victor Andree for the
report.
- Fix exception when the statement does not end with a semi colon.
Thanks to Ralph R. for the report.
- Allow testing installed binary in /usr/bin required for Debian
- package testsuite. Thanks to Christoph Berg for the patch.
- Reflect test result in exit code of regress_test.pl. Thanks to
Christoph Berg for the patch.
Version 4.1
September 20 2019 - v4.1
This is a maintenance release to fix issues reported by users since
the last three month. As usual there is also some improvements and
new features.
- Add -T, --tabs option to make pg_format use tabs instead of space characters. When this option is used spaces number is set to 1 whatever is the value set to -s, --spaces.
- Allow output to override source file.
- Add option -g, --no-grouping and CGI corresponding checkbox. By default pgFormatter groups all statements when they are in a transaction:
BEGIN;
INSERT INTO foo VALUES (1, 'text 1');
INSERT INTO foo VALUES (2, 'text 2');
...
COMMIT;
By disabling grouping of statement pgFormatter will always add an extra newline characters between statements just like outside a transaction:
BEGIN;
INSERT INTO foo VALUES (1, 'text 1');
INSERT INTO foo VALUES (2, 'text 2');
...
COMMIT;
This might add readability to not DML transactions.
- Add more SQL keyword: REFRESH, MATERIALIZED, EVENT and function xmltable
- Prevent uppercase of keywords when they are used as column names in a CREATE TABLE statement.
Here is the complete list of changes and acknowledgments:
- Keep COMMENT ON formatting unchanged when using dollar quoting.
Thanks to Jeremy Palmer for the report.
- Allow to disable grouping of statements in transaction. Thanks to
Francisco Puga for the feature request.
- Fix unwanted formatting when know keywords are used in a CREATE
TABLE statement. Thanks to Jeremy Palmer for the report.
- Add -T, --tabs option to make pg_format use tabs instead of space
characters. Thanks to jen-Ya for the feature request.
- Update regression tests.
- Prevent new line between DEFAULT and VALUES in insert statements.
- Fix bad formatting with single quote code separator. The separator
is replaced with $$ when the code is multi-line, otherwise the
code is kept untouched.
- Allow regression test on specific test file passed as parameter.
- Fix format when "with time out" is used. Thanks to jjangga0214
for the report.
- Fix backslashes at end of string constant that produce wrong
results. Thanks to jen-ya for the report.
- Fix regression tests with REFRESH / MATERIALIZED.
- Add REFRESH and MATERIALIZED to the list of SQL keywords. Thanks
to jen-Ya for the report.
- Fix tabs indentions used outside indent and add regression test
for -n and -T options.
- Fixes to documentation. Thanks to zach valenta for the patch.
- Fix not remove comment starting with -- when the -n option is
used. Thanks to Brady Holt for the report.
- Fix error about STDIN reopened as STDOUT introduced in commit
af63e9e. Thanks to Daniel McAuley for the report.
- Fix newline wrongly forced after function parameters in CTE.
- Allow output to override source file. Thanks to Daniel McAuley
for the report.
- Fix formatting when a token start with CALL. Thanks to Ralph R.
for the report.
- Fix newline in geometry type. Thanks to Sven Over for the report.
- Fix incomplete previous patch.
- Fix missing newline in column list after CTE. Thanks to Giorgi
Modebadze for the report.
- Fix OVERLAPS formatting.
- CGI.pm: correct github link text in footer. Thanks to Stephan
Renatus for the patch
- Fix build of pg function hash.
- Fix wrong formatting in CREATE TABLE statement AS WITH clause.
Thanks to ImreSamu for the report.
- Fix broken indent when AS has parameters.
- Suppress newline in COMMENT ON FUNCTION formatting.
- Fix several indentation issues related to CREATE TABLE with
PARTITION and ALTER statements.
- Fix an other case of bad indentation of EXECUTE in triggers and
undefined value on indentation level.
- Fix an other case of newline introduced in REVOKE statement.
- Fix newline before FROM in REVOKE statement
- Add EVENT keyword and add formatting of CREATE EVENT TRIGGER
statement.
- Fix indentation for an insert statement after a create table
statement in the code of a function. Thanks to LaetitiaJV for
the report.