<!--
doc/src/sgml/ref/load.sgml
-->

<refentry id="SQL-LOAD">
 <indexterm zone="sql-load">
  <primary>LOAD</primary>
 </indexterm>

 <refmeta>
  <refentrytitle>LOAD</refentrytitle>
  <manvolnum>7</manvolnum>
  <refmiscinfo>SQL - Language Statements</refmiscinfo>
 </refmeta>

 <refnamediv>
  <refname>LOAD</refname>
  <refpurpose>load a shared library file</refpurpose>
 </refnamediv>

 <refsynopsisdiv>
<synopsis>
LOAD '<replaceable class="parameter">filename</replaceable>'
</synopsis>
 </refsynopsisdiv>

 <refsect1 id="sql-load-description">
  <title>Description</title>

  <para>
   This command loads a shared library file into the <productname>PostgreSQL</>
   server's address space.  If the file has been loaded already,
   the command does nothing.  Shared library files that contain C functions
   are automatically loaded whenever one of their functions is called.
   Therefore, an explicit <command>LOAD</> is usually only needed to
   load a library that modifies the server's behavior through <quote>hooks</>
   rather than providing a set of functions.
  </para>

  <para>
   The library file name is typically given as just a bare file name,
   which is sought in the server's library search path (set
   by <xref linkend="guc-dynamic-library-path">).  Alternatively it can be
   given as a full path name.  In either case the platform's standard shared
   library file name extension may be omitted.
   See <xref linkend="xfunc-c-dynload"> for more information on this topic.
  </para>

  <indexterm>
   <primary><filename>$libdir/plugins</></primary>
  </indexterm>

  <para>
   Non-superusers can only apply <command>LOAD</> to library files
   located in <filename>$libdir/plugins/</> &mdash; the specified
   <replaceable class="parameter">filename</replaceable> must begin
   with exactly that string.  (It is the database administrator's
   responsibility to ensure that only <quote>safe</> libraries
   are installed there.)
  </para>
 </refsect1>

 <refsect1 id="sql-load-compat">
  <title>Compatibility</title>

  <para>
   <command>LOAD</command> is a <productname>PostgreSQL</productname>
   extension.
  </para>
 </refsect1>


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

  <para>
   <xref linkend="sql-createfunction">
  </para>
 </refsect1>
</refentry>
