Thread: 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 functionpg_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
Attachment
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
Ibrar Ahmed
> Please add that to commitfest. Done: https://commitfest.postgresql.org/24/2261/ regards, Sergei
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?
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 needto join pg_database relation, but for obtaining an username you just need pg_get_userbyid(). So it will be useful notto 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
Attachment
Hello Thank you for attention! I marked CF entry as returned with feedback. regards, Sergei