Repair find_inheritance_children with no active snapshot

When working on a scan with only a catalog snapshot, we may not have an
ActiveSnapshot set.  If we were to come across a detached partition,
that would cause a crash.  Fix by only ignoring detached partitions when
there's an active snapshot.
This commit is contained in:
Alvaro Herrera 2021-04-08 00:46:14 -04:00
parent a3027e1e7f
commit 4131f755d5
No known key found for this signature in database
GPG Key ID: 1C20ACB9D5C564AE
1 changed files with 5 additions and 2 deletions

View File

@ -106,10 +106,13 @@ find_inheritance_children(Oid parentrelId, bool include_detached,
*
* The reason for this check is that we want to avoid seeing the
* partition as alive in RI queries during REPEATABLE READ or
* SERIALIZABLE transactions.
* SERIALIZABLE transactions. (If there's no active snapshot set,
* that means we're not running a user query, so it's OK to always
* include detached partitions in that case.)
*/
if (((Form_pg_inherits) GETSTRUCT(inheritsTuple))->inhdetachpending &&
!include_detached)
!include_detached &&
ActiveSnapshotSet())
{
TransactionId xmin;
Snapshot snap;