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

---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
    (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])

Reply via email to