pgFormatter icon indicating copy to clipboard operation
pgFormatter copied to clipboard

Wierd nested indenting when using multi conditional join with integer

Open neszt opened this issue 4 years ago • 0 comments

$ pg_format --version pg_format version 4.4

Reproduced also on live demo page.

Command:

$ pg_format --keyword-case 2 --tabs --comma-start --no-extra-line --inplace input.sql

Input:

CREATE OR REPLACE VIEW test AS
SELECT
        *
FROM
        test1 AS a
        INNER JOIN test2 AS b ON a.field1 = b.field1 AND b.field2 = 'data2' AND b.field3 = 'data3'
        INNER JOIN test2 AS b ON a.field1 = b.field1 AND b.field2 = 'data2' AND b.field3 = 0
        INNER JOIN test2 AS b ON a.field1 = b.field1 AND b.field2 = 'data2' AND b.field3 = 'data3'
        INNER JOIN test2 AS b ON a.field1 = b.field1 AND b.field2 = 'data2' AND b.field3 = 'data3'

Output:

CREATE OR REPLACE VIEW test AS
SELECT
        *
FROM
        test1 AS a
        INNER JOIN test2 AS b ON a.field1 = b.field1
                AND b.field2 = 'data2'
                AND b.field3 = 'data3'
        INNER JOIN test2 AS b ON a.field1 = b.field1
                AND b.field2 = 'data2'
                AND b.field3 = 0
                INNER JOIN test2 AS b ON a.field1 = b.field1
                        AND b.field2 = 'data2'
                        AND b.field3 = 'data3'
                INNER JOIN test2 AS b ON a.field1 = b.field1
                        AND b.field2 = 'data2'
                        AND b.field3 = 'data3'

Expected output:

CREATE OR REPLACE VIEW test AS
SELECT
        *
FROM
        test1 AS a
        INNER JOIN test2 AS b ON a.field1 = b.field1
                AND b.field2 = 'data2'
                AND b.field3 = 'data3'
        INNER JOIN test2 AS b ON a.field1 = b.field1
                AND b.field2 = 'data2'
                AND b.field3 = 0
        INNER JOIN test2 AS b ON a.field1 = b.field1
                AND b.field2 = 'data2'
                AND b.field3 = 'data3'
        INNER JOIN test2 AS b ON a.field1 = b.field1
                AND b.field2 = 'data2'
                AND b.field3 = 'data3'

neszt avatar May 19 '21 08:05 neszt