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 >