Viewing entries tagged with pgindent. Return to full view.

pgindent vs dash

For those who don't know, pgindent is the tool used to indent the source code of PostgreSQL. dash is the shell that ships as /bin/sh on at least Ubuntu.

pgindent requires indent from BSD (we use a patched version from NetBSD, the source is available on the PostgreSQL ftp site), and specifically does not work with GNU indent. Guess what Ubuntu ships with.

The solution is of course a small script that runs BSD indent from a different directory, and also points out the typedefs.list file from the PostgreSQL git repo. Something like this:

#!/bin/sh

export PATH=src/tools/pgindent:$PATH
src/tools/pgindent/pgindent src/tools/pgindent/typedefs.list $*

Spot the error? Yeah, that calls /bin/sh, which is dash. Which gives some really interesting results with pgindent, none of which are what you expect.

So if you run pgindent through a script like this, be sure to use /bin/bash and not /bin/sh!

Conferences

I speak at and organize conferences around Open Source in general and PostgreSQL in particular.

Upcoming

Past

PGConf.EU 2025
Oct 21-24, 2025
Riga, Latvia
PGConf.NYC 2025
Sep 29-Oct 1, 2025
New York, USA
PGConf.dev 2025
May 13-16, 2025
Montreal, Canada
PGDay Chicago 2025
Apr 15, 2025
Chicago, USA
Nordic PGDay 2025
Mar 18, 2025
Copenhagen, Denmark
More past conferences