summaryrefslogtreecommitdiffstats
path: root/doc/src/sgml/external-projects.sgml
blob: 50872dfd88e2d935c58b127ebc959f9dc9fc71fc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<!-- doc/src/sgml/external-projects.sgml -->

 <appendix id="external-projects">
  <title>External Projects</title>

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

 <sect1 id="external-interfaces">
  <title>Client Interfaces</title>

  <indexterm>
   <primary>interfaces</primary>
   <secondary>externally maintained</secondary>
  </indexterm>

  <para>
   There are only two client interfaces included in the base
   <productname>PostgreSQL</productname> distribution:
   <itemizedlist>
    <listitem>
     <para>
      <link linkend="libpq">libpq</link> is included because it is the
      primary C language interface, and because many other client interfaces
      are built on top of it.
     </para>
    </listitem>

    <listitem>
     <para>
      <link linkend="ecpg">ECPG</link> is included because it depends on the
      server-side SQL grammar, and is therefore sensitive to changes in
      <productname>PostgreSQL</productname> itself.
     </para>
    </listitem>
   </itemizedlist>

   All other language interfaces are external projects and are distributed
   separately. A
   <ulink url="https://wiki.postgresql.org/wiki/List_of_drivers">list of language interfaces</ulink>
   is maintained on the PostgreSQL wiki. Note that some of these packages are
   not released under the same license as <productname>PostgreSQL</productname>.
   For more information on each language interface, including licensing terms,
   refer to its website and documentation.
  </para>

  <para>
    <ulink url="https://wiki.postgresql.org/wiki/List_of_drivers"></ulink>
  </para>
 </sect1>

 <sect1 id="external-admin-tools">
 <title>Administration Tools</title>

  <indexterm>
   <primary>administration tools</primary>
   <secondary>externally maintained</secondary>
  </indexterm>

  <para>
   There are several administration tools available for
   <productname>PostgreSQL</productname>. The most popular is
   <application><ulink url="https://www.pgadmin.org/">pgAdmin</ulink></application>,
   and there are several commercially available ones as well.
  </para>
 </sect1>

 <sect1 id="external-pl">
  <title>Procedural Languages</title>

  <indexterm>
   <primary>procedural language</primary>
   <secondary>externally maintained</secondary>
  </indexterm>

  <para>
   <productname>PostgreSQL</productname> includes several procedural
   languages with the base distribution: <link
   linkend="plpgsql">PL/pgSQL</link>, <link linkend="pltcl">PL/Tcl</link>,
   <link linkend="plperl">PL/Perl</link>, and <link
   linkend="plpython">PL/Python</link>.
  </para>

  <para>
   In addition, there are a number of procedural languages that are developed
   and maintained outside the core <productname>PostgreSQL</productname>
   distribution. A list of
   <ulink url="https://wiki.postgresql.org/wiki/PL_Matrix">procedural languages</ulink>
   is maintained on the PostgreSQL wiki. Note that some of these projects are
   not released under the same license as <productname>PostgreSQL</productname>.
   For more information on each procedural language, including licensing
   information, refer to its website
   and documentation.
  </para>

  <para>
   <ulink url="https://wiki.postgresql.org/wiki/PL_Matrix"></ulink>
  </para>
 </sect1>

 <sect1 id="external-extensions">
 <title>Extensions</title>

  <indexterm>
   <primary>extension</primary>
   <secondary>externally maintained</secondary>
  </indexterm>

  <para>
   <productname>PostgreSQL</productname> is designed to be easily extensible. For
   this reason, extensions loaded into the database can function
   just like features that are built in. The
   <filename>contrib/</filename> directory shipped with the source code
   contains several extensions, which are described in
   <xref linkend="contrib"/>.  Other extensions are developed
   independently, like <application><ulink
   url="https://postgis.net/">PostGIS</ulink></application>.  Even
   <productname>PostgreSQL</productname> replication solutions can be developed
   externally. For example, <application> <ulink
   url="https://www.slony.info">Slony-I</ulink></application> is a popular
   primary/standby replication solution that is developed independently
   from the core project.
  </para>
 </sect1>
</appendix>