Bug in create operator and/or initdb

Поиск
Список
Период
Сортировка
От John Hansen
Тема Bug in create operator and/or initdb
Дата
Msg-id 5066E5A966339E42AA04BA10BA706AE56240@rodrick.geeknet.com.au
обсуждение исходный текст
Ответы Re: [BUGS] Bug in create operator and/or initdb  (Tom Lane <tgl@sss.pgh.pa.us>)
Список 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
usinga 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

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Mike Rylander
Дата:
Сообщение: Re: Implementing Bitmap Indexes
Следующее
От: Tom Lane
Дата:
Сообщение: Re: [BUGS] Bug in create operator and/or initdb