Home Explore Blog CI



postgresql

doc/src/sgml/ref/create_access_method.sgml
f68132f60e6270b8ccf687db905114867affa05921c9f9ef0000000300000d90
<!--
doc/src/sgml/ref/create_access_method.sgml
PostgreSQL documentation
-->

<refentry id="sql-create-access-method">
 <indexterm zone="sql-create-access-method">
  <primary>CREATE ACCESS METHOD</primary>
 </indexterm>

 <refmeta>
  <refentrytitle>CREATE ACCESS METHOD</refentrytitle>
  <manvolnum>7</manvolnum>
  <refmiscinfo>SQL - Language Statements</refmiscinfo>
 </refmeta>

 <refnamediv>
  <refname>CREATE ACCESS METHOD</refname>
  <refpurpose>define a new access method</refpurpose>
 </refnamediv>

 <refsynopsisdiv>
<synopsis>
CREATE ACCESS METHOD <replaceable class="parameter">name</replaceable>
    TYPE <replaceable class="parameter">access_method_type</replaceable>
    HANDLER <replaceable class="parameter">handler_function</replaceable>
</synopsis>
 </refsynopsisdiv>

 <refsect1>
  <title>Description</title>

  <para>
   <command>CREATE ACCESS METHOD</command> creates a new access method.
  </para>

  <para>
   The access method name must be unique within the database.
  </para>

  <para>
   Only superusers can define new access methods.
  </para>
 </refsect1>

 <refsect1>
  <title>Parameters</title>

  <variablelist>
   <varlistentry>
    <term><replaceable class="parameter">name</replaceable></term>
    <listitem>
     <para>
      The name of the access method to be created.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><replaceable class="parameter">access_method_type</replaceable></term>
    <listitem>
     <para>
      This clause specifies the type of access method to define.
      Only <literal>TABLE</literal> and <literal>INDEX</literal>
      are supported at present.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><replaceable class="parameter">handler_function</replaceable></term>
    <listitem>
     <para>
      <replaceable class="parameter">handler_function</replaceable> is the
      name (possibly schema-qualified) of a previously registered function
      that represents the access method.  The handler function must be
      declared to take a single argument of type <type>internal</type>,
      and its return type depends on the type of access method;
      for <literal>TABLE</literal> access methods, it must
      be <type>table_am_handler</type> and for <literal>INDEX</literal>
      access methods, it must be <type>index_am_handler</type>.
      The C-level API that the handler function must implement varies
      depending on the type of access method. The table access method API
      is described in <xref linkend="tableam"/> and the index access method
      API is described in <xref linkend="indexam"/>.
     </para>
    </listitem>
   </varlistentry>
  </variablelist>
 </refsect1>

 <refsect1>
  <title>Examples</title>

  <para>
   Create an index access method <literal>heptree</literal> with
   handler function <literal>heptree_handler</literal>:
<programlisting>
CREATE ACCESS METHOD heptree TYPE INDEX HANDLER heptree_handler;
</programlisting></para>
 </refsect1>

 <refsect1>
  <title>Compatibility</title>

  <para>
   <command>CREATE ACCESS METHOD</command> is a
   <productname>PostgreSQL</productname> extension.
  </para>
 </refsect1>

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

  <simplelist type="inline">
   <member><xref linkend="sql-drop-access-method"/></member>
   <member><xref linkend="sql-createopclass"/></member>
   <member><xref linkend="sql-createopfamily"/></member>
  </simplelist>
 </refsect1>

</refentry>

Chunks
0f7f3520 (1st chunk of `doc/src/sgml/ref/create_access_method.sgml`)
Title: CREATE ACCESS METHOD
Summary
The CREATE ACCESS METHOD command defines a new access method in PostgreSQL. The access method name must be unique within the database, and only superusers can define new access methods. The command takes the access method name, type (currently only TABLE and INDEX are supported), and a handler function as parameters. The handler function represents the access method and must be a previously registered function with a specific signature. The return type of handler function depends on the type of access method; it must be table_am_handler for TABLE access methods and index_am_handler for INDEX access methods. CREATE ACCESS METHOD is a PostgreSQL extension.