1<!--
2doc/src/sgml/ref/alter_operator.sgml
3PostgreSQL documentation
4-->
5
6<refentry id="SQL-ALTEROPERATOR">
7 <indexterm zone="sql-alteroperator">
8  <primary>ALTER OPERATOR</primary>
9 </indexterm>
10
11 <refmeta>
12  <refentrytitle>ALTER OPERATOR</refentrytitle>
13  <manvolnum>7</manvolnum>
14  <refmiscinfo>SQL - Language Statements</refmiscinfo>
15 </refmeta>
16
17 <refnamediv>
18  <refname>ALTER OPERATOR</refname>
19  <refpurpose>change the definition of an operator</refpurpose>
20 </refnamediv>
21
22 <refsynopsisdiv>
23<synopsis>
24ALTER OPERATOR <replaceable>name</replaceable> ( { <replaceable>left_type</replaceable> | NONE } , { <replaceable>right_type</replaceable> | NONE } )
25    OWNER TO { <replaceable>new_owner</replaceable> | CURRENT_USER | SESSION_USER }
26
27ALTER OPERATOR <replaceable>name</replaceable> ( { <replaceable>left_type</replaceable> | NONE } , { <replaceable>right_type</replaceable> | NONE } )
28    SET SCHEMA <replaceable>new_schema</replaceable>
29
30ALTER OPERATOR <replaceable>name</replaceable> ( { <replaceable>left_type</replaceable> | NONE } , { <replaceable>right_type</replaceable> | NONE } )
31    SET ( {  RESTRICT = { <replaceable class="parameter">res_proc</replaceable> | NONE }
32           | JOIN = { <replaceable class="parameter">join_proc</replaceable> | NONE }
33         } [, ... ] )
34</synopsis>
35 </refsynopsisdiv>
36
37 <refsect1>
38  <title>Description</title>
39
40  <para>
41   <command>ALTER OPERATOR</command> changes the definition of
42   an operator.
43  </para>
44
45  <para>
46   You must own the operator to use <command>ALTER OPERATOR</>.
47   To alter the owner, you must also be a direct or indirect member of the new
48   owning role, and that role must have <literal>CREATE</literal> privilege on
49   the operator's schema.  (These restrictions enforce that altering the owner
50   doesn't do anything you couldn't do by dropping and recreating the operator.
51   However, a superuser can alter ownership of any operator anyway.)
52  </para>
53 </refsect1>
54
55 <refsect1>
56  <title>Parameters</title>
57
58  <variablelist>
59   <varlistentry>
60    <term><replaceable class="parameter">name</replaceable></term>
61    <listitem>
62     <para>
63      The name (optionally schema-qualified) of an existing operator.
64     </para>
65    </listitem>
66   </varlistentry>
67
68   <varlistentry>
69    <term><replaceable class="parameter">left_type</replaceable></term>
70    <listitem>
71     <para>
72      The data type of the operator's left operand; write
73      <literal>NONE</literal> if the operator has no left operand.
74     </para>
75    </listitem>
76   </varlistentry>
77
78   <varlistentry>
79    <term><replaceable class="parameter">right_type</replaceable></term>
80    <listitem>
81     <para>
82      The data type of the operator's right operand; write
83      <literal>NONE</literal> if the operator has no right operand.
84     </para>
85    </listitem>
86   </varlistentry>
87
88   <varlistentry>
89    <term><replaceable class="parameter">new_owner</replaceable></term>
90    <listitem>
91     <para>
92      The new owner of the operator.
93     </para>
94    </listitem>
95   </varlistentry>
96
97   <varlistentry>
98    <term><replaceable class="parameter">new_schema</replaceable></term>
99    <listitem>
100     <para>
101      The new schema for the operator.
102     </para>
103    </listitem>
104   </varlistentry>
105
106   <varlistentry>
107     <term><replaceable class="parameter">res_proc</replaceable></term>
108     <listitem>
109       <para>
110         The restriction selectivity estimator function for this operator; write NONE to remove existing selectivity estimator.
111       </para>
112      </listitem>
113   </varlistentry>
114
115   <varlistentry>
116     <term><replaceable class="parameter">join_proc</replaceable></term>
117     <listitem>
118       <para>
119         The join selectivity estimator function for this operator; write NONE to remove existing selectivity estimator.
120       </para>
121     </listitem>
122   </varlistentry>
123
124  </variablelist>
125 </refsect1>
126
127 <refsect1>
128  <title>Examples</title>
129
130  <para>
131   Change the owner of a custom operator <literal>a @@ b</literal> for type <type>text</type>:
132<programlisting>
133ALTER OPERATOR @@ (text, text) OWNER TO joe;
134</programlisting></para>
135
136  <para>
137    Change the restriction and join selectivity estimator functions of a custom operator <literal>a && b</literal> for type <type>int[]</type>:
138<programlisting>
139ALTER OPERATOR && (_int4, _int4) SET (RESTRICT = _int_contsel, JOIN = _int_contjoinsel);
140</programlisting></para>
141
142 </refsect1>
143
144 <refsect1>
145  <title>Compatibility</title>
146
147  <para>
148   There is no <command>ALTER OPERATOR</command> statement in
149   the SQL standard.
150  </para>
151 </refsect1>
152
153 <refsect1>
154  <title>See Also</title>
155
156  <simplelist type="inline">
157   <member><xref linkend="sql-createoperator"></member>
158   <member><xref linkend="sql-dropoperator"></member>
159  </simplelist>
160 </refsect1>
161</refentry>
162