Skip to content
Snippets Groups Projects
  • Tom Lane's avatar
    6f7fc0ba
    Cause initdb to create a third standard database "postgres", which · 6f7fc0ba
    Tom Lane authored
    unlike template0 and template1 does not have any special status in
    terms of backend functionality.  However, all external utilities such
    as createuser and createdb now connect to "postgres" instead of
    template1, and the documentation is changed to encourage people to use
    "postgres" instead of template1 as a play area.  This should fix some
    longstanding gotchas involving unexpected propagation of database
    objects by createdb (when you used template1 without understanding
    the implications), as well as ameliorating the problem that CREATE
    DATABASE is unhappy if anyone else is connected to template1.
    Patch by Dave Page, minor editing by Tom Lane.  All per recent
    pghackers discussions.
    6f7fc0ba
    History
    Cause initdb to create a third standard database "postgres", which
    Tom Lane authored
    unlike template0 and template1 does not have any special status in
    terms of backend functionality.  However, all external utilities such
    as createuser and createdb now connect to "postgres" instead of
    template1, and the documentation is changed to encourage people to use
    "postgres" instead of template1 as a play area.  This should fix some
    longstanding gotchas involving unexpected propagation of database
    objects by createdb (when you used template1 without understanding
    the implications), as well as ameliorating the problem that CREATE
    DATABASE is unhappy if anyone else is connected to template1.
    Patch by Dave Page, minor editing by Tom Lane.  All per recent
    pghackers discussions.
createlang.sgml 7.03 KiB
<!--
$PostgreSQL: pgsql/doc/src/sgml/ref/createlang.sgml,v 1.35 2005/06/21 04:02:31 tgl Exp $
PostgreSQL documentation
-->

<refentry id="APP-CREATELANG">
 <refmeta>
  <refentrytitle id="APP-CREATELANG-TITLE"><application>createlang</application></refentrytitle>
  <manvolnum>1</manvolnum>
  <refmiscinfo>Application</refmiscinfo>
 </refmeta>

 <refnamediv>
  <refname>createlang</refname>
  <refpurpose>define a new <productname>PostgreSQL</productname> procedural language</refpurpose>
 </refnamediv>

 <indexterm zone="app-createlang">
  <primary>createlang</primary>
 </indexterm>

 <refsynopsisdiv>
  <cmdsynopsis>
   <command>createlang</command>
   <arg rep="repeat"><replaceable>connection-option</replaceable></arg>
   <arg choice="plain"><replaceable>langname</replaceable></arg>
   <arg><replaceable>dbname</replaceable></arg>
   <sbr>
   <command>createlang</command>
   <arg rep="repeat"><replaceable>connection-option</replaceable></arg>
   <group choice="plain"><arg>--list</arg><arg>-l</arg></group>
   <arg choice="plain"><replaceable>dbname</replaceable></arg>
  </cmdsynopsis>
 </refsynopsisdiv>

 
 <refsect1>
  <title>Description</title>

  <para>
   <application>createlang</application> is a utility for adding a new 
   programming language to a <productname>PostgreSQL</productname> database.
   <application>createlang</application> can handle all the languages
   supplied in the default <productname>PostgreSQL</> distribution, but
   not languages provided by other parties.
  </para>
  <para>
   Although backend programming languages can be added directly using
   several <acronym>SQL</acronym> commands, it is recommended to use
   <application>createlang</application> because it performs a number
   of checks and is much easier to use. See
   <xref linkend="sql-createlanguage" endterm="sql-createlanguage-title">
   for additional information.
  </para>
 </refsect1>


 <refsect1>
  <title>Options</title>

   <para>
    <application>createlang</application> accepts the following command-line arguments:
    
    <variablelist>
     <varlistentry>
      <term><replaceable class="parameter">langname</replaceable></term>
      <listitem>
       <para>
	Specifies the name of the procedural programming language to be
	defined.
       </para>
      </listitem>
     </varlistentry>

     <varlistentry>
      <term><option><optional>-d</> <replaceable class="parameter">dbname</replaceable></></term>
      <term><option><optional>--dbname</> <replaceable class="parameter">dbname</replaceable></></term>
      <listitem>
       <para>
	Specifies to which database the language should be added.
        The default is to use the database with the same name as the
        current system user.
       </para>
      </listitem>
     </varlistentry>

     <varlistentry>
      <term><option>-e</></term>
      <term><option>--echo</></term>
      <listitem>
       <para>
        Display SQL commands as they are executed.
       </para>
      </listitem>
     </varlistentry>

     <varlistentry>
      <term><option>-l</></term>
      <term><option>--list</></term>
      <listitem>
       <para>
        Show a list of already installed languages in the target database.
       </para>
      </listitem>
     </varlistentry>

     <varlistentry>
      <term><option>-L <replaceable class="parameter">directory</replaceable></></term>
      <listitem>
       <para>
	Specifies the directory in which the language interpreter is
        to be found.  The directory is normally found automatically; this
        option is primarily for debugging purposes.
       </para>
      </listitem>
     </varlistentry>

    </variablelist>
   </para>

   <para>
    <application>createlang</application> also accepts 
    the following command-line arguments for connection parameters:
    
    <variablelist>
     <varlistentry>
      <term><option>-h <replaceable class="parameter">host</replaceable></></term>
      <term><option>--host <replaceable class="parameter">host</replaceable></></term>
      <listitem>
       <para>
	Specifies the host name of the machine on which the 
	server
	is running.  If the value begins with a slash, it is used 
	as the directory for the Unix domain socket.
       </para>
      </listitem>
     </varlistentry>

     <varlistentry>
      <term><option>-p <replaceable class="parameter">port</replaceable></></term>
      <term><option>--port <replaceable class="parameter">port</replaceable></></term>
      <listitem>
       <para>
	Specifies the TCP port or local Unix domain socket file 
	extension on which the server
	is listening for connections.
       </para>
      </listitem>
     </varlistentry>

     <varlistentry>
      <term><option>-U <replaceable class="parameter">username</replaceable></></term>
      <term><option>--username <replaceable class="parameter">username</replaceable></></term>
      <listitem>
       <para>
        User name to connect as.
       </para>
      </listitem>
     </varlistentry>

     <varlistentry>
      <term><option>-W</></term>
      <term><option>--password</></term>
      <listitem>
       <para>
        Force password prompt.
       </para>
      </listitem>
     </varlistentry>

    </variablelist>
   </para>
 </refsect1>


 <refsect1>
  <title>Environment</title>

  <variablelist>
   <varlistentry>
    <term><envar>PGDATABASE</envar></term>
    <term><envar>PGHOST</envar></term>
    <term><envar>PGPORT</envar></term>
    <term><envar>PGUSER</envar></term>

    <listitem>
     <para>
      Default connection parameters
     </para>
    </listitem>
   </varlistentry>
  </variablelist>
 </refsect1>


 <refsect1>
  <title>Diagnostics</title>

   <para>
    Most error messages are self-explanatory. If not, run
    <application>createlang</application> with the <option>--echo</option>
    option and see under the respective <acronym>SQL</acronym> command
    for details.
   </para>
 </refsect1>


 <refsect1>
  <title>Notes</title>
  <para>
   Use <xref linkend="app-droplang"> to remove a language.
  </para>
 </refsect1>
 

 <refsect1>
  <title>Examples</title>

   <para>
    To install the language <literal>pltcl</literal> into the database
    <literal>template1</literal>:
<screen>
<prompt>$ </prompt><userinput>createlang pltcl template1</userinput>
</screen>
    Note that installing the language into <literal>template1</literal>
    will cause it to be automatically installed into subsequently-created
    databases as well.
   </para>
 </refsect1>

 <refsect1>
  <title>See Also</title>

  <simplelist type="inline">
   <member><xref linkend="app-droplang"></member>
   <member><xref linkend="sql-createlanguage" endterm="sql-createlanguage-title"></member>
   <member>Environment Variables (<xref linkend="libpq-envars">)</member>
  </simplelist>
 </refsect1>

</refentry>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:nil
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"../reference.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:"/usr/lib/sgml/catalog"
sgml-local-ecat-files:nil
End:
-->