2018-04-06 8:21 GMT+02:00 Ashutosh Bapat <ashutosh.ba...@enterprisedb.com>:

> On Tue, Apr 3, 2018 at 10:48 AM, Ashutosh Bapat
> <ashutosh.ba...@enterprisedb.com> wrote:
> >>
> >> Why is this done appropriately at ExecInitExpr() time, rather than at
> >> plan time? Seems like eval_const_expressions() would be a bit more
> >> appropriate (being badly named aside...)?
> >
> > That seems to be a better idea. Here's patch.
> >
>
> Previous patch didn't try to fold the ConvertRowtypeExpr::arg into a Const.
>
> postgres=# create table t1 (a int, b int, c int) partition by range(a);
> postgres=# create table t1p1 partition of t1 for values from (0) to
> (100) partition by range(b);
> postgres=# create table t1p1p1 partition of t1p1 for values from (0) to
> (50);
> postgres=# explain verbose select (1, 2, 3)::t1p1p1::t1p1::t1; --
> notice Rowexpression here.
>                 QUERY PLAN
> -------------------------------------------
>  Result  (cost=0.00..0.01 rows=1 width=32)
>    Output: (ROW(1, 2, 3)::t1p1p1)::t1
> (2 rows)
>
> Here's patch fixing that. With this patch
> postgres=# explain verbose select (1, 2, 3)::t1p1p1::t1p1::t1;
>                 QUERY PLAN
> -------------------------------------------
>  Result  (cost=0.00..0.01 rows=1 width=32)
>    Output: '(1,2,3)'::t1
> (2 rows)
>
>
+1

Pavel


> --
> Best Wishes,
> Ashutosh Bapat
> EnterpriseDB Corporation
> The Postgres Database Company
>

Reply via email to