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
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 |
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 |