Re: Runtime pruning problem

David Rowley <david.rowley@2ndquadrant.com>

From: David Rowley <david.rowley@2ndquadrant.com>
To: Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>
Cc: Yuzuko Hosoya <hosoya.yuzuko@lab.ntt.co.jp>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2019-04-17T02:29:17Z
Lists: pgsql-hackers
On Wed, 17 Apr 2019 at 13:13, Amit Langote
<Langote_Amit_f8@lab.ntt.co.jp> wrote:
> When you see this:
>
> explain select * from t1 where dt = current_date + 400;
>                          QUERY PLAN
> ────────────────────────────────────────────────────────────
>  Append  (cost=0.00..198.42 rows=44 width=8)
>    Subplans Removed: 3
>    ->  Seq Scan on t1_1  (cost=0.00..49.55 rows=11 width=8)
>          Filter: (dt = (CURRENT_DATE + 400))
> (4 rows)
>
> Doesn't this give an impression that t1_1 *matches* the WHERE condition
> where it clearly doesn't?  IMO, contorting explain.c to show an empty
> Append like what Hosoya-san suggests doesn't sound too bad given that the
> first reaction to seeing the above result is to think it's a bug of
> partition pruning.

Where do you think the output list for EXPLAIN VERBOSE should put the
output column list in this case? On the Append node, or just not show
them?

-- 
 David Rowley                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services



Commits

  1. Put back regression test case in a more robust form.

  2. Allow executor startup pruning to prune all child nodes.

  3. Further adjust EXPLAIN's choices of table alias names.