External Projects
=================

PostgreSQL is a complex software project, and managing the project is
difficult. We have found that many enhancements to PostgreSQL can be
more efficiently developed separately from the core project.

Client Interfaces {#external-interfaces}
=================

interfaces

externally maintained

There are only two client interfaces included in the base PostgreSQL
distribution:

-   [libpq](#libpq) is included because it is the primary C language
    interface, and because many other client interfaces are built on top
    of it.

-   [ECPG](#ecpg) is included because it depends on the server-side SQL
    grammar, and is therefore sensitive to changes in PostgreSQL itself.

All other language interfaces are external projects and are distributed
separately. [table\_title](#language-interface-table) includes a list of
some of these projects. Note that some of these packages might not be
released under the same license as PostgreSQL. For more information on
each language interface, including licensing terms, refer to its website
and documentation.

  Name            Language     Comments                                Website
  --------------- ------------ --------------------------------------- -----------------------------------------------
  DBD::Pg         Perl         Perl DBI driver                         [](https://metacpan.org/release/DBD-Pg)
  JDBC            Java         Type 4 JDBC driver                      [](https://jdbc.postgresql.org/)
  libpqxx         C++          C++ interface                           [](https://pqxx.org/)
  node-postgres   JavaScript   Node.js driver                          [](https://node-postgres.com/)
  Npgsql          .NET         .NET data provider                      [](https://www.npgsql.org/)
  pgtcl           Tcl                                                  [](https://github.com/flightaware/Pgtcl)
  pgtclng         Tcl                                                  [](https://sourceforge.net/projects/pgtclng/)
  pq              Go           Pure Go driver for Go\'s database/sql   [](https://github.com/lib/pq)
  psqlODBC        ODBC         ODBC driver                             [](https://odbc.postgresql.org/)
  psycopg         Python       DB API 2.0-compliant                    [](https://www.psycopg.org/)

  : Externally Maintained Client Interfaces

Administration Tools {#external-admin-tools}
====================

administration tools

externally maintained

There are several administration tools available for PostgreSQL. The
most popular is [pgAdmin](https://www.pgadmin.org/), and there are
several commercially available ones as well.

Procedural Languages {#external-pl}
====================

procedural language

externally maintained

PostgreSQL includes several procedural languages with the base
distribution: [PL/pgSQL](#plpgsql), [PL/Tcl](#pltcl),
[PL/Perl](#plperl), and [PL/Python](#plpython).

In addition, there are a number of procedural languages that are
developed and maintained outside the core PostgreSQL distribution.
[table\_title](#pl-language-table) lists some of these packages. Note
that some of these projects might not be released under the same license
as PostgreSQL. For more information on each procedural language,
including licensing information, refer to its website and documentation.

  Name      Language     Website
  --------- ------------ -----------------------------------------
  PL/Java   Java         [](https://tada.github.io/pljava/)
  PL/Lua    Lua          [](https://github.com/pllua/pllua-ng)
  PL/R      R            [](https://github.com/postgres-plr/plr)
  PL/sh     Unix shell   [](https://github.com/petere/plsh)
  PL/v8     JavaScript   [](https://github.com/plv8/plv8)

  : Externally Maintained Procedural Languages

Extensions {#external-extensions}
==========

extension

externally maintained

PostgreSQL is designed to be easily extensible. For this reason,
extensions loaded into the database can function just like features that
are built in. The `contrib/` directory shipped with the source code
contains several extensions, which are described in [???](#contrib).
Other extensions are developed independently, like
[PostGIS](https://postgis.net/). Even PostgreSQL replication solutions
can be developed externally. For example,
[Slony-I](https://www.slony.info) is a popular primary/standby
replication solution that is developed independently from the core
project.
