Re: libpq parameter parsing problem

From: Jobin Augustine <jobinau(at)gmail(dot)com>
To: Oleksandr Shulgin <oleksandr(dot)shulgin(at)zalando(dot)de>
Cc: pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: libpq parameter parsing problem
Date: 2020-01-08 08:48:12
Message-ID: CANaTPsrgsrVK2nb6bPym-fZcQvL7aJErMCXek7LBp-QFDQt-RQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Thanks Alex and Heikki,

Encoding works and it solved the problem. I find the documentation is not
very clear about it.
Heikki's single line comment was more clear to me than documentation :)
A statement like "PostgreSQL URI string need to be encoded with
Percent-encoding <https://en.wikipedia.org/wiki/Percent-encoding> " would
have been much better

On Tue, Jan 7, 2020 at 7:54 PM Oleksandr Shulgin <
oleksandr(dot)shulgin(at)zalando(dot)de> wrote:

> On Tue, Jan 7, 2020 at 2:17 PM Jobin Augustine <jobinau(at)gmail(dot)com> wrote:
>
>> Hello hackers,
>> User can pass session-level settings as a parameter in the connection
>> string like:
>> psql "host=localhost user=postgres options='-c synchronous_commit=off'"
>> Which sets the synchronous_commit off for the session.
>>
>> However, URI spec is not allowing it,
>> psql postgresql://postgres(at)localhost:5432/postgres?options="-c
>> synchronous_commit=off"
>> psql: error: could not connect to server: extra key/value separator "="
>> in URI query parameter: "options"
>>
>> psql postgresql://postgres(at)localhost:5432/postgres?options="-c
>> synchronous_commit off"
>> psql: error: could not connect to server: FATAL: -c synchronous_commit
>> requires a value
>>
>
> Jobin,
>
> As already pointed out by Heikki, and per documentation:
>
> > Percent-encoding may be used to include symbols with special meaning in
> any of the URI parts, e.g. replace = with %3D.
> https://www.postgresql.org/docs/current/libpq-connect.html
>
> Moreover session just hangs forever:
>> psql postgresql://postgres(at)localhost:5432/postgres?application_name=hello&options='-c
>> synchronous_commit=off'
>> provided that the connection works without the 'options' parameter
>> specification
>>
>
> What you observe here is most likely the result of your shell interpreting
> the ampersand sign (&) in the middle of the URI and triggering asynchronous
> execution of the command before the sign. Please try escaping the sign or
> using appropriate quoting, e.g. extend the single quote to start before the
> URI:
>
> psql 'postgresql://postgres(at)localhost:5432/postgres?application_name=hello&options=-c
> synchronous_commit%3Doff'
>

Yes, That was too silly. my bad

>
> Cheers,
> --
> Alex
>

Thanks and Regards,
Jobin

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Heikki Linnakangas 2020-01-08 09:06:35 Re: libpq parameter parsing problem
Previous Message Michael Paquier 2020-01-08 08:19:30 Re: REINDEX CONCURRENTLY unexpectedly fails