Re: libpq parameter parsing problem

Поиск
Список
Период
Сортировка
От Jobin Augustine
Тема Re: libpq parameter parsing problem
Дата
Msg-id CANaTPsrgsrVK2nb6bPym-fZcQvL7aJErMCXek7LBp-QFDQt-RQ@mail.gmail.com
обсуждение исходный текст
Ответ на Re: libpq parameter parsing problem  (Oleksandr Shulgin <oleksandr.shulgin@zalando.de>)
Ответы Re: libpq parameter parsing problem  (Heikki Linnakangas <hlinnaka@iki.fi>)
Список 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 " would have been much better


On Tue, Jan 7, 2020 at 7:54 PM Oleksandr Shulgin <oleksandr.shulgin@zalando.de> wrote:
On Tue, Jan 7, 2020 at 2:17 PM Jobin Augustine <jobinau@gmail.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@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@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.

Moreover session just hangs forever:
psql postgresql://postgres@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@localhost:5432/postgres?application_name=hello&options=-c synchronous_commit%3Doff'

Yes, That was too silly. my bad 

Cheers,
--
Alex

Thanks and Regards,
Jobin 

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Michael Paquier
Дата:
Сообщение: Re: REINDEX CONCURRENTLY unexpectedly fails
Следующее
От: Heikki Linnakangas
Дата:
Сообщение: Re: libpq parameter parsing problem