pg_get_databasebyid(oid)
Hello
We already have function pg_get_userbyid(oid) with lookup in pg_authid catalog. My collegue ask me can we add similar function pg_get_databasebyid(oid) with lookup in pg_databases.
It is simple function to get a database name by oid and fallback to 'unknown (OID=n)' if missing.
The proposed patch is attached. Currently I missed the tests - I doubt which file in src/test/regress/sql/ is the most suitable. pg_get_userbyid is called from privileges.sql only.
regards, Sergei
Attachments:
v1_pg_get_databasebyid.patchtext/x-diff; name=v1_pg_get_databasebyid.patchDownload+51-2
On Wed, Aug 28, 2019 at 5:38 PM Sergei Kornilov <sk@zsrv.org> wrote:
Hello
We already have function pg_get_userbyid(oid) with lookup in pg_authid
catalog. My collegue ask me can we add similar function
pg_get_databasebyid(oid) with lookup in pg_databases.
It is simple function to get a database name by oid and fallback to
'unknown (OID=n)' if missing.The proposed patch is attached. Currently I missed the tests - I doubt
which file in src/test/regress/sql/ is the most suitable. pg_get_userbyid
is called from privileges.sql only.regards, Sergei
Please add that to commitfest.
--
Ibrar Ahmed
On Wed, Aug 28, 2019 at 6:05 PM Sergei Kornilov <sk@zsrv.org> wrote:
Please add that to commitfest.
Done: https://commitfest.postgresql.org/24/2261/
regards, Sergei
Hi,
I have checked the code, the function "pg_get_userbyid" is used in many
places in code. I am just curious why we need that "pg_get_databasebyid"
function. Is there a need for this function for the user?
--
Ibrar Ahmed
Hello
Is there a need for this function for the user?
This was feature request from user. I got such comment:
This function is useful when working with pg_stat_statements. For obtaining a databаse name for particular query you need to join pg_database relation, but for obtaining an username you just need pg_get_userbyid(). So it will be useful not to join extra relation and get a database name using the similar function - pg_get_databasebyid().
regards, Sergei
On Thu, Aug 29, 2019 at 3:16 PM Sergei Kornilov <sk@zsrv.org> wrote:
Hello
Is there a need for this function for the user?
This was feature request from user. I got such comment:
This function is useful when working with pg_stat_statements. For
obtaining a databаse name for particular query you need to join pg_database
relation, but for obtaining an username you just need pg_get_userbyid(). So
it will be useful not to join extra relation and get a database name using
the similar function - pg_get_databasebyid().regards, Sergei
Hi,
I think its a user request and don't require to be in the core of
PostgreSQL.
A simple SQL function can fulfill the requirement of the user.
CREATE OR REPLACE FUNCTION pg_get_databasebyid(dboid integer) RETURNS name
AS $$
SELECT datname from pg_database WHERE oid = dboid;
$$ LANGUAGE SQL;
--
Ibrar Ahmed
On Thu, Aug 29, 2019 at 03:47:40PM +0500, Ibrar Ahmed wrote:
I think its a user request and don't require to be in the core of
PostgreSQL.
A simple SQL function can fulfill the requirement of the user.CREATE OR REPLACE FUNCTION pg_get_databasebyid(dboid integer) RETURNS name
AS $$SELECT datname from pg_database WHERE oid = dboid;
$$ LANGUAGE SQL;
Indeed, I think that we can drop the patch. FWIW, I find the
semantics of pg_get_userbyid() horrible when it comes to return a
result for a non-existing user with its own way of defining how this
information should show up. Returning NULL would be more natural, so
I don't think that we should make more functions behave the same way.
--
Michael