Home Explore Blog CI



postgresql

3rd chunk of `doc/src/sgml/ref/alter_operator.sgml`
5aafd3b3eb9462e5b74e62dd20db235d5d674587be2aa6970000000100000c92


   <varlistentry>
     <term><replaceable class="parameter">join_proc</replaceable></term>
     <listitem>
       <para>
         The join selectivity estimator function for this operator; write NONE to remove existing selectivity estimator.
       </para>
     </listitem>
   </varlistentry>

   <varlistentry>
    <term><replaceable class="parameter">com_op</replaceable></term>
    <listitem>
     <para>
      The commutator of this operator. Can only be changed if the operator
      does not have an existing commutator.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><replaceable class="parameter">neg_op</replaceable></term>
    <listitem>
     <para>
      The negator of this operator. Can only be changed if the operator does
      not have an existing negator.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><literal>HASHES</literal></term>
    <listitem>
     <para>
      Indicates this operator can support a hash join. Can only be enabled and
      not disabled.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><literal>MERGES</literal></term>
    <listitem>
     <para>
      Indicates this operator can support a merge join. Can only be enabled
      and not disabled.
     </para>
    </listitem>
   </varlistentry>

  </variablelist>
 </refsect1>

 <refsect1>
  <title>Notes</title>

  <para>
   Refer to <xref linkend="xoper"/> and
   <xref linkend="xoper-optimization"/> for further information.
  </para>

  <para>
   Since commutators come in pairs that are commutators of each other,
   <literal>ALTER OPERATOR SET COMMUTATOR</literal> will also set the
   commutator of the <replaceable class="parameter">com_op</replaceable>
   to be the target operator.  Likewise, <literal>ALTER OPERATOR SET
   NEGATOR</literal> will also set the negator of
   the <replaceable class="parameter">neg_op</replaceable> to be the
   target operator.  Therefore, you must own the commutator or negator
   operator as well as the target operator.
  </para>
 </refsect1>

 <refsect1>
  <title>Examples</title>

  <para>
   Change the owner of a custom operator <literal>a @@ b</literal> for type <type>text</type>:
<programlisting>
ALTER OPERATOR @@ (text, text) OWNER TO joe;
</programlisting>
  </para>

  <para>
   Change the restriction and join selectivity estimator functions of a
   custom operator <literal>a &amp;&amp; b</literal> for
   type <type>int[]</type>:
<programlisting>
ALTER OPERATOR &amp;&amp; (int[], int[]) SET (RESTRICT = _int_contsel, JOIN = _int_contjoinsel);
</programlisting>
  </para>

  <para>
   Mark the <literal>&amp;&amp;</literal> operator as being its own
   commutator:
<programlisting>
ALTER OPERATOR &amp;&amp; (int[], int[]) SET (COMMUTATOR = &amp;&amp;);
</programlisting>
  </para>

 </refsect1>

 <refsect1>
  <title>Compatibility</title>

  <para>
   There is no <command>ALTER OPERATOR</command> statement in
   the SQL standard.
  </para>
 </refsect1>

 <refsect1>
  <title>See Also</title>

  <simplelist type="inline">
   <member><xref linkend="sql-createoperator"/></member>
   <member><xref linkend="sql-dropoperator"/></member>
  </simplelist>
 </refsect1>
</refentry>

Title: ALTER OPERATOR: More Parameters, Notes, Examples, and Compatibility
Summary
This chunk discusses more parameters for ALTER OPERATOR, including the join selectivity estimator function, commutator operator, negator operator, and enabling hash and merge joins. It also includes notes on commutators and negators requiring ownership of both the target and related operators. Example usages are provided, showcasing changing the owner, selectivity estimators, and setting the commutator. Finally, it addresses SQL standard incompatibility and lists related commands (CREATE OPERATOR, DROP OPERATOR).