1
0
mirror of https://github.com/postgres/postgres.git synced 2025-11-19 13:42:17 +03:00

Fix crash with pg_partition_root

Trying to call the function with the top-most parent of a partition tree
was leading to a crash.  In this case the correct result is to return
the top-most parent itself.

Reported-by: Álvaro Herrera
Author: Michael Paquier
Reviewed-by: Amit Langote
Discussion: https://postgr.es/m/20190322032612.GA323@alvherre.pgsql
This commit is contained in:
Michael Paquier
2019-03-22 17:27:38 +09:00
parent fff518d051
commit 2ab6d28d23
3 changed files with 71 additions and 1 deletions

View File

@@ -189,8 +189,16 @@ pg_partition_root(PG_FUNCTION_ARGS)
if (!check_rel_can_be_partition(relid))
PG_RETURN_NULL();
/* Fetch the top-most parent */
/* fetch the list of ancestors */
ancestors = get_partition_ancestors(relid);
/*
* If the input relation is already the top-most parent, just return
* itself.
*/
if (ancestors == NIL)
PG_RETURN_OID(relid);
rootrelid = llast_oid(ancestors);
list_free(ancestors);