Missing documentation

Started by PG Bug reporting formover 3 years ago8 messagesdocs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/15/libpq-connect.html
Description:

On this page:
https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS

There is a list of keywords that can be specified as part of the connection
string.
Specifying `jit=off` or `jit=on` is functional in practice, but `jit` is
not included in the documentation.

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: PG Bug reporting form (#1)
Re: Missing documentation

PG Doc comments form <noreply@postgresql.org> writes:

On this page:
https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS

There is a list of keywords that can be specified as part of the connection
string.
Specifying `jit=off` or `jit=on` is functional in practice, but `jit` is
not included in the documentation.

Really? Doesn't work for me:

$ psql "host=localhost port=5432 jit=off"
psql: error: invalid connection option "jit"

regards, tom lane

#3Stefan Badenhorst
Stefan.Badenhorst@mi-c3.com
In reply to: Tom Lane (#2)
Re: Missing documentation

This is working:
postgresql://USERNAME:PASSWORD@server
:5432/the_database?sslmode=disable&jit=off
Maybe I was looking at the wrong documentation page?

On Thu, 3 Nov 2022 at 14:58, Tom Lane <tgl@sss.pgh.pa.us> wrote:

PG Doc comments form <noreply@postgresql.org> writes:

On this page:

https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS

There is a list of keywords that can be specified as part of the

connection

string.
Specifying `jit=off` or `jit=on` is functional in practice, but `jit` is
not included in the documentation.

Really? Doesn't work for me:

$ psql "host=localhost port=5432 jit=off"
psql: error: invalid connection option "jit"

regards, tom lane

--

Email
Disclaimer

This email is
proprietary to MI-C3 and is intended only for the person to whom it is
addressed. It may contain confidential and privileged  information. If you
have received this email in error, please notify the sender and delete this
email, which must not be copied, distributed or disclosed to any other
person. Any views or opinions presented are solely those of the author and
do not necessarily represent those of MI-C3. Since this communication was
affected via email, MI-C3 cannot guarantee that it is secure or error-free
as information could be intercepted, corrupted, lost, destroyed, arrive
late or incomplete, or contain viruses. MI-C3 does not accept liability for
any errors or omissions in the contents of this message or for any damage
resulting from the opening of this message should it contain a virus.

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Stefan Badenhorst (#3)
Re: Missing documentation

Stefan Badenhorst <Stefan.Badenhorst@mi-c3.com> writes:

This is working:
postgresql://USERNAME:PASSWORD@server
:5432/the_database?sslmode=disable&jit=off

Again, not for me:

$ psql 'postgresql://postgres@localhost:5432/mydb?sslmode=disable&jit=off'
psql: error: invalid URI query parameter: "jit"

I suspect something in your client environment is stripping off the &...
stuff.

regards, tom lane

#5Stefan Badenhorst
Stefan.Badenhorst@mi-c3.com
In reply to: Tom Lane (#4)
Re: Missing documentation

I am using a prometheus exporter:
https://github.com/prometheus-community/postgres_exporter/
Turning JIT off definitely made a big difference to all our environments.
When using JIT it causes OOM on postgres server after a few days. Adding
jit=off resolved the issue.
I have tested this now for several weeks and memory usage stays stable when
jit=off.
You can see the related issue here:
https://github.com/prometheus-community/postgres_exporter/issues/694

On Thu, 3 Nov 2022 at 16:01, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Stefan Badenhorst <Stefan.Badenhorst@mi-c3.com> writes:

This is working:
postgresql://USERNAME:PASSWORD@server
:5432/the_database?sslmode=disable&jit=off

Again, not for me:

$ psql 'postgresql://postgres@localhost:5432/mydb?sslmode=disable&jit=off'
psql: error: invalid URI query parameter: "jit"

I suspect something in your client environment is stripping off the &...
stuff.

regards, tom lane

--

Email
Disclaimer

This email is
proprietary to MI-C3 and is intended only for the person to whom it is
addressed. It may contain confidential and privileged  information. If you
have received this email in error, please notify the sender and delete this
email, which must not be copied, distributed or disclosed to any other
person. Any views or opinions presented are solely those of the author and
do not necessarily represent those of MI-C3. Since this communication was
affected via email, MI-C3 cannot guarantee that it is secure or error-free
as information could be intercepted, corrupted, lost, destroyed, arrive
late or incomplete, or contain viruses. MI-C3 does not accept liability for
any errors or omissions in the contents of this message or for any damage
resulting from the opening of this message should it contain a virus.

#6Tom Lane
tgl@sss.pgh.pa.us
In reply to: Stefan Badenhorst (#5)
Re: Missing documentation

Stefan Badenhorst <Stefan.Badenhorst@mi-c3.com> writes:

I am using a prometheus exporter:
https://github.com/prometheus-community/postgres_exporter/

Hmm, well, maybe prometheus is doing something with that part of the URL.
There's no such behavior in Postgres itself, though.

regards, tom lane

#7Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Tom Lane (#6)
Re: Missing documentation

On 2022-Nov-03, Tom Lane wrote:

Stefan Badenhorst <Stefan.Badenhorst@mi-c3.com> writes:

I am using a prometheus exporter:
https://github.com/prometheus-community/postgres_exporter/

Hmm, well, maybe prometheus is doing something with that part of the URL.
There's no such behavior in Postgres itself, though.

Yeah, that part of the connection URI accepts libpq options, not
Postgres-server options. The only way that you can pass options to the
backend is to use "options=-c foo=bar" in the URI, but both the
whitespace and the second equals sign need to be URI-escaped, so you end
up with something like this:

?sslmode=disable&options=-c%20jit%3Doff

This is explained (to some extent) in "34.1.1.2 Connection URIs",
https://www.postgresql.org/docs/current/libpq-connect.html#id-1.7.3.8.3.6

and later "34.1.2 Parameter Key Words" explains that the parameter
"options" is used to pass command-line (!!) options to the server.

Maybe this bit of documentation is not explicit enough; some additional
examples might clarify things.

--
Álvaro Herrera 48°01'N 7°57'E — https://www.EnterpriseDB.com/

#8Stefan Badenhorst
Stefan.Badenhorst@mi-c3.com
In reply to: Alvaro Herrera (#7)
Re: Missing documentation

Thanks! This helps.

On Thu, Nov 3, 2022, 18:40 Alvaro Herrera <alvherre@alvh.no-ip.org> wrote:

On 2022-Nov-03, Tom Lane wrote:

Stefan Badenhorst <Stefan.Badenhorst@mi-c3.com> writes:

I am using a prometheus exporter:
https://github.com/prometheus-community/postgres_exporter/

Hmm, well, maybe prometheus is doing something with that part of the URL.
There's no such behavior in Postgres itself, though.

Yeah, that part of the connection URI accepts libpq options, not
Postgres-server options. The only way that you can pass options to the
backend is to use "options=-c foo=bar" in the URI, but both the
whitespace and the second equals sign need to be URI-escaped, so you end
up with something like this:

?sslmode=disable&options=-c%20jit%3Doff

This is explained (to some extent) in "34.1.1.2 Connection URIs",
https://www.postgresql.org/docs/current/libpq-connect.html#id-1.7.3.8.3.6

and later "34.1.2 Parameter Key Words" explains that the parameter
"options" is used to pass command-line (!!) options to the server.

Maybe this bit of documentation is not explicit enough; some additional
examples might clarify things.

--
Álvaro Herrera 48°01'N 7°57'E —
https://www.EnterpriseDB.com/

--

Email
Disclaimer

This email is
proprietary to MI-C3 and is intended only for the person to whom it is
addressed. It may contain confidential and privileged  information. If you
have received this email in error, please notify the sender and delete this
email, which must not be copied, distributed or disclosed to any other
person. Any views or opinions presented are solely those of the author and
do not necessarily represent those of MI-C3. Since this communication was
affected via email, MI-C3 cannot guarantee that it is secure or error-free
as information could be intercepted, corrupted, lost, destroyed, arrive
late or incomplete, or contain viruses. MI-C3 does not accept liability for
any errors or omissions in the contents of this message or for any damage
resulting from the opening of this message should it contain a virus.