below) while creating a trigger.
+ Each of the groups of functions described below is provided as a
+ separately-installable extension.
+
+
-
refint.c — Functions for Implementing Referential Integrity
+
refint — Functions for Implementing Referential Integrity
check_primary_key()> and
-
timetravel.c — Functions for Implementing Time Travel
+
timetravel — Functions for Implementing Time Travel
Long ago,
PostgreSQL> had a built-in time travel feature
-
autoinc.c — Functions for Autoincrementing Fields
+
autoinc — Functions for Autoincrementing Fields
autoinc()> is a trigger that stores the next value of
-
insert_username.c — Functions for Tracking Who Changed a Table
+
insert_username — Functions for Tracking Who Changed a Table
insert_username()> is a trigger that stores the current
-
moddatetime.c — Functions for Tracking Last Modification Time
+
moddatetime — Functions for Tracking Last Modification Time
moddatetime()> is a trigger that stores the current
Many modules supply new user-defined functions, operators, or types.
To make use of one of these modules, after you have installed the code
- you need to register the new objects in the database
- system by running the SQL commands in the .sql> file
- supplied by the module. For example,
+ you need to register the new SQL objects in the database system.
+ In
PostgreSQL> 9.1 and later, this is done by executing
+ a command. In a fresh database,
+ you can simply do
-psql -d dbname -f SHAREDIR>/contrib/module>.sql
+CREATE EXTENSION module_name>;
- Here, SHAREDIR> means the installation's share>
- directory (pg_config --sharedir> will tell you what this is).
- In most cases the script must be run by a database superuser.
-
-
- You need to run the .sql> file in each database that you want
+ This command must be run by a database superuser. This registers the
+ new SQL objects in the current database only, so you need to run this
+ command in each database that you want
the module's facilities to be available in. Alternatively, run it in
- database template1> so that the module will be copied into
+ database template1> so that the extension will be copied into
subsequently-created databases by default.
- You can modify the first command in the .sql> file to determine
- which schema within the database the module's objects will be created in.
- By default, they will be placed in public>.
+ Many modules allow you to install their objects in a schema of your
+ choice. To do that, add SCHEMA
+ schema_name> to the CREATE EXTENSION>
+ command. By default, the objects will be placed in your current creation
+ target schema, typically public>.
- After a major-version upgrade of
PostgreSQL>, run the
- installation script again, even though the module's objects might have
- been brought forward from the old installation by dump and restore.
- This ensures that any new functions will be available and any needed
- corrections will be applied.
+ If your database was brought forward by dump and reload from a pre-9.1
+ version of
PostgreSQL>, and you had been using the pre-9.1
+ version of the module in it, you should instead do
+
+CREATE EXTENSION module_name> FROM unpackaged;
+
+
+ This will update the pre-9.1 objects of the module into a proper
+ extension> object. Future updates to the module will be
+ managed by .
+ For more information about extension updates, see
+ .
&adminpack;
Usage
- Running the installation script creates a text search template
- intdict_template> and a dictionary intdict>
+ Installing the dict_int> extension creates a text search
+ template intdict_template> and a dictionary intdict>
based on it, with the default parameters. You can alter the
parameters, for example
Usage
- Running the installation script creates a text search template
- xsyn_template> and a dictionary xsyn>
+ Installing the dict_xsyn> extension creates a text search
+ template xsyn_template> and a dictionary xsyn>
based on it, with default parameters. You can alter the
parameters, for example
The earthdistance> module provides two different approaches to
calculating great circle distances on the surface of the Earth. The one
- described first depends on the cube> package (which
+ described first depends on the cube> module (which
must> be installed before earthdistance> can be
installed). The second one is based on the built-in point> data type,
using longitude and latitude for the coordinates.
Compatibility
- When upgrading from older versions, always load the new
- version of this module into the database before restoring a dump.
- Otherwise, many new features will be unavailable.
-
-
As of PostgreSQL 9.0, hstore> uses a different internal
representation than previous versions. This presents no obstacle for
This view, and the function pg_stat_statements_reset>,
are available only in databases they have been specifically installed into
- by running the pg_stat_statements.sql> install script.
+ by installing the pg_stat_statements> extension.
However, statistics are tracked across all databases of the server
whenever the pg_stat_statements module is loaded
into the server, regardless of presence of the view.
Create a composite type describing the desired output columns,
- similar to the examples in the installation script. Then define a
+ similar to the examples in
+ contrib/tablefunc/tablefunc--1.0.sql>.
+ Then define a
unique function name accepting one text> parameter and returning
setof your_type_name>, but linking to the same underlying
crosstab> C function. For example, if your source data
Usage
- Running the installation script creates a text search parser
- testparser>. It has no user-configurable parameters.
+ Installing the test_parser> extension creates a text search
+ parser testparser>. It has no user-configurable parameters.
before> loading the dump data! If your old installation
had the
tsearch2> objects in a schema other
than public>, be sure to adjust the
- <literal>tsearch2 installation script so that the replacement
+ <command>CREATE EXTENSION> command so that the replacement
objects are created in that same schema.
Usage
- Running the installation script unaccent.sql> creates a text
+ Installing the unaccent> extension creates a text
search template unaccent> and a dictionary unaccent>
based on it. The unaccent> dictionary has the default
parameter setting RULES='unaccent'>, which makes it immediately