Documentation incorrect pg_partition_root function description.

Started by PG Bug reporting formabout 1 month ago2 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/18/functions-admin.html
Description:

https://www.postgresql.org/docs/current/functions-admin.html

pg_partition_root ( regclass ) → regclass
Returns the top-most parent of the partition tree to which the given
relation belongs. Returns NULL if the relation does not exist or is not a
partition or partitioned table.

"does not exist" is not correct description, if table does not exist, we'll
get an error, not NULL:

EXAMPLE:
SELECT * FROM pg_partition_root( 'nonexisting_table' );

RESULT:
SQL Error [42P01]: ERROR: relation "nonexisting_table" does not exist
Position: 34

#2Laurenz Albe
laurenz.albe@cybertec.at
In reply to: PG Bug reporting form (#1)
Re: Documentation incorrect pg_partition_root function description.

On Sat, 2026-02-28 at 08:36 +0000, PG Doc comments form wrote:

The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/18/functions-admin.html
Description:

https://www.postgresql.org/docs/current/functions-admin.html

pg_partition_root ( regclass ) → regclass
Returns the top-most parent of the partition tree to which the given
relation belongs. Returns NULL if the relation does not exist or is not a
partition or partitioned table.

"does not exist" is not correct description, if table does not exist, we'll
get an error, not NULL:

EXAMPLE:
SELECT * FROM pg_partition_root( 'nonexisting_table' );

RESULT:
SQL Error [42P01]: ERROR: relation "nonexisting_table" does not exist
Position: 34

The error you are getting is *not* from pg_partition_root(), but from the
cast from "text" to "regclass":

SELECT 'nonexisting_table'::regclass;
ERROR: relation "nonexisting_table" does not exist
LINE 1: SELECT 'nonexisting_table'::regclass;
^

And if you take a "regclass" that corresponds to an object ID that is not
the object ID of any existing relation, you get a NULL result:

SELECT pg_partition_root('12345'::regclass);

pg_partition_root
-------------------

(1 row)

Yours,
Laurenz Albe