Re: Coercing compound types to use generic ROW comparison operators - Mailing list pgsql-general

From Merlin Moncure
Subject Re: Coercing compound types to use generic ROW comparison operators
Date
Msg-id b42b73150710120900n7db28422k356a8c3cb25f24f3@mail.gmail.com
Whole thread Raw
In response to Re: Coercing compound types to use generic ROW comparison operators  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-general
On 10/12/07, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> "Merlin Moncure" <mmoncure@gmail.com> writes:
> > 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);
>
> The last case works, you just don't have enough parentheses.
>
> regression=# create type mytype as (a int, b float);
> CREATE TYPE
> regression=# create table foo(f mytype);
> CREATE TABLE
> regression=# create index fooi on foo(((f).a), ((f).b));
> CREATE INDEX

wow, thats pretty neat! (although:
create index fooi on foo(((f).a));
feels awfully weird).

for the record, creating indexes this way works fully with row
comparison strategies (in 8.2+):
select * from foo where ((f).a, (f).b) > (5, 0.6) order by (f).a, (f).b limit 1;
will use the 'fooi' index above.

merlin

pgsql-general by date:

Previous
From: "Scott Marlowe"
Date:
Subject: Re: Missing files under pg_data following power failure
Next
From: SCassidy@overlandstorage.com
Date:
Subject: Re: not work in IE