Re: Generating "Subplan Removed" in EXPLAIN

From: David Rowley <dgrowleyml(at)gmail(dot)com>
To: Yugo NAGATA <nagata(at)sraoss(dot)co(dot)jp>
Cc: Justin Pryzby <pryzby(at)telsasoft(dot)com>, Bruce Momjian <bruce(at)momjian(dot)us>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: Generating "Subplan Removed" in EXPLAIN
Date: 2023-02-01 03:52:07
Message-ID: CAApHDvr8C2gdYvHN6KRLNCREnfiMZKd9dUwhTeTVH6ysS2+rJw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Wed, 1 Feb 2023 at 15:53, Yugo NAGATA <nagata(at)sraoss(dot)co(dot)jp> wrote:
> Maybe, you missed to set plan_cache_mode to force_generic_plan.
> "Subplan Removed" doesn't appear when using a custom plan.

I wouldn't say that's 100% true. The planner is only able to prune
using values which are known during planning. Constant folding is
going to evaluate any immutable functions during planning, but nothing
more.

Partition pruning might be delayed until execution time if some
expression that's being compared to the partition key is stable. e.g:

create table rp (t timestamp not null) partition by range(t);
create table rp2022 partition of rp for values from ('2022-01-01') to
('2023-01-01');
create table rp2023 partition of rp for values from ('2023-01-01') to
('2024-01-01');

explain select * from rp where t >= now();

Append (cost=0.00..95.33 rows=1506 width=8)
Subplans Removed: 1
-> Seq Scan on rp2023 rp_1 (cost=0.00..43.90 rows=753 width=8)
Filter: (t >= now())

David

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Anton A. Melnikov 2023-02-01 04:04:09 Re: odd buildfarm failure - "pg_ctl: control file appears to be corrupt"
Previous Message Amit Kapila 2023-02-01 03:35:48 Re: Logical replication timeout problem