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 по дате отправления: