top | item 18184731

PgFormatter: A PostgreSQL SQL syntax beautifier

129 points| fanf2 | 7 years ago |github.com

31 comments

order
[+] accnumnplus1|7 years ago|reply
Do we need to use caps for SQL keywords? My understanding is that it served a purpose back in the days of monochrome screens, but modern IDEs colour the keywords so caps are now redundant. Though I don't use caps even without colouring, I find them just a nuisance.
[+] da_chicken|7 years ago|reply
No, not at all. SQL is case agnostic unless you're talking about field collations or, in many systems, object names. It's also largely whitespace agnostic. Many RDBMSs will handle this just fine:

  select*from"MyTable"where"column"=3
[+] tejtm|7 years ago|reply
I got over all caps SQL keywords a very long time ago. If anything, I think it hurts readability while taking (me) longer to write.
[+] nicoburns|7 years ago|reply
Depends on your IDE. My editor only picks up SQL in strings sometimes.
[+] yoklov|7 years ago|reply
I prefer them because they make grepping for SQL code easier. Also syntax coloring inside strings is not common.
[+] nine_k|7 years ago|reply
A 100% Perl project in 2018 is a rare sight.

(Implementing a SQL formatter in pure SQL is not impossible, but would be quite a tour de force. Just a thought.)

[+] ioltas|7 years ago|reply
The most productive language of Gilles, well-known in the Postgres community by the way, is perl, and he can do completely crazy things with it. See for example pgbadger (https://github.com/darold/pgbadger), one of his other projects.
[+] mcrad|7 years ago|reply
Am I the only one irked by the concept of beautiful SQL? SQL is beautiful by itself. Pick a style (indents,caps,whatever) that fits the project at hand. I have found it useful to write the more mundane parts of a project like a regular paragraph with minimal whitespace, and do more whitespace in areas that are more complex or more likely need attention later. Depending too much on a standard style (ironically) lends itself to some pretty ugly code, eg. tangling too many joins and subqueries that would be far better handled by separate statements.
[+] frou_dh|7 years ago|reply
The stark difference between a formatter and a formatter officially blessed by the parent project, is that the former is far more vulnerable to having its output viewed with a jaundiced eye and the formatter being cast away.

I remember trying the one from TFA and NOPE-ing out immediately. Similarly, "sqlfmt" that was on HN recently. If there was an official Postgres formatter, I would probably persevere despite whatever oddities it would inevitably have.

[+] tyingq|7 years ago|reply
The sqlfmt one pulls in the cockroachdb parser, and that team has a fairly big incentive to be compatible with PG syntax. Nobody is perfect, but it seems set up to stay current/correct.
[+] eric_the_read|7 years ago|reply
I'll have to see if I can adapt this to my somewhat idiosyncratic syntax:

  SELECT field, other_field
    FROM table
   WHERE some_thing IN (
         SELECT id 
           FROM other_table
         )
     AND other_field IS NOT NULL
(mostly it's right-aligning keywords, but there are a few other weird tweaks)
[+] zeroimpl|7 years ago|reply
I tried your SQL in the demo, and it came out like this:

    SELECT
        field,
        other_field
    FROM
        TABLE
    WHERE
        some_thing IN (
            SELECT
                id
            FROM
                other_table)
            AND other_field IS NOT NULL
I'd have expected the last line to have one less indentation level...
[+] ComputerGuru|7 years ago|reply
I’ve adopted the same format myself, it reminds me of aligning numbers at the decimal point.
[+] overcast|7 years ago|reply
I do similar, keeps both keywords and fields vertically aligned.
[+] bhandziuk|7 years ago|reply
I like Notepad++'s Poor Man's SQL Formatter plug-in. Works well for anything I do.
[+] omaranto|7 years ago|reply
I've never heard of a code formatter called a "syntax beautifier" before. The phrase "syntax beautifier" sounds more like a compiler plug-in that actually changes the language syntax to something more beautiful.
[+] codefined|7 years ago|reply
It's a relatively common name. I would say it might even be more common than the alternative of "code formatter". I do agree that the syntax of the language isn't changing, but it does seem like the phrase that has stuck.
[+] andreareina|7 years ago|reply
I think the beautifier part refers to it applying syntax highlighting to the web output.
[+] chrisjc|7 years ago|reply
Looks like they might need a formatter to beautify their README too.
[+] codefined|7 years ago|reply
I might be missing something, but it seems like a fairly high quality README file. What do you feel is wrong with it?
[+] dvdhnt|7 years ago|reply
Do you really need to serve ads on your demo site?

Maybe you do, but that doesn't seem very OSS.