Re: Optimizing nested ConvertRowtypeExpr execution
От | Ashutosh Bapat |
---|---|
Тема | Re: Optimizing nested ConvertRowtypeExpr execution |
Дата | |
Msg-id | CAFjFpReKyuz1BVDHq0_MZ7+3LEb_5TsyUMuB4YPHD1q5L4rp_g@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Optimizing nested ConvertRowtypeExpr execution (Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>) |
Ответы |
Re: Optimizing nested ConvertRowtypeExpr execution
|
Список | pgsql-hackers |
On Tue, Apr 3, 2018 at 10:48 AM, Ashutosh Bapat <ashutosh.bapat@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) -- Best Wishes, Ashutosh Bapat EnterpriseDB Corporation The Postgres Database Company
Вложения
В списке pgsql-hackers по дате отправления: