diff options
author | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2016-03-23 23:01:35 -0300 |
---|---|---|
committer | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2016-03-23 23:01:35 -0300 |
commit | 473b93287040b20017cc25a157cffdc5b978c254 (patch) | |
tree | 58f662a65247525b2e5e178b9050feb3f3056590 /doc/src/sgml/ref/create_access_method.sgml | |
parent | 2c6af4f44228d76d3351fe26f68b00b55cdd239a (diff) | |
download | postgresql-473b93287040b20017cc25a157cffdc5b978c254.tar.gz postgresql-473b93287040b20017cc25a157cffdc5b978c254.zip |
Support CREATE ACCESS METHOD
This enables external code to create access methods. This is useful so
that extensions can add their own access methods which can be formally
tracked for dependencies, so that DROP operates correctly. Also, having
explicit support makes pg_dump work correctly.
Currently only index AMs are supported, but we expect different types to
be added in the future.
Authors: Alexander Korotkov, Petr Jelínek
Reviewed-By: Teodor Sigaev, Petr Jelínek, Jim Nasby
Commitfest-URL: https://commitfest.postgresql.org/9/353/
Discussion: https://www.postgresql.org/message-id/CAPpHfdsXwZmojm6Dx+TJnpYk27kT4o7Ri6X_4OSWcByu1Rm+VA@mail.gmail.com
Diffstat (limited to 'doc/src/sgml/ref/create_access_method.sgml')
-rw-r--r-- | doc/src/sgml/ref/create_access_method.sgml | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/doc/src/sgml/ref/create_access_method.sgml b/doc/src/sgml/ref/create_access_method.sgml new file mode 100644 index 00000000000..3c091f80210 --- /dev/null +++ b/doc/src/sgml/ref/create_access_method.sgml @@ -0,0 +1,120 @@ +<!-- +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><literal>access_method_type</literal></term> + <listitem> + <para> + This clause specifies type of access method to define. + Only <literal>INDEX</literal> is supported at present. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>HANDLER <replaceable class="parameter">handler_function</replaceable></literal></term> + <listitem> + <para><replaceable class="parameter">handler_function</replaceable> is the + name of a previously registered function that will be called to + retrieve the struct which contains required parameters and functions + of access method to the core. The handler function must take single + argument of type <type>internal</>, and its return type depends on the + type of access method; for <literal>INDEX</literal> access methods, it + must be <type>index_am_handler</type>. + </para> + + <para> + See <xref linkend="index-api"> for index access methods API. + </para> + </listitem> + </varlistentry> + </variablelist> + </refsect1> + + <refsect1> + <title>Examples</title> + + <para> + Create an access method <literal>heptree</> with + handler function <literal>heptree_handler</>: +<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</> 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> |