Re: Get more from indices. - Mailing list pgsql-hackers

From Kyotaro HORIGUCHI
Subject Re: Get more from indices.
Date
Msg-id 20140411.141240.257315020.horiguchi.kyotaro@lab.ntt.co.jp
Whole thread Raw
In response to Re: Get more from indices.  (Etsuro Fujita <fujita.etsuro@lab.ntt.co.jp>)
Responses Re: Get more from indices.
List pgsql-hackers
Hi, sorry for the absense. I've been back.

Attached is the patch following the discussion below.

> >> (2014/04/10 0:08), Tom Lane wrote:
> >>> TBH I think that's barely the tip of the iceberg of cases where this
> >>> patch will get the wrong answer.
> > 
> >>> Also, I don't see it doing anything to check the ordering
> >>> of multiple index columns
> > 
> >> I think that the following code in index_pathkeys_are_extensible() would
> >> check the ordering:
> >> +    if (!pathkeys_contained_in(pathkeys, root->query_pathkeys))
> >> +        return false;
> > 
> > Hm ... if you're relying on that, then what's the point of the new loop
> > at all?
> 
> The point is that from the discussion [1], we allow the index pathkeys
> to be extended to query_pathkeys if each *remaining* pathkey in
> query_pathkey is a Var belonging to the indexed relation.  The code is
> confusing, though.  Sorry, that is my faults.

Hmm, I found that the iterations for the part that already
checked by pathkeys_contained_in are not only needless but a bit
heavy. And the loop seems a little verbose. I did for the patch,
in index_pathkeys_are_extensible,
- Avoiding duplicate check with pathkeys_contained_in.
  I put similar code to list_nth_cell since it is not exposed  outside of list.c.
- Add comment to clarify the purpose of the loop.
- Simplify the check for the "remaining" keycolumns




> Thanks,
> 
> [1] http://www.postgresql.org/message-id/29637.1389064686@sss.pgh.pa.us
> 
> Best regards,
> Etsuro Fujita
> 
> 
> -- 
> Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-hackers



pgsql-hackers by date:

Previous
From: Amit Kapila
Date:
Subject: Re: [BUG FIX] Compare returned value by socket() against PGINVALID_SOCKET instead of < 0
Next
From: Kyotaro HORIGUCHI
Date:
Subject: Re: Get more from indices.