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
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 |