pgd assess
==========

Synopsis
--------

The ``pgd assess`` command assesses the suitability of a Postgres server
instance for migration to an EDB Postgres Distributed cluster. It runs
against both standard Postgres instances and instances that already have
PGD installed, adjusting which checks it reports based on the edition it
detects.

The command must be run with a DSN that connects to the Postgres server
instance you want to assess. Pass it with the ``--dsn`` option or set
the ``PGD_CLI_DSN`` environment variable. Not providing either results
in an error.

The command checks the Postgres instance for compatibility with EDB
Postgres Distributed and produces a compatibility report.

Users and roles
^^^^^^^^^^^^^^^

Requires read access to ``pg_catalog`` on the target instance. On a
target that already has PGD installed, also requires the
``bdr_read_all_stats`` role (or a role that inherits it, such as
``bdr_monitor`` or ``bdr_superuser`` ) to detect the installed edition.
See :ref:`User roles <User roles>`  .

Syntax
------

.. code:: plaintext

   pgd assess [OPTIONS]

Options
-------

The assess command has no command specific options. But it does require
a DSN to connect to the Postgres server instance that you want to
assess. This can be passed as the argument to the ``--dsn`` option, or
by setting the ``PGD_CLI_DSN`` environment variable.

See also `Global Options <https://www.enterprisedb.com/docs/pgd/latest/reference/cli/command_ref/#global-options>`_  .

Example
-------

.. code:: bash

   pgd assess
   __OUTPUT__
   Assessment                           | Result                     | Details
   - ------------------------------------+----------------------------+-----------------------------------------------------------
    Multiple Databases                  | Compatible                 | Found only one user database
    Materialized Views                  | Compatible                 | No materialized views found
    EPAS Queue Tables                   | Compatible                 | No EPAS Queue Tables found
    DDL Command Usage                   | Requires workload analysis | Cannot be checked automatically at this time
    Advisory Lock Usage                 | Potentially compatible     | No advisory lock commands found in pg_stat_statements
    Large Objects                       | Compatible                 | No large objects found
    Trigger/Reference Privileges        | Compatible                 | No triggers with incompatible privileges found
    Tables with Multiple Unique Indexes | Compatible                 | No tables with multiple unique indexes found
    LOCK TABLE Usage                    | Potentially compatible     | No LOCK TABLE usage found in pg_stat_statements
    LISTEN/NOTIFY Usage                 | Compatible                 | No LISTEN/NOTIFY usage found in pg_stat_statements
    Row-Level Lock Usage                | Potentially compatible     | No row-level locking commands found in pg_stat_statements
