Thread: User defined type - analyze problem
Hi *,
I have a little problem with a user defined type:
I constructed a type called "pointnd" which represents a multi-dimensional point. This point is subsequently used as an array type in another user defined type, like the following:
CREATE TYPE document AS (words tsvector, points _pointnd);
After some time, I have some problems with this type, obviously. The postgres process keeps on reporting the following line:
ERROR: could not identify a comparison function for type pointnd
CONTEXT: automatic analyze of table "test.public.documents"
I read somewhere, that this can be solved by preparing a operator class for btree and passing a comparison function for equality there. I did this with the following lines:
CREATE OPERATOR CLASS pointnd_btree_class
DEFAULT FOR TYPE pointnd USING btree AS
OPERATOR 3 =(pointnd, pointnd)
;
However, the postges process still reports the same errors after having set up the btree operator class.
How can I solve this issue?
Best regards
Carsten Kropf
Carsten Kropf <ckropf2@fh-hof.de> writes: > I read somewhere, that this can be solved by preparing a operator class for btree and passing a comparison function forequality there. I did this with the following lines: > CREATE OPERATOR CLASS pointnd_btree_class > DEFAULT FOR TYPE pointnd USING btree AS > OPERATOR 3 =(pointnd, pointnd) > ; You need an actual, usable btree operator class, not one-sixth of one ... this is lacking the other four operators and the support function. regards, tom lane
Thanks a lot, this helped me with the messages. I thought, I would only have to define a operator class that fullfills atleast the equals strategy. I didn't know, that I would have to provide a "full" btree operator class. Best regards Carsten Kropf Am 03.05.2010 um 15:56 schrieb Tom Lane: > Carsten Kropf <ckropf2@fh-hof.de> writes: >> I read somewhere, that this can be solved by preparing a operator class for btree and passing a comparison function forequality there. I did this with the following lines: >> CREATE OPERATOR CLASS pointnd_btree_class >> DEFAULT FOR TYPE pointnd USING btree AS >> OPERATOR 3 =(pointnd, pointnd) >> ; > > You need an actual, usable btree operator class, not one-sixth of one ... > this is lacking the other four operators and the support function. > > regards, tom lane > > -- > Sent via pgsql-general mailing list (pgsql-general@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-general