'\" t .\" Title: CREATE EXTENSION .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2019 .\" Manual: PostgreSQL 9.6.12 Documentation .\" Source: PostgreSQL 9.6.12 .\" Language: English .\" .TH "CREATE EXTENSION" "7" "2019" "PostgreSQL 9.6.12" "PostgreSQL 9.6.12 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" CREATE_EXTENSION \- install an extension .SH "SYNOPSIS" .sp .nf CREATE EXTENSION [ IF NOT EXISTS ] \fIextension_name\fR [ WITH ] [ SCHEMA \fIschema_name\fR ] [ VERSION \fIversion\fR ] [ FROM \fIold_version\fR ] [ CASCADE ] .fi .SH "DESCRIPTION" .PP \fBCREATE EXTENSION\fR loads a new extension into the current database\&. There must not be an extension of the same name already loaded\&. .PP Loading an extension essentially amounts to running the extension\*(Aqs script file\&. The script will typically create new SQL objects such as functions, data types, operators and index support methods\&. \fBCREATE EXTENSION\fR additionally records the identities of all the created objects, so that they can be dropped again if \fBDROP EXTENSION\fR is issued\&. .PP Loading an extension requires the same privileges that would be required to create its component objects\&. For most extensions this means superuser or database owner privileges are needed\&. The user who runs \fBCREATE EXTENSION\fR becomes the owner of the extension for purposes of later privilege checks, as well as the owner of any objects created by the extension\*(Aqs script\&. .SH "PARAMETERS" .PP IF NOT EXISTS .RS 4 Do not throw an error if an extension with the same name already exists\&. A notice is issued in this case\&. Note that there is no guarantee that the existing extension is anything like the one that would have been created from the currently\-available script file\&. .RE .PP \fIextension_name\fR .RS 4 The name of the extension to be installed\&. PostgreSQL will create the extension using details from the file SHAREDIR/extension/\fIextension_name\fR\&.control\&. .RE .PP \fIschema_name\fR .RS 4 The name of the schema in which to install the extension\*(Aqs objects, given that the extension allows its contents to be relocated\&. The named schema must already exist\&. If not specified, and the extension\*(Aqs control file does not specify a schema either, the current default object creation schema is used\&. .sp If the extension specifies a schema parameter in its control file, then that schema cannot be overridden with a SCHEMA clause\&. Normally, an error will be raised if a SCHEMA clause is given and it conflicts with the extension\*(Aqs schema parameter\&. However, if the CASCADE clause is also given, then \fIschema_name\fR is ignored when it conflicts\&. The given \fIschema_name\fR will be used for installation of any needed extensions that do not specify schema in their control files\&. .sp Remember that the extension itself is not considered to be within any schema: extensions have unqualified names that must be unique database\-wide\&. But objects belonging to the extension can be within schemas\&. .RE .PP \fIversion\fR .RS 4 The version of the extension to install\&. This can be written as either an identifier or a string literal\&. The default version is whatever is specified in the extension\*(Aqs control file\&. .RE .PP \fIold_version\fR .RS 4 FROM \fIold_version\fR must be specified when, and only when, you are attempting to install an extension that replaces an \(lqold style\(rq module that is just a collection of objects not packaged into an extension\&. This option causes \fBCREATE EXTENSION\fR to run an alternative installation script that absorbs the existing objects into the extension, instead of creating new objects\&. Be careful that SCHEMA specifies the schema containing these pre\-existing objects\&. .sp The value to use for \fIold_version\fR is determined by the extension\*(Aqs author, and might vary if there is more than one version of the old\-style module that can be upgraded into an extension\&. For the standard additional modules supplied with pre\-9\&.1 PostgreSQL, use unpackaged for \fIold_version\fR when updating a module to extension style\&. .RE .PP CASCADE .RS 4 Automatically install any extensions that this extension depends on that are not already installed\&. Their dependencies are likewise automatically installed, recursively\&. The SCHEMA clause, if given, applies to all extensions that get installed this way\&. Other options of the statement are not applied to automatically\-installed extensions; in particular, their default versions are always selected\&. .RE .SH "NOTES" .PP Before you can use \fBCREATE EXTENSION\fR to load an extension into a database, the extension\*(Aqs supporting files must be installed\&. Information about installing the extensions supplied with PostgreSQL can be found in Additional Supplied Modules\&. .PP The extensions currently available for loading can be identified from the pg_available_extensions or pg_available_extension_versions system views\&. .PP For information about writing new extensions, see Section 36.15, \(lqPackaging Related Objects into an Extension\(rq, in the documentation\&. .SH "EXAMPLES" .PP Install the hstore extension into the current database: .sp .if n \{\ .RS 4 .\} .nf CREATE EXTENSION hstore; .fi .if n \{\ .RE .\} .PP Update a pre\-9\&.1 installation of hstore into extension style: .sp .if n \{\ .RS 4 .\} .nf CREATE EXTENSION hstore SCHEMA public FROM unpackaged; .fi .if n \{\ .RE .\} .sp Be careful to specify the schema in which you installed the existing hstore objects\&. .SH "COMPATIBILITY" .PP \fBCREATE EXTENSION\fR is a PostgreSQL extension\&. .SH "SEE ALSO" ALTER EXTENSION (\fBALTER_EXTENSION\fR(7)), DROP EXTENSION (\fBDROP_EXTENSION\fR(7))