diff --git a/src/backend/optimizer/util/inherit.c b/src/backend/optimizer/util/inherit.c index 6e1d2b14bc4..82d7215b05b 100644 --- a/src/backend/optimizer/util/inherit.c +++ b/src/backend/optimizer/util/inherit.c @@ -36,6 +36,7 @@ #include "parser/parse_relation.h" #include "partitioning/partdesc.h" #include "partitioning/partprune.h" +#include "utils/injection_point.h" #include "utils/rel.h" @@ -334,6 +335,10 @@ expand_partitioned_rtentry(PlannerInfo *root, RelOptInfo *relinfo, partdesc = PartitionDirectoryLookup(root->glob->partition_directory, parentrel); + /* test-only: pause after a sub-partitioned table's PartitionDesc is read */ + if (parentrel->rd_rel->relispartition) + INJECTION_POINT("expand-subpartdesc-read", NULL); + /* A partitioned table should always have a partition descriptor. */ Assert(partdesc); diff --git a/src/backend/optimizer/util/plancat.c b/src/backend/optimizer/util/plancat.c index 22e0e8b11f8..38258771b0c 100644 --- a/src/backend/optimizer/util/plancat.c +++ b/src/backend/optimizer/util/plancat.c @@ -49,6 +49,7 @@ #include "storage/bufmgr.h" #include "tcop/tcopprot.h" #include "utils/builtins.h" +#include "utils/injection_point.h" #include "utils/lsyscache.h" #include "utils/partcache.h" #include "utils/rel.h" @@ -134,6 +135,9 @@ get_relation_info(PlannerInfo *root, Oid relationObjectId, bool inhparent, */ relation = table_open(relationObjectId, NoLock); + /* test-only: pause after expression preprocessing (inlining), before index_open() */ + INJECTION_POINT("get-relation-info-start", NULL); + /* * Relations without a table AM can be used in a query only if they are of * special-cased relkinds. This check prevents us from crashing later if,