1<!-- doc/src/sgml/external-projects.sgml --> 2 3 <appendix id="external-projects"> 4 <title>External Projects</title> 5 6 <para> 7 <productname>PostgreSQL</productname> is a complex software project, 8 and managing the project is difficult. We have found that many 9 enhancements to <productname>PostgreSQL</productname> can be more 10 efficiently developed separately from the core project. 11 </para> 12 13 <sect1 id="external-interfaces"> 14 <title>Client Interfaces</title> 15 16 <indexterm> 17 <primary>interfaces</primary> 18 <secondary>externally maintained</secondary> 19 </indexterm> 20 21 <para> 22 There are only two client interfaces included in the base 23 <productname>PostgreSQL</productname> distribution: 24 <itemizedlist> 25 <listitem> 26 <para> 27 <link linkend="libpq">libpq</link> is included because it is the 28 primary C language interface, and because many other client interfaces 29 are built on top of it. 30 </para> 31 </listitem> 32 33 <listitem> 34 <para> 35 <link linkend="ecpg">ECPG</link> is included because it depends on the 36 server-side SQL grammar, and is therefore sensitive to changes in 37 <productname>PostgreSQL</productname> itself. 38 </para> 39 </listitem> 40 </itemizedlist> 41 42 All other language interfaces are external projects and are distributed 43 separately. <xref linkend="language-interface-table"/> includes a list of 44 some of these projects. Note that some of these packages might not be 45 released under the same license as <productname>PostgreSQL</productname>. For more 46 information on each language interface, including licensing terms, refer to 47 its website and documentation. 48 </para> 49 50 <table id="language-interface-table"> 51 <title>Externally Maintained Client Interfaces</title> 52 53 <tgroup cols="4"> 54 <thead> 55 <row> 56 <entry>Name</entry> 57 <entry>Language</entry> 58 <entry>Comments</entry> 59 <entry>Website</entry> 60 </row> 61 </thead> 62 63 <tbody> 64 <row> 65 <entry>DBD::Pg</entry> 66 <entry>Perl</entry> 67 <entry>Perl DBI driver</entry> 68 <entry><ulink url="https://metacpan.org/release/DBD-Pg"></ulink></entry> 69 </row> 70 71 <row> 72 <entry>JDBC</entry> 73 <entry>Java</entry> 74 <entry>Type 4 JDBC driver</entry> 75 <entry><ulink url="https://jdbc.postgresql.org/"></ulink></entry> 76 </row> 77 78 <row> 79 <entry>libpqxx</entry> 80 <entry>C++</entry> 81 <entry>C++ interface</entry> 82 <entry><ulink url="https://pqxx.org/"></ulink></entry> 83 </row> 84 85 <row> 86 <entry>node-postgres</entry> 87 <entry>JavaScript</entry> 88 <entry>Node.js driver</entry> 89 <entry><ulink url="https://node-postgres.com/"></ulink></entry> 90 </row> 91 92 <row> 93 <entry>Npgsql</entry> 94 <entry>.NET</entry> 95 <entry>.NET data provider</entry> 96 <entry><ulink url="https://www.npgsql.org/"></ulink></entry> 97 </row> 98 99 <row> 100 <entry>pgtcl</entry> 101 <entry>Tcl</entry> 102 <entry></entry> 103 <entry><ulink url="https://github.com/flightaware/Pgtcl"></ulink></entry> 104 </row> 105 106 <row> 107 <entry>pgtclng</entry> 108 <entry>Tcl</entry> 109 <entry></entry> 110 <entry><ulink url="https://sourceforge.net/projects/pgtclng/"></ulink></entry> 111 </row> 112 113 <row> 114 <entry>pq</entry> 115 <entry>Go</entry> 116 <entry>Pure Go driver for Go's database/sql</entry> 117 <entry><ulink url="https://github.com/lib/pq"></ulink></entry> 118 </row> 119 120 <row> 121 <entry>psqlODBC</entry> 122 <entry>ODBC</entry> 123 <entry>ODBC driver</entry> 124 <entry><ulink url="https://odbc.postgresql.org/"></ulink></entry> 125 </row> 126 127 <row> 128 <entry>psycopg</entry> 129 <entry>Python</entry> 130 <entry>DB API 2.0-compliant</entry> 131 <entry><ulink url="https://www.psycopg.org/"></ulink></entry> 132 </row> 133 </tbody> 134 </tgroup> 135 </table> 136 </sect1> 137 138 <sect1 id="external-admin-tools"> 139 <title>Administration Tools</title> 140 141 <indexterm> 142 <primary>administration tools</primary> 143 <secondary>externally maintained</secondary> 144 </indexterm> 145 146 <para> 147 There are several administration tools available for 148 <productname>PostgreSQL</productname>. The most popular is 149 <application><ulink url="https://www.pgadmin.org/">pgAdmin</ulink></application>, 150 and there are several commercially available ones as well. 151 </para> 152 </sect1> 153 154 <sect1 id="external-pl"> 155 <title>Procedural Languages</title> 156 157 <indexterm> 158 <primary>procedural language</primary> 159 <secondary>externally maintained</secondary> 160 </indexterm> 161 162 <para> 163 <productname>PostgreSQL</productname> includes several procedural 164 languages with the base distribution: <link 165 linkend="plpgsql">PL/pgSQL</link>, <link linkend="pltcl">PL/Tcl</link>, 166 <link linkend="plperl">PL/Perl</link>, and <link 167 linkend="plpython">PL/Python</link>. 168 </para> 169 170 <para> 171 In addition, there are a number of procedural languages that are developed 172 and maintained outside the core <productname>PostgreSQL</productname> 173 distribution. <xref linkend="pl-language-table"/> lists some of these 174 packages. Note that some of these projects might not be released under the same 175 license as <productname>PostgreSQL</productname>. For more information on each 176 procedural language, including licensing information, refer to its website 177 and documentation. 178 </para> 179 180 <table id="pl-language-table"> 181 <title>Externally Maintained Procedural Languages</title> 182 183 <tgroup cols="3"> 184 <thead> 185 <row> 186 <entry>Name</entry> 187 <entry>Language</entry> 188 <entry>Website</entry> 189 </row> 190 </thead> 191 192 <tbody> 193 <row> 194 <entry>PL/Java</entry> 195 <entry>Java</entry> 196 <entry><ulink url="https://tada.github.io/pljava/"></ulink></entry> 197 </row> 198 199 <row> 200 <entry>PL/Lua</entry> 201 <entry>Lua</entry> 202 <entry><ulink url="https://github.com/pllua/pllua-ng"></ulink></entry> 203 </row> 204 205 <row> 206 <entry>PL/R</entry> 207 <entry>R</entry> 208 <entry><ulink url="https://github.com/postgres-plr/plr"></ulink></entry> 209 </row> 210 211 <row> 212 <entry>PL/sh</entry> 213 <entry>Unix shell</entry> 214 <entry><ulink url="https://github.com/petere/plsh"></ulink></entry> 215 </row> 216 217 <row> 218 <entry>PL/v8</entry> 219 <entry>JavaScript</entry> 220 <entry><ulink url="https://github.com/plv8/plv8"></ulink></entry> 221 </row> 222 </tbody> 223 </tgroup> 224 </table> 225 </sect1> 226 227 <sect1 id="external-extensions"> 228 <title>Extensions</title> 229 230 <indexterm> 231 <primary>extension</primary> 232 <secondary>externally maintained</secondary> 233 </indexterm> 234 235 <para> 236 <productname>PostgreSQL</productname> is designed to be easily extensible. For 237 this reason, extensions loaded into the database can function 238 just like features that are built in. The 239 <filename>contrib/</filename> directory shipped with the source code 240 contains several extensions, which are described in 241 <xref linkend="contrib"/>. Other extensions are developed 242 independently, like <application><ulink 243 url="https://postgis.net/">PostGIS</ulink></application>. Even 244 <productname>PostgreSQL</productname> replication solutions can be developed 245 externally. For example, <application> <ulink 246 url="https://www.slony.info">Slony-I</ulink></application> is a popular 247 master/standby replication solution that is developed independently 248 from the core project. 249 </para> 250 </sect1> 251</appendix> 252