Home Explore Blog CI



postgresql

2nd chunk of `doc/src/sgml/ref/drop_subscription.sgml`
667ffdb24cff0079d3d31a9ecdaa7a7db557b8ca6b8365660000000100000bcb
 associated with a replication
   slot.  (You can use <link linkend="sql-altersubscription"><command>ALTER SUBSCRIPTION</command></link> to unset the
   slot.)
  </para>
 </refsect1>

 <refsect1>
  <title>Parameters</title>

  <variablelist>
   <varlistentry>
    <term><replaceable class="parameter">name</replaceable></term>
    <listitem>
     <para>
      The name of a subscription to be dropped.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><literal>CASCADE</literal></term>
    <term><literal>RESTRICT</literal></term>

    <listitem>
     <para>
      These key words do not have any effect, since there are no dependencies
      on subscriptions.
     </para>
    </listitem>
   </varlistentry>

  </variablelist>
 </refsect1>

 <refsect1>
  <title>Notes</title>

  <para>
   When dropping a subscription that is associated with a replication slot on
   the remote host (the normal state), <command>DROP SUBSCRIPTION</command>
   will connect to the remote host and try to drop the replication slot (and
   any remaining table synchronization slots) as
   part of its operation.  This is necessary so that the resources allocated
   for the subscription on the remote host are released.  If this fails,
   either because the remote host is not reachable or because the remote
   replication slot cannot be dropped or does not exist or never existed,
   the <command>DROP SUBSCRIPTION</command> command will fail.  To proceed
   in this situation, first disable the subscription by executing
   <link linkend="sql-altersubscription-params-disable">
   <literal>ALTER SUBSCRIPTION ... DISABLE</literal></link>, and then disassociate
   it from the replication slot by executing
   <link linkend="sql-altersubscription-params-set">
   <literal>ALTER SUBSCRIPTION ... SET (slot_name = NONE)</literal></link>.
   After that, <command>DROP SUBSCRIPTION</command> will no longer attempt any
   actions on a remote host.  Note that if the remote replication slot still
   exists, it (and any related table synchronization slots) should then be
   dropped manually; otherwise it/they will continue to
   reserve WAL and might eventually cause the disk to fill up.  See
   also <xref linkend="logical-replication-subscription-slot"/>.
  </para>

  <para>
   If a subscription is associated with a replication slot, then <command>DROP
   SUBSCRIPTION</command> cannot be executed inside a transaction block.
  </para>
 </refsect1>

 <refsect1>
  <title>Examples</title>

  <para>
   Drop a subscription:
<programlisting>
DROP SUBSCRIPTION mysub;
</programlisting></para>
 </refsect1>

 <refsect1>
  <title>Compatibility</title>

  <para>
   <command>DROP SUBSCRIPTION</command> is a <productname>PostgreSQL</productname>
   extension.
  </para>
 </refsect1>

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

  <simplelist type="inline">
   <member><xref linkend="sql-createsubscription"/></member>
   <member><xref linkend="sql-altersubscription"/></member>
  </simplelist>
 </refsect1>
</refentry>

Title: DROP SUBSCRIPTION (Continued): Notes, Examples, Compatibility, and See Also
Summary
This section details the behavior of DROP SUBSCRIPTION when dealing with replication slots on the remote host. It explains how the command attempts to drop the replication slot and any table synchronization slots, and what to do if that process fails. It also reiterates that DROP SUBSCRIPTION cannot be executed within a transaction block if associated with a replication slot. An example of dropping a subscription is provided. The command is a PostgreSQL extension. Related commands are CREATE SUBSCRIPTION and ALTER SUBSCRIPTION.