Bug in create operator and/or initdb

From: "John Hansen" <john(at)geeknet(dot)com(dot)au>
To: <pgsql-bugs(at)postgresql(dot)org>
Cc: "pgsql-hackers" <pgsql-hackers(at)postgresql(dot)org>
Subject: Bug in create operator and/or initdb
Date: 2005-01-30 01:56:58
Message-ID: 5066E5A966339E42AA04BA10BA706AE56240@rodrick.geeknet.com.au
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs pgsql-hackers


The following seems to me a bug in either initdb or create operator:

CREATE FUNCTION my_func (inet, inet) as '$libdir/my_func.so' LANGUAGE 'C' IMMUTABLE STRICT;
CREATE OPERATOR <<< (
PROCEDURE = my_func,
LEFTARG = cidr,
RIGHTARG = cidr,
RESTRICT = contsel,
JOIN = contjoinsel
);

ERROR: function my_func(cidr, cidr) does not exist

Now, if you look at the catalog, and the < (less than operator) as an example you will see that:

Two operators are defined for < - one for inet,inet and another for cidr,cidr.
Only one function exists named network_lt, and is declared as taking (inet,inet) as arguments.

Obviously, it should either have a corresponding function declaration, or it should be possible to create the operators using a binary compatible function (eg: where a binary compatible cast exists).

I propose, that the create operator syntax be modified to accept:

PROCEDURE = function_name (type{,type})

and that checks be made for the existence of binary compatible casts between the two (four) types.

Kind Regards,

John

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Tom Lane 2005-01-30 02:42:49 Re: Bug in create operator and/or initdb
Previous Message Tom Lane 2005-01-29 23:32:13 Re: BUG #1447: Sometimes rules don't work

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2005-01-30 02:42:49 Re: Bug in create operator and/or initdb
Previous Message Mike Rylander 2005-01-30 01:48:32 Re: Implementing Bitmap Indexes