Re: Compute attr_needed for child relations (was Re: inherit support for foreign tables) - Mailing list pgsql-hackers

From Etsuro Fujita
Subject Re: Compute attr_needed for child relations (was Re: inherit support for foreign tables)
Date
Msg-id 53F5BC25.7010400@lab.ntt.co.jp
Whole thread Raw
In response to Re: Compute attr_needed for child relations (was Re: inherit support for foreign tables)  (Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>)
Responses Re: Compute attr_needed for child relations (was Re: inherit support for foreign tables)
List pgsql-hackers
(2014/08/21 13:21), Ashutosh Bapat wrote:
> On Wed, Aug 20, 2014 at 3:25 PM, Etsuro Fujita
> <fujita.etsuro@lab.ntt.co.jp <mailto:fujita.etsuro@lab.ntt.co.jp>> wrote:

>     Hi Ashutish,

I am sorry that I mistook your name's spelling.

>     (2014/08/14 22:30), Ashutosh Bapat wrote:
>
>         On Thu, Aug 14, 2014 at 10:05 AM, Etsuro Fujita
>         <fujita.etsuro@lab.ntt.co.jp
>         <mailto:fujita.etsuro@lab.ntt.co.jp>
>         <mailto:fujita.etsuro@lab.ntt.__co.jp
>         <mailto:fujita.etsuro@lab.ntt.co.jp>>> wrote:
>
>              (2014/08/08 18:51), Etsuro Fujita wrote:
>               >>> (2014/06/30 22:48), Tom Lane wrote:
>               >>>> I wonder whether it isn't time to change that.  It
>         was coded
>              like that
>               >>>> originally only because calculating the values
>         would've been a
>              waste of
>               >>>> cycles at the time.  But this is at least the third place
>              where it'd be
>               >>>> useful to have attr_needed for child rels.

>              There was a problem with the previous patch, which will be
>         described
>              below.  Attached is the updated version of the patch
>         addressing that.

>         Here are some more comments

>         attr_needed also has the attributes used in the restriction
>         clauses as
>         seen in distribute_qual_to_rels(), so, it looks unnecessary to call
>         pull_varattnos() on the clauses in baserestrictinfo in functions
>         check_selective_binary___conversion(),
>         remove_unused_subquery___outputs(),
>         check_index_only().

>     IIUC, I think it's *necessary* to do that in those functions since
>     the attributes used in the restriction clauses in baserestrictinfo
>     are not added to attr_needed due the following code in
>     distribute_qual_to_rels.

> That's right. Thanks for pointing that out.

>         Although in case of RTE_RELATION, the 0th entry in attr_needed
>         corresponds to FirstLowInvalidHeapAttributeNu__mber + 1, it's
>         always safer
>         to use it is RelOptInfo::min_attr, in case get_relation_info()
>         wants to
>         change assumption or somewhere down the line some other part of code
>         wants to change attr_needed information. It may be unlikely, that it
>         would change, but it will be better to stick to comments in
>         RelOptInfo
>            443     AttrNumber  min_attr;       /* smallest attrno of rel
>         (often
>         <0) */
>            444     AttrNumber  max_attr;       /* largest attrno of rel */
>            445     Relids     *attr_needed;    /* array indexed [min_attr ..
>         max_attr] */

>     Good point!  Attached is the revised version of the patch.

> If the patch is not in the commit-fest, can you please add it there?

I've already done that:

https://commitfest.postgresql.org/action/patch_view?id=1529

>  From my side, the review is done, it should be marked "ready for
> committer", unless somebody else wants to review.

Many thanks!

Best regards,
Etsuro Fujita



pgsql-hackers by date:

Previous
From: Sawada Masahiko
Date:
Subject: Re: pg_receivexlog --status-interval add fsync feedback
Next
From: Etsuro Fujita
Date:
Subject: Re: inherit support for foreign tables