Releases: darold/pgFormatter
Release list
Version 5.11
September 4 2026 - v5.11
This release adds optional vertical alignment feature for CREATE TABLE
definitions and fixes some issues reported by users since the last release.
Here is the complete list of changes and acknowledgments:
- Add missing item vertical_align comment to the set_default() method.
- Fix redundant parenthesis when SELECT is called in a function. Thanks to Paul Huffmann for the report.
- Fix redundant parenthesis wrong removing. Thanks to Paul Huffman for the report.
- Add optional vertical alignment feature for CREATE TABLE definitions. Thanks to David Aukes for the patch.
- Fix code versus string delimiter
- Fix uninitialized value error. Thanks to castle101 for the report.
- Fix typo in RedShift keywords documentation. Thanks to Andras Hegedus for the patch.
- Fix crash with use of uninitialized value in MERGE request. Thanks to Noa Laznik for the report.
Version 5.10
May 8 2026 - v5.10
This release adds several formatting improvements and fixes some issues
reported by users since the last release.
Here is the complete list of changes and acknowledgments:
- Add formatting of MERGE requests. Thanks to Ole Peder Brandtzaeg for
the report.
- Fix `DO $$ BEGIN CREATE TABLE (...); END $$;` an extra space was added to
variable length types before closing paren. Thanks to Paul Huffman for
the report.
- Fix formatting issue in WHERE clause with CREATE POLICY. Thanks to
max delorme for the report.
- Fix JSONB Array delete field operator format issue. Thanks to matt barnes
for the report.
- Fix a RETURNING formatting issue in CTE when it include an INSERT INTO
statement.
- Fix formatting of clause INTO vars with UPDATE. Thanks to Alexander Samsig
for the report.
- Fix indentation of RETURNING ... INTO statements. Thanks to Alexander
Samsig for the patch.
- Fix output destination debug message.
- Preserve inline `$$…$$` dollar-quoted strings with SQL function declaration.
Dollar-quoted strings are string literals and their contents should be
left alone. Thanks to Ben Kircher for the patch.
- Fix a crash on uninitialized _next_token in CTE/explain path. Thanks to
Ben Kircher for the patch.
- Fix indentation of SELECT ... INTO statements. Thanks to Amanda Graven
for the report.
- Fix indentation levels in CREATE POLICY statements with USING and
WITH CHECK. Thanks to max delorme for the report.
- Fix formatting of multiple escaped-quote segments in the same multi line
constant. Thanks to etzelc for the report.
- Remove exit command in the highlight_code function that was aborting CGI
work.
- Fix uninitialized variable error. Thanks to Nhyalgotphores for the report.
Version 5.9
December 21 2025 - v5.9
This release adds several formatting improvements and fixes some issues
reported by users since the last release.
Here is the complete list of changes and acknowledgments:
- Fix wierd nested indenting when using multi conditional join with integer 0
value. Thanks to Neszt Tibor for the report. - Fix bad indentation with simple join. Thanks to anttilinno for the report.
- Fix indentation after RAISE EXCEPTION ... USING. Thanks to Ray Ng for the
report. - Fix bad formatting in CASE statements with variable assignments. Thanks to
Serhii Khoma for the report. - Limit the number of perl version tested
- Add CI action to test pgFormatter on commit push
- Fix dollar quote sign when attached to a word. Thanks to Andrew Jackson for
the report. - Fix indentation of UNION in RETURN QUERY clause. Thanks to birgersp for the
report. - Fix false negative in keyword detection with QUERY after RETURN
- Add pre-commit hook config. Thanks to Alexey Shrub for the patch.
- Add extra newline after ariga/atlas related comment line. Thanks to Jay Babu
for the feature request. - Fix incorrect formatting in PL/pgSQL when using DECLARE and CASE. Thanks to
lkslawek for the report. - Fix incorrect formatting of scientific notation with exponents. Thanks to
Ray Ng for the report. Add regression tests cases. - Fix incorrectly removing extra parenthesis in CREATE POLICY statements.
Thanks to Julian Niedermeier for the report.
Version 5.8
September 14 2025 - v5.8
This release adds several formatting improvements ans fixes some issues
reported by users since the last release.
Here is the complete list of changes and acknowledgments:
-
Fix bad indentation for WHERE after JOIN. Thanks to Neko Hz for the
report. -
pgFormatter is now able to distinguish between single values and
multiple values INSERT statement and to format them differently.
Here an example of the output format:-- multiple values form INSERT INTO tempy_mc_tempface VALUES ('tempy'), ('mc'), ('tempface'); -- single values form INSERT INTO tempy_mc_tempface VALUES ('another', 'world');Thanks to Paul Gelardi for the feature request.
-
Fix indentation issue of INSERT statements in DO block. Thanks to Paul Gelardi for the report.
-
Fix version in main script
-
Fix case where pgFormatter was removing a table named rule from joins. Thanks to Andy Freeland for the report.
-
Fix wrong format of format() function placeholders. Thanks to Andrew Jackson for the report.
Version 5.7
August 29 2025 - v5.7
This maintenance release fixes some issues reported by users since the last
release and adds some improvements.
Improvements:
- Better formatting of UPSERT queries.
- Better formatting of some form of CTE queries.
- Fix warning with new Perl versions.
Here is the complete list of changes and acknowledgments:
- Fix formatting of UPSERT queries.
- Fix space added after group_concat function. Thanks to Ahmad bin Marakkar
for the report. - Fix Possible-precedence-problem warnings with a switch to ne operator
instead of !=. Thanks to actualben for the patch. - Fix extra space before cast in create table statement. Thanks to Zoe Roux
for the report. - Fix indentation by running: perltidy -et=4 file. Thanks to Tello-Wharton
Aaron for the report - Fix indentation for SELECT statements in CTEs that use Postgres functions.
Thanks to Tello Wharton for the patch. - Adding functionality to understand if a function is just being closed.
Thanks to Tello Wharton for the patch. - Add a test to verify that the indentation in select statements in CTEs
is honoured. Thanks to Tello Wharton for the patch. - Signaling that a FROM statement has been exited when a WITH is being exited.
Thanks to Tello Wharton for the patch. - Add OFFSET to the list of keywords. Thanks to Muhammad Imaduddin for the report.
Version 5.6
March 17 2025 - v5.6
This maintenance release fixes some issues reported by users since the last
release and adds some improvements.
Improvements:
- Add support to pg_vector operator <#>. Thanks to Taylor Brown for the report
- Add support for the @? jsonb-jsonpath operator. Thank to Simon Whitaker for
the patch. - Follow the XDG Base Directory Specification by searching configuration file
into XDG_CONFIG_HOME/pg_format/config.conf. Thanks to afk-mario for the
feature request. - Check USERPROFILE env var for Windows. Thanks to Aaron Sherber for the patch
- Add to_reg* and reg* to function list.
- Add missing Perl modules in installation instructions. Thanks to dullbananas
for the patch. - Add information about the Perl module to install for the JSON feature.
- Expand web capabilities of the app with adding API-like JSON capability to
the CGI module. The API can be disabled using the enable_api parameter to
the CGI (default: 1). Thanks to m.desoutter for the patch. - Add option --redundant-parenthesis to prevent pgFormatter to remove
reduntant parenthesis in DML.
Here is the complete list of changes and acknowledgments:
- Fix indentation issue of INSERT in procedures. Thanks to Olamshin for the
report. - Fix indentation in triggers in an exception block. Thanks to bmk9727 for
the report. - Fix create type output. Thanks to Alec Larson for the report.
- Fix formatting of CHECK clause to be single line. Thanks to Alec Larson for
the report - Apply last fix changes for b = - 5 rewritten into b = -5
- Fix use of % formatter in format() function. Thanks to Ender Dobra for the
report. - Fix formatting of column name corresponding to keywords in INSERT and UPDATE
statement. Thanks to Zoe Roux for the report. - Fix single quotes inside /**/ comments break formatting. Thanks to Jakob
Egger for the report. - Fix formatting with BEGIN+ATOMIC. Thanks to dullbananas for the report.
- Update regression tests.
- Fix indentation of ELSE in a CASE clause. Thanks to VinceT for the report.
- Fix handling of the assignment operator := when there is no space
between the variable name and the operator. Thanks to Alexey Samoilov
for the report. - Fix broken indent when a comment is found before DECLARE. Thanks to Alexey
Samoilov for the report. - Fix format of SET statement in CREATE FUNCTION block. Thanks to Robert
Nilsson for the report. - Fix data type case in ALTER command. Thanks to Brandon Stilson for the
report. - Remove extra space after comment characters added by pgFormatter. Thanks
to Brandon Stilson for the report. - Fix documentation about function-case. Thanks to John Clow for the
report. - Fix other occurence of --no-grouping remaining in the documentation
instead of --nogrouping - Fix Use of uninitialized value $ENV{"XDG_CONFIG_HOME"}. Thanks to looi
for the report. - Fix typo on nogrouping option. Thanks to Edmundo Santos for the patch.
- Allow more characters in double quoted fqdn objects. Thanks to lsyuan
for the report. - Fix an uninitialized variable error. Thanks to Profpatsch for the report.
- Add prerequisite information about the Perl autodie module with RH like
distribution. Thanks to Saunders Brandon for the report.
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.