Commit 4131f755 authored by Alvaro Herrera's avatar Alvaro Herrera

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.
parent a3027e1e
...@@ -106,10 +106,13 @@ find_inheritance_children(Oid parentrelId, bool include_detached, ...@@ -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 * The reason for this check is that we want to avoid seeing the
* partition as alive in RI queries during REPEATABLE READ or * 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 && if (((Form_pg_inherits) GETSTRUCT(inheritsTuple))->inhdetachpending &&
!include_detached) !include_detached &&
ActiveSnapshotSet())
{ {
TransactionId xmin; TransactionId xmin;
Snapshot snap; Snapshot snap;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment