DDL replication
===============

DDL stands for data definition language, the subset of the SQL language
that creates, alters, and drops database objects.

PGD provides automatic DDL replication, which makes certain DDL changes
easier. With automatic replication, you don’t have to manually
distribute the DDL change to all nodes and ensure that they’re
consistent.

This section looks at how DDL replication is handled in PGD.

- :ref:`DDL overview <DDL overview>`  provides a general outline of what PGD’s DDL replication
  is capable of.

- :ref:`DDL locking details <DDL locking details>`  examines how DDL replication uses locks to safely
  replicate DDL.

- :ref:`Managing DDL with PGD replication <Managing DDL with PGD replication>`  gives best practice advice on why and how to limit the
  impact of DDL changes so they don’t overly affect the smooth running
  of the cluster.

- :ref:`DDL and role manipulation statements <DDL and role manipulation statements>`  notes issues around manipulating roles over multiple
  databases in a cluster.

- :ref:`Workarounds for DDL restrictions <Workarounds for DDL restrictions>`  gives a range of options for handling situations where
  DDL replication may present restrictions, such as altering columns,
  constraints, and types.

- :ref:`PGD functions that behave like DDL <PGD functions that behave like DDL>`  details the PGD functions that behave like DDL and
  therefore behave in a similar way and are subject to similar
  restrictions.

.. toctree::
  :maxdepth: 3

  DEEP_DIVE--advanced-functionality--ddl--ddl-overview
  DEEP_DIVE--advanced-functionality--ddl--ddl-replication-options
  DEEP_DIVE--advanced-functionality--ddl--ddl-locking
  DEEP_DIVE--advanced-functionality--ddl--ddl-managing-with-pgd-replication
  DEEP_DIVE--advanced-functionality--ddl--ddl-command-handling
  DEEP_DIVE--advanced-functionality--ddl--ddl-role-manipulation
  DEEP_DIVE--advanced-functionality--ddl--ddl-workarounds
  DEEP_DIVE--advanced-functionality--ddl--ddl-pgd-functions-like-ddl
