
PgFormatter: A PostgreSQL SQL syntax beautifier - fanf2
https://github.com/darold/pgFormatter
======
tyingq
Pasting "SELECT 1,2," then clicking [FORMAT MY CODE] on their online demo[1]
seems to break something. It renders the site header, but nothing else.

[1] [http://sqlformat.darold.net/](http://sqlformat.darold.net/)

Also, a similar tool was recently discussed:
[https://news.ycombinator.com/item?id=18087514](https://news.ycombinator.com/item?id=18087514)

~~~
dokem
injection lol

------
accnumnplus1
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
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

~~~
accnumnplus1
Ah, the whitespace agnostic didn't even occur to me!

------
nine_k
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
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](https://github.com/darold/pgbadger)),
one of his other projects.

------
0x777
Sometimes this ([https://zeroturnaround.github.io/sql-
formatter/](https://zeroturnaround.github.io/sql-formatter/)) does a better
job for me. Doesn't support Postgres explicitly but works most of the time.

------
mcrad
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
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
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.

~~~
frou_dh
I meant the style choices. But it did also choke on Identity Columns IIRC
([https://blog.2ndquadrant.com/postgresql-10-identity-
columns/](https://blog.2ndquadrant.com/postgresql-10-identity-columns/)).

Not knocking either project - just pondering adoption.

------
eric_the_read
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)

~~~
overcast
I do similar, keeps both keywords and fields vertically aligned.

~~~
jerrysievert
I do too, but it breaks down on me for some specific:

* ORDER BY

* INNER JOIN

etc

------
bhandziuk
I like Notepad++'s Poor Man's SQL Formatter plug-in. Works well for anything I
do.

------
omaranto
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
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.

------
hnxx
I really hope there will be a sql formatter like prettier for javascript, I
have tried Intellij's sql formater and mysql workbench's sql formatter,
neither has some warts.

~~~
mjibson
[https://www.cockroachlabs.com/blog/sql-fmt-online-sql-
format...](https://www.cockroachlabs.com/blog/sql-fmt-online-sql-formatter/)
was on here last week. It's a sql formatter based on the same paper prettier
is.

------
chrisjc
Looks like they might need a formatter to beautify their README too.

~~~
codefined
I might be missing something, but it seems like a fairly high quality README
file. What do you feel is wrong with it?

------
dvdhnt
Do you really need to serve ads on your demo site?

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

