Man Pages

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

Command: man perldoc info search(apropos)  


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



NAME
       CREATE OPERATOR - define a new operator


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


DESCRIPTION
       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
       schema.

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

         ~ ! @ # % ^ & | ' ?

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

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

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

       funcname
              The function used to implement this operator.

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

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

       com_op The commutator of this operator.

       neg_op The negator of this operator.

       res_proc
              The restriction selectivity estimator function for this operator.

       join_proc
              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.===) ,



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

EXAMPLES
       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
       );


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

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



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