Thank you. Seems, it works, at least I can't find a counter-example for that.
Tom Lane wrote:
> Teodor Sigaev <teodor@sigaev.ru> writes:
>> I'm not understand why postgres prefers to sort table instead of using
>> index only scan when query is a simple inner join on composite type.
>> Query with equality clause with constant works fine with index scan but
>> join not. Could somebody point me why? Thank you.
>
> Hmm ... the reason why not seems to be that canonicalize_ec_expression()
> improperly adds a RelabelType node, causing the composite-type Vars to not
> be recognized as matching the eclass they should match. The attached
> patch fixes it and doesn't seem to break anything in the regression tests.
>
> This raises the question of why we don't treat type RECORD more like a
> true polymorphic type, but that's a can of worms I don't particularly want
> to open right now. For the moment, this is the only IsPolymorphicType
> call in the planner AFAICS, so there's some reason to hope that we don't
> have more bugs of the same ilk.
>
> regards, tom lane
>
--
Teodor Sigaev E-mail: teodor@sigaev.ru
WWW: http://www.sigaev.ru/