From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Alvaro Herrera <alvherre(at)2ndquadrant(dot)com> |
Cc: | Amit Langote <Langote_Amit_f8(at)lab(dot)ntt(dot)co(dot)jp>, Robert Haas <robertmhaas(at)gmail(dot)com>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: no partition pruning when partitioning using array type |
Date: | 2018-07-09 21:59:16 |
Message-ID: | 11760.1531173556@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Alvaro Herrera <alvherre(at)2ndquadrant(dot)com> writes:
> Tracing it down, turns out that transformPartitionBoundValue gets from
> coerce_to_target_type a CoerceToDomain node. It then tries to apply
> expression_planner() to simplify the expression, but that one doesn't
> want anything to do with a domain coercion (for apparently good reasons,
> given other comments in that file).
Quite. Suppose you did
create domain overint as int;
create table pt (a overint) partition by range (a);
create table pt1 partition of pt for values from (0) to (100);
and the system took it, and then you did
alter domain overint add check (value > 100);
What happens now?
> However, if we take out the
> expression_planner() and replace it with a call to
> strip_implicit_coercions(), not only it magically starts working, but
> also the regression tests start failing with the attached diff, which
> seems a Good Thing to me.
Why would you find that to be a good thing? The prohibition against
mutable coercions seems like something we need here, for more or less
the same reason in the domain example.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Konstantin Knizhnik | 2018-07-09 22:02:12 | Re: WAL prefetch |
Previous Message | Alvaro Herrera | 2018-07-09 21:46:10 | Re: no partition pruning when partitioning using array type |