Hi,
On Wed, Mar 25, 2020 at 07:09:38PM +0100, Fabien COELHO wrote:
>
> Hello,
>
> After writing an unreadable and stupidly long line for ldap authentification
> in a "pg_hba.conf" file, I figured out that allowing continuations looked
> simple enough and should just be done.
I tried this briefly.
> - Records cannot be continued across lines.
> + Records can be backslash-continued across lines.
Maybe say: "lines ending with a backslash are logically continued on the next
line", or similar.
> + /* else we have a continuation, just blank it and loop */
> + continuations++;
> + *curend++ = ' ';
Since it puts a blank there, it creates a "word" boundary, which I gather
worked for your use case. But I wonder whether it's needed to add a space (or
otherwise, document that lines cannot be split beween words?).
You might compare this behavior with that of makefiles (or find a better
example) which I happen to recall *don't* add a space; if you want that, you
have to end the line with: " \" not just "\".
Anyway, I checked that the current patch handles users split across lines, like:
alice,\
bob,\
carol
As written, that depends on the parser's behavior of ignoring commas and
blanks, since it sees:
"alice,[SPACE]bob,[SPACE]carol"
Maybe it'd be nice to avoid depending on that.
I tried with a username called "alice,bob", split across lines:
"alice,\
bob",\
But then your patch makes it look for a user called "alice, bob" (with a
space). I realize that's not a compelling argument :)
Note, that also appears to affect the "username maps" file. So mention in that
chapter, too.
https://www.postgresql.org/docs/current/auth-username-maps.html
Cheers,
--
Justin