Man Pages

create_operator(7) - phpMan create_operator(7) - phpMan

Command: man perldoc info search(apropos)  

CREATE OPERATOR(7)               SQL Commands               CREATE OPERATOR(7)

       CREATE OPERATOR - define a new operator

       CREATE OPERATOR name (
           PROCEDURE = funcname
           [, LEFTARG = lefttype ] [, RIGHTARG = righttype ]
           [, COMMUTATOR = com_op ] [, NEGATOR = neg_op ]
           [, RESTRICT = res_proc ] [, JOIN = join_proc ]
           [, HASHES ] [, MERGES ]

       CREATE  OPERATOR  defines a new operator, name. The user who defines an operator becomes its owner. If a schema
       name is given then the operator is created in the specified schema. Otherwise it  is  created  in  the  current

       The operator name is a sequence of up to NAMEDATALEN-1 (63 by default) characters from the following list:

       + - * / < > = ~ ! @ # % ^ & | ' ?

       There are a few restrictions on your choice of name:

       ? -- and /* cannot appear anywhere in an operator name, since they will be taken as the start of a comment.

       ? A  multicharacter  operator  name  cannot  end in + or -, unless the name also contains at least one of these

         ~ ! @ # % ^ & | ' ?

         For example, @- is an allowed operator name, but *- is not.  This restriction allows PostgreSQL to parse SQL-
         compliant commands without requiring spaces between tokens.

       The operator != is mapped to <> on input, so these two names are always equivalent.

       At  least  one  of  LEFTARG and RIGHTARG must be defined. For binary operators, both must be defined. For right
       unary operators, only LEFTARG should be defined, while  for  left  unary  operators  only  RIGHTARG  should  be

       The  funcname  procedure  must have been previously defined using CREATE FUNCTION and must be defined to accept
       the correct number of arguments (either one or two) of the indicated types.

       The other clauses specify optional operator optimization clauses.  Their meaning is detailed in in the documen-

       name   The name of the operator to be defined. See above for allowable characters. The name can be schema-qual-
              ified, for example CREATE OPERATOR myschema.+ (...). If not, then the operator is created in the current
              schema. Two operators in the same schema can have the same name if they operate on different data types.
              This is called overloading.

              The function used to implement this operator.

              The data type of the operator's left operand, if any.  This option would be  omitted  for  a  left-unary

              The  data  type of the operator's right operand, if any.  This option would be omitted for a right-unary

       com_op The commutator of this operator.

       neg_op The negator of this operator.

              The restriction selectivity estimator function for this operator.

              The join selectivity estimator function for this operator.

       HASHES Indicates this operator can support a hash join.

       MERGES Indicates this operator can support a merge join.

       To give a schema-qualified operator name in com_op or the other optional arguments, use the OPERATOR()  syntax,
       for example:

       COMMUTATOR = OPERATOR(myschema.===) ,

       Refer to in the documentation for further information.

       The  obsolete  options SORT1, SORT2, LTCMP, and GTCMP were formerly used to specify the names of sort operators
       associated with a merge-joinable operator. This is no longer  necessary,  since  information  about  associated
       operators  is  found  by  looking  at B-tree operator families instead. If one of these options is given, it is
       ignored except for implicitly setting MERGES true.

       Use DROP OPERATOR [drop_operator(7)] to delete user-defined operators  from  a  database.  Use  ALTER  OPERATOR
       [alter_operator(7)] to modify operators in a database.

       The following command defines a new operator, area-equality, for the data type box:

       CREATE OPERATOR === (
           LEFTARG = box,
           RIGHTARG = box,
           PROCEDURE = area_equal_procedure,
           COMMUTATOR = ===,
           NEGATOR = !==,
           RESTRICT = area_restriction_procedure,
           JOIN = area_join_procedure,
           HASHES, MERGES

       CREATE  OPERATOR is a PostgreSQL extension. There are no provisions for user-defined operators in the SQL stan-

       ALTER OPERATOR [alter_operator(7)], CREATE OPERATOR CLASS [create_operator_class(7)], DROP OPERATOR [drop_oper-

SQL - Language Statements         2014-02-17                CREATE OPERATOR(7)