Yes, but the documentation states that EXECUTE permission for the function is required to even CREATE the operator.
This what the doc says:
> To be able to create an operator, you must have USAGE privilege on the argument types and the return type, as well as EXECUTE privilege on the underlying function. If a commutator or negator operator is specified, you must own these operators.
> Further, I seem to have a similar problem with the EXECUTE check > requirement as well. > Sample SQL given below. > > BEGIN TRANSACTION; > CREATE ROLE rol_op3; > CREATE TYPE type_op3 AS ENUM ('new', 'open', 'closed'); > CREATE FUNCTION fn_op3(type_op3, type_op3) > RETURNS type_op3 AS $$ > SELECT NULL::type_op3; > $$ LANGUAGE sql IMMUTABLE; > REVOKE EXECUTE ON FUNCTION fn_op3(type_op3, type_op3) FROM rol_op3;
Doesn't PUBLIC still have EXECUTE permissions on this function? -- Álvaro Herrera http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services