Fix uninitialized memory bug

Have interested callers of find_inheritance_children set the
detached_exist value to false prior to calling it, so that that routine
only has to set it true in the rare cases where it is necessary.  Don't
touch it otherwise.

Per buildfarm member thorntail (which reported a UBSan failure here).
This commit is contained in:
Alvaro Herrera 2021-04-22 16:04:48 -04:00
parent 84f15ccd4c
commit 43b55ec4bc
No known key found for this signature in database
GPG Key ID: 1C20ACB9D5C564AE
2 changed files with 2 additions and 4 deletions

View File

@ -53,7 +53,7 @@ typedef struct SeenRelsEntry
* against possible DROPs of child relations.
*
* If a partition's pg_inherits row is marked "detach pending",
* *detached_exist (if not null) is set true, otherwise it is set false.
* *detached_exist (if not null) is set true.
*
* If omit_detached is true and there is an active snapshot (not the same as
* the catalog snapshot used to scan pg_inherits!) and a pg_inherits tuple
@ -84,9 +84,6 @@ find_inheritance_children(Oid parentrelId, bool omit_detached,
if (!has_subclass(parentrelId))
return NIL;
if (detached_exist)
*detached_exist = false;
/*
* Scan pg_inherits and build a working array of subclass OIDs.
*/

View File

@ -131,6 +131,7 @@ RelationBuildPartitionDesc(Relation rel, bool omit_detached)
* concurrently, whatever this function returns will be accurate as of
* some well-defined point in time.
*/
detached_exist = false;
inhoids = find_inheritance_children(RelationGetRelid(rel), omit_detached,
NoLock, &detached_exist);
nparts = list_length(inhoids);