Re: Coercing compound types to use generic ROW comparison operators

From: "Merlin Moncure" <mmoncure(at)gmail(dot)com>
To: "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: "Randall Lucas" <rlucas(at)tercent(dot)com>, pgsql-general(at)postgresql(dot)org
Subject: Re: Coercing compound types to use generic ROW comparison operators
Date: 2007-10-12 12:54:44
Message-ID: b42b73150710120554g6064d1cdw2c43697a8e7d9be6@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 10/11/07, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> Randall Lucas <rlucas(at)tercent(dot)com> writes:
> > Still, this would fail in a nested situation because it wouldn't
> > recurse (if col1 of the compound type were another compound type,
> > ferinstance), as would your suggestion above. It might be worthwhile
> > to allow choosing to use the default ROW comparison operator at
> > composite type creation (which would provide a more elegant solution to
> > nested situations).
>
> You are incorrectly supposing that there *is* such an animal as a
> default row comparison operator --- actually, ROW() = ROW() is expanded
> at parse time into field-by-field comparisons. This is usually a good
> thing since it gives the planner more flexibility.

AIUI, the biggest problem with the current behavior is that there is
no way to usefully index composite types, it looks like

create index bar_idx on bar(f);
create index bar_idx on bar((f).*);
create index bar_idx on bar((f).a, (f).b);

are all invalid. the only way to do it that i can see is to create a
separate function for each field of the composite you want to index.

merlin

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Alexander Kuprijanov 2007-10-12 13:11:16 different date-time in base and in system
Previous Message Tommy Gildseth 2007-10-12 12:04:53 Re: ORDER BY - problem with NULL values