[PATCH] Rename "getdatabaseencoding()" to "pg_database_encoding()", and document

Started by Ian Lawrence Barwick9 days ago7 messageshackers
Jump to latest
#1Ian Lawrence Barwick
barwick@gmail.com

Hi

It was noted here [1]/messages/by-id/allgZ34IHVFZo35b@paquier.xyz that we have the undocumented SQL function
"getdatabaseencoding()", used mainly in regression tests and a couple
of psql queries. While considering a documentation patch, it occurred
to me that it's a horrible function name which doesn't look like other
public functions, and we already have "pg_client_encoding()", so why not
rename it to match that while we're at it?

The only minor niggle I can see is that psql uses "getdatabaseencoding()"
for tab completion of collation names, and it looks like it would be
tricky/ugly to try and shoehorn in version-dependent queries for backwards
compatibility, but we can just substitute "current_setting('server_encoding')".

[1]: /messages/by-id/allgZ34IHVFZo35b@paquier.xyz

Regards

Ian Barwick

Attachments:

v1-0001-Rename-getdatabaseencoding-to-pg_database_encodin.patchapplication/octet-stream; name=v1-0001-Rename-getdatabaseencoding-to-pg_database_encodin.patchDownload+105-82
#2Daniel Gustafsson
daniel@yesql.se
In reply to: Ian Lawrence Barwick (#1)
Re: [PATCH] Rename "getdatabaseencoding()" to "pg_database_encoding()", and document

On 17 Jul 2026, at 08:44, Ian Lawrence Barwick <barwick@gmail.com> wrote:

It was noted here [1] that we have the undocumented SQL function
"getdatabaseencoding()", used mainly in regression tests and a couple
of psql queries. While considering a documentation patch, it occurred
to me that it's a horrible function name which doesn't look like other
public functions, and we already have "pg_client_encoding()", so why not
rename it to match that while we're at it?

This function seems to be referred to in extensions, how about adding keeping
the existin name and adding the new name as an alias? It would keep existing
code from breaking and cause less churn in the code.

--
Daniel Gustafsson

#3Thom Brown
thom@linux.com
In reply to: Daniel Gustafsson (#2)
Re: [PATCH] Rename "getdatabaseencoding()" to "pg_database_encoding()", and document

On Fri, 17 Jul 2026, 08:24 Daniel Gustafsson, <daniel@yesql.se> wrote:

On 17 Jul 2026, at 08:44, Ian Lawrence Barwick <barwick@gmail.com>

wrote:

It was noted here [1] that we have the undocumented SQL function
"getdatabaseencoding()", used mainly in regression tests and a couple
of psql queries. While considering a documentation patch, it occurred
to me that it's a horrible function name which doesn't look like other
public functions, and we already have "pg_client_encoding()", so why not
rename it to match that while we're at it?

This function seems to be referred to in extensions, how about adding
keeping
the existin name and adding the new name as an alias? It would keep
existing
code from breaking and cause less churn in the code.

Why don't extensions use current_setting('server_encoding')?

Thom

Show quoted text
#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Daniel Gustafsson (#2)
Re: [PATCH] Rename "getdatabaseencoding()" to "pg_database_encoding()", and document

Daniel Gustafsson <daniel@yesql.se> writes:

On 17 Jul 2026, at 08:44, Ian Lawrence Barwick <barwick@gmail.com> wrote:
It was noted here [1] that we have the undocumented SQL function
"getdatabaseencoding()", used mainly in regression tests and a couple
of psql queries. While considering a documentation patch, it occurred
to me that it's a horrible function name which doesn't look like other
public functions, and we already have "pg_client_encoding()", so why not
rename it to match that while we're at it?

This function seems to be referred to in extensions, how about adding keeping
the existin name and adding the new name as an alias? It would keep existing
code from breaking and cause less churn in the code.

Yeah, the odds that we would remove the old name (without a multi-year
deprecation period) are zero, full stop.

However, I can't really get excited about this proposal in the first
place. There are plenty of ugly and inconsistent names in Postgres,
and an enormous amount of more-valuable work to do.

regards, tom lane

#5Ian Lawrence Barwick
barwick@gmail.com
In reply to: Tom Lane (#4)
Re: [PATCH] Rename "getdatabaseencoding()" to "pg_database_encoding()", and document

2026年7月17日(金) 23:29 Tom Lane <tgl@sss.pgh.pa.us>:

Daniel Gustafsson <daniel@yesql.se> writes:

On 17 Jul 2026, at 08:44, Ian Lawrence Barwick <barwick@gmail.com> wrote:
It was noted here [1] that we have the undocumented SQL function
"getdatabaseencoding()", used mainly in regression tests and a couple
of psql queries. While considering a documentation patch, it occurred
to me that it's a horrible function name which doesn't look like other
public functions, and we already have "pg_client_encoding()", so why not
rename it to match that while we're at it?

This function seems to be referred to in extensions, how about adding keeping
the existin name and adding the new name as an alias? It would keep existing
code from breaking and cause less churn in the code.

Yeah, the odds that we would remove the old name (without a multi-year
deprecation period) are zero, full stop.

However, I can't really get excited about this proposal in the first
place. There are plenty of ugly and inconsistent names in Postgres,
and an enormous amount of more-valuable work to do.

Makes sense.

Here's a patch to at least document it, in the table "Other String
Functions and Operators"
(as "pg_client_encoding()" is already there).

Regards

Ian Barwick

Attachments:

v1-0001-Document-getdatabaseencoding.patchtext/x-patch; charset=US-ASCII; name=v1-0001-Document-getdatabaseencoding.patchDownload+17-1
#6Thom Brown
thom@linux.com
In reply to: Ian Lawrence Barwick (#5)
Re: [PATCH] Rename "getdatabaseencoding()" to "pg_database_encoding()", and document

On Sat, 18 Jul 2026, 06:05 Ian Lawrence Barwick, <barwick@gmail.com> wrote:

2026年7月17日(金) 23:29 Tom Lane <tgl@sss.pgh.pa.us>:

Daniel Gustafsson <daniel@yesql.se> writes:

On 17 Jul 2026, at 08:44, Ian Lawrence Barwick <barwick@gmail.com>

wrote:

It was noted here [1] that we have the undocumented SQL function
"getdatabaseencoding()", used mainly in regression tests and a couple
of psql queries. While considering a documentation patch, it occurred
to me that it's a horrible function name which doesn't look like other
public functions, and we already have "pg_client_encoding()", so why

not

rename it to match that while we're at it?

This function seems to be referred to in extensions, how about adding

keeping

the existin name and adding the new name as an alias? It would keep

existing

code from breaking and cause less churn in the code.

Yeah, the odds that we would remove the old name (without a multi-year
deprecation period) are zero, full stop.

However, I can't really get excited about this proposal in the first
place. There are plenty of ugly and inconsistent names in Postgres,
and an enormous amount of more-valuable work to do.

Makes sense.

Here's a patch to at least document it, in the table "Other String
Functions and Operators"
(as "pg_client_encoding()" is already there).

I would go in the opposite direction; announce its deprecation, and mention
the alternative in the release notes. Surely we don't want to make it more
difficult to get rid of?

Thom

Show quoted text
#7Ian Lawrence Barwick
barwick@gmail.com
In reply to: Thom Brown (#6)
Re: [PATCH] Rename "getdatabaseencoding()" to "pg_database_encoding()", and document

2026年7月18日(土) 16:57 Thom Brown <thom@linux.com>:

On Sat, 18 Jul 2026, 06:05 Ian Lawrence Barwick, <barwick@gmail.com> wrote:

2026年7月17日(金) 23:29 Tom Lane <tgl@sss.pgh.pa.us>:

Daniel Gustafsson <daniel@yesql.se> writes:

On 17 Jul 2026, at 08:44, Ian Lawrence Barwick <barwick@gmail.com> wrote:
It was noted here [1] that we have the undocumented SQL function
"getdatabaseencoding()", used mainly in regression tests and a couple
of psql queries. While considering a documentation patch, it occurred
to me that it's a horrible function name which doesn't look like other
public functions, and we already have "pg_client_encoding()", so why not
rename it to match that while we're at it?

This function seems to be referred to in extensions, how about adding keeping
the existin name and adding the new name as an alias? It would keep existing
code from breaking and cause less churn in the code.

Yeah, the odds that we would remove the old name (without a multi-year
deprecation period) are zero, full stop.

However, I can't really get excited about this proposal in the first
place. There are plenty of ugly and inconsistent names in Postgres,
and an enormous amount of more-valuable work to do.

Makes sense.

Here's a patch to at least document it, in the table "Other String
Functions and Operators"
(as "pg_client_encoding()" is already there).

I would go in the opposite direction; announce its deprecation, and mention the alternative in the release notes. Surely we don't want to make it more difficult to get rid of?

There doesn't seem to be consensus to do that. Either way, documenting its
existence would be useful to have, IMO.

Regards

Ian Barwick