Sorry for the absense. At Sun, 4 Nov 2018 16:26:12 +0100, Dmitry Dolgov <9erthali...@gmail.com> wrote in <ca+q6zcwmcnnmmq-csudf0pqr1_esat5-vcu5uognfs3eac4...@mail.gmail.com> > > On Sun, 4 Nov 2018 at 15:48, Andrew Gierth <and...@tao11.riddles.org.uk> > > wrote: > > > > >>>>> "Dmitry" == Dmitry Dolgov <9erthali...@gmail.com> writes: > > > > Dmitry> This patch went through the last tree commit fests without any > > Dmitry> noticeable activity, but cfbot says it still applies and > > Dmitry> doesn't break any tests. The patch itself is rather small, and > > Dmitry> I could reproduce ~20% of performance improvements while > > Dmitry> running the same scripts under pgbench (although not in all > > Dmitry> cases), but probably we need to find someone to take over it. > > Dmitry> Does anyone wants to do so, maybe Kyotaro? > > > > I'll deal with it. > > Thanks!
My last comment was the while() loop does nothing. Ashutosh said that it is on the model of RelabelType. I examined the code for T_RelabelType again and it is intending that the ece_mutator can convert something (specifically only CollateExpr) to RelableType, then reduce the nested Relabels. So the order is not wrong in this perspective. So I don't object to the current patch, but it needs test like attached. regards. -- Kyotaro Horiguchi NTT Open Source Software Center
>From 45ef5b753069eb89ab5139828884fbdbf0958778 Mon Sep 17 00:00:00 2001 From: Kyotaro Horiguchi <horiguchi.kyot...@lab.ntt.co.jp> Date: Tue, 6 Nov 2018 17:12:17 +0900 Subject: [PATCH 2/2] Test code for Optimize nested ConvertRowtypExprs --- src/test/regress/expected/inherit.out | 18 ++++++++++++++++++ src/test/regress/sql/inherit.sql | 5 +++++ 2 files changed, 23 insertions(+) diff --git a/src/test/regress/expected/inherit.out b/src/test/regress/expected/inherit.out index 4f29d9f891..1474ed8190 100644 --- a/src/test/regress/expected/inherit.out +++ b/src/test/regress/expected/inherit.out @@ -764,6 +764,8 @@ NOTICE: drop cascades to table c1 -- tables. See the pgsql-hackers thread beginning Dec. 4/04 create table base (i integer); create table derived () inherits (base); +create table more_derived (like derived, b int) inherits (derived); +NOTICE: merging column "i" with inherited definition insert into derived (i) values (0); select derived::base from derived; derived @@ -777,6 +779,22 @@ select NULL::derived::base; (1 row) +-- remove redundant conversions. +explain (verbose on, costs off) select row(i, b)::more_derived::derived::base from more_derived; + QUERY PLAN +------------------------------------------- + Seq Scan on public.more_derived + Output: (ROW(i, b)::more_derived)::base +(2 rows) + +explain (verbose on, costs off) select (1, 2)::more_derived::derived::base; + QUERY PLAN +----------------------- + Result + Output: '(1)'::base +(2 rows) + +drop table more_derived; drop table derived; drop table base; create table p1(ff1 int); diff --git a/src/test/regress/sql/inherit.sql b/src/test/regress/sql/inherit.sql index a6e541d4da..8308330fed 100644 --- a/src/test/regress/sql/inherit.sql +++ b/src/test/regress/sql/inherit.sql @@ -237,9 +237,14 @@ drop table p1 cascade; -- tables. See the pgsql-hackers thread beginning Dec. 4/04 create table base (i integer); create table derived () inherits (base); +create table more_derived (like derived, b int) inherits (derived); insert into derived (i) values (0); select derived::base from derived; select NULL::derived::base; +-- remove redundant conversions. +explain (verbose on, costs off) select row(i, b)::more_derived::derived::base from more_derived; +explain (verbose on, costs off) select (1, 2)::more_derived::derived::base; +drop table more_derived; drop table derived; drop table base; -- 2.16.3