On Wed, Oct 6, 2010 at 2:48 AM, Trigve <trigves@xxxxxxxxx> wrote: > Hi, > I'm trying to make a custom composite type and use it as a PK and FK. > When adding FK to table I've got trhis error: operator is not unique: > "BigintRef" pg_catalog.= "BigintRef" (see below). Here is my type > definition with operator: > > CREATE TYPE "BigintRef" AS > ("Value" bigint, > "Null" boolean); > > CREATE OR REPLACE FUNCTION bigintref_op_eq("BigintRef", "BigintRef") > RETURNS boolean AS > 'SELECT ($1."Null" = TRUE AND $2."Null" = TRUE) OR ($1."Null" = FALSe > AND $2."Null" = FALSE AND $1."Value" = $2."Value")' > LANGUAGE sql IMMUTABLE > COST 100; you shouldn't have to do this -- as of 8.4 record types can be directly used in comparisons w/o going custom operator route and I would highly advise against redefining the = operator to use non-standard behavior. postgres=# create table foo(a int, b bool); CREATE TABLE Time: 11.433 ms postgres=# select (1, true)::foo = (2,false)::foo; ?column? ---------- f (1 row) Time: 1.424 ms merlin -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general