>> 1. Extract information about the underlying type from the arrays, in
>> particular the size of the type?
>> 2. Apply an operator from within C?
>
> contrib/array might be a useful example of array manipulation. As for
> the other stuff, do you actually want to invoke those operators
> specifically, or are you looking for sorting? In any case you might
> prefer to use any_ordering_op, SelectSortFunction and ApplySortFunction
> rather than nailing down your own assumptions about what to compare
> with.
I think ApplySortFunction is exactly what I wanted.
I'm not sure when I'm going to get to it, but what I'd like to do is:
given an existing order relation on a type, extend it to an order on
arrays of that type. I've done it for INT4[], and it looks like the
general case is possible, just a question of figuring out which pegs
go in which slots. So far PostgreSQL's been a pleasure to work with;
kudos!
CREATE FUNCTION arr_int4_lt(int4[], int4[]) RETURNS boolean AS 'arr_ops', 'generic_lt' LANGUAGE 'C' STRICT;
CREATE FUNCTION arr_foo_lt(foo, foo) RETURNS boolean AS 'arr_ops', 'generic_lt' LANGUAGE 'C' STRICT;
etc.
--
Itai Zukerman <http://www.math-hat.com/~zukerman/>