Home Explore Blog CI



postgresql

2nd chunk of `doc/src/sgml/ref/drop_opclass.sgml`
0bf6ff3a024c26c0380004f846fb91e5dad7ac2058ba60ee0000000100000bbc
 or functions referenced by the class.  If there are any indexes depending
   on the operator class, you will need to specify
   <literal>CASCADE</literal> for the drop to complete.
  </para>
 </refsect1>

 <refsect1>
  <title>Parameters</title>

  <variablelist>

   <varlistentry>
    <term><literal>IF EXISTS</literal></term>
    <listitem>
     <para>
      Do not throw an error if the operator class does not exist. A notice is issued
      in this case.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><replaceable class="parameter">name</replaceable></term>
    <listitem>
     <para>
      The name (optionally schema-qualified) of an existing operator class.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><replaceable class="parameter">index_method</replaceable></term>
    <listitem>
     <para>
      The name of the index access method the operator class is for.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><literal>CASCADE</literal></term>
    <listitem>
     <para>
      Automatically drop objects that depend on the operator class (such as
      indexes), and in turn all objects that depend on those objects
      (see <xref linkend="ddl-depend"/>).
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><literal>RESTRICT</literal></term>
    <listitem>
     <para>
      Refuse to drop the operator class if any objects depend on it.
      This is the default.
     </para>
    </listitem>
   </varlistentry>
  </variablelist>
 </refsect1>

 <refsect1>
  <title>Notes</title>

  <para>
   <command>DROP OPERATOR CLASS</command> will not drop the operator family
   containing the class, even if there is nothing else left in the
   family (in particular, in the case where the family was implicitly
   created by <command>CREATE OPERATOR CLASS</command>).  An empty operator
   family is harmless, but for the sake of tidiness you might wish to
   remove the family with <command>DROP OPERATOR FAMILY</command>; or perhaps
   better, use <command>DROP OPERATOR FAMILY</command> in the first place.
  </para>
 </refsect1>

 <refsect1>
  <title>Examples</title>

  <para>
   Remove the B-tree operator class <literal>widget_ops</literal>:

<programlisting>
DROP OPERATOR CLASS widget_ops USING btree;
</programlisting>

   This command will not succeed if there are any existing indexes
   that use the operator class.  Add <literal>CASCADE</literal> to drop
   such indexes along with the operator class.
  </para>
 </refsect1>

 <refsect1>
  <title>Compatibility</title>

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

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

  <simplelist type="inline">
   <member><xref linkend="sql-alteropclass"/></member>
   <member><xref linkend="sql-createopclass"/></member>
   <member><xref linkend="sql-dropopfamily"/></member>
  </simplelist>
 </refsect1>

</refentry>

Title: DROP OPERATOR CLASS: Parameters, Notes, Examples, and Compatibility
Summary
This section details the parameters for the DROP OPERATOR CLASS command, including IF EXISTS, name, index_method, CASCADE, and RESTRICT. It also notes that DROP OPERATOR CLASS does not drop the operator family containing the class, even if it's empty, and suggests using DROP OPERATOR FAMILY for that purpose. An example demonstrates how to remove a B-tree operator class, and it's noted that CASCADE is required to drop indexes using the operator class. The command is not part of the SQL standard. Related commands are ALTER OPERATOR CLASS, CREATE OPERATOR CLASS, and DROP OPERATOR FAMILY.