Skip to content

Releases: darold/pgFormatter

Version 5.11

Choose a tag to compare

@darold darold released this 04 Sep 08:12

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

Choose a tag to compare

@darold darold released this 09 May 05:01

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

Choose a tag to compare

@darold darold released this 21 Dec 10:57

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

Choose a tag to compare

@darold darold released this 14 Sep 10:41

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

Choose a tag to compare

@darold darold released this 29 Aug 04:49

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

Choose a tag to compare

@darold darold released this 17 Mar 13:19

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

Choose a tag to compare

@darold darold released this 04 Feb 18:04

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

Choose a tag to compare

@darold darold released this 11 Jan 08:14

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

Choose a tag to compare

@darold darold released this 07 Aug 16:36

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

Choose a tag to compare

@darold darold released this 03 Dec 21:50

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.