CREATE EXTENSION — 拡張をインストールする
CREATE EXTENSION [ IF NOT EXISTS ]extension_name
[ WITH ] [ SCHEMAschema_name
] [ VERSIONversion
] [ FROMold_version
]
CREATE EXTENSION
は現在のデータベース内に新しい拡張を読み込みます。
読み込み済みの拡張と同じ名前の拡張を読み込むことはできません。
拡張の読み込みは基本的に拡張のスクリプトファイルを実行することと同じです。
スクリプトは通常、関数、データ型、演算子、インデックスサポートメソッドなどのSQLオブジェクトを新しく作成するものです。
CREATE EXTENSION
はさらに作成したすべてのオブジェクト識別子を記録して、DROP EXTENSION
が発行された時に削除できるようにします。
拡張の読み込みでは、その要素オブジェクトを作成するために必要となるいくつかの権限が必要です。
ほとんどの拡張で、これはスーパーユーザもしくはデータベース所有者の権限が必要であることを意味します。
CREATE EXTENSION
を実行するユーザが、後の権限検査の際に拡張の所有者となります。
同様にこのユーザは拡張のスクリプトにより作成されたすべてのオブジェクトの所有者となります。
IF NOT EXISTS
同じ名前の拡張がすでに存在していてもエラーにしません。 この場合注意が発せられます。 既存の拡張が、現在利用可能なスクリプトファイルより作成されるものと何かしら似たものであることは保証されません。
extension_name
インストールする拡張の名前です。
PostgreSQLはファイルSHAREDIR/extension/
extension_name
.control
から詳細を読み取り、拡張を作成します。
schema_name
拡張の内容を再配置させることができる場合に、拡張のオブジェクトをインストールするスキーマの名前です。 指定されたスキーマは事前に存在していなければなりません。 指定がなく、拡張の制御ファイルでもスキーマを指定していない場合、現在のデフォルトのオブジェクト生成用スキーマが使用されます。
拡張自体が任意のスキーマの中にあるとみなされていないことを思い出してください。 拡張は修飾がない名前を持ちますので、データベース全体で一意でなければなりません。 しかし拡張に属するオブジェクトはスキーマの中に置くことができます。
version
インストールする拡張のバージョンです。 これは識別子あるいは文字列リテラルのいずれかとして記述できます。 デフォルトのバージョンは拡張の制御ファイル内で規定したものになります。
old_version
FROM
old_version
は、
単なるオブジェクトの集合で拡張としてパッケージ化されていない「古い形式」のモジュールを置き換えるために拡張をインストールする時、この場合のみに指定しなければなりません。
このオプションによりCREATE EXTENSION
は、新しいオブジェクトを作成するのではなく、既存のオブジェクトをパッケージに取り入れる別のインストールスクリプトを実行するようになります。
すでに存在するオブジェクトを含有するスキーマをSCHEMA
で指定することに注意してください。
old_version
で使用する値は拡張の作成者が決定しますので、
拡張にアップグレード可能な古い形式のモジュールのバージョンが1つ以上存在する場合に変動する可能性があります。
PostgreSQL 9.1より前で提供された標準の追加モジュールでは、モジュールを拡張形式にアップグレードする時old_version
にはunpackaged
を使用してください。
拡張をデータベースにロードするためにCREATE EXTENSION
を使用できるようになる前に、拡張のサポートファイルがインストールされていなければなりません。
PostgreSQLが提供する拡張のインストールに関する情報は、追加で提供されるモジュールで説明します。
現在ロード可能な拡張はpg_available_extensions
またはpg_available_extension_versions
システムビューで識別できます。
新しい拡張の作成に関しては35.15. 関連するオブジェクトを拡張としてパッケージ化を参照してください。
現在のデータベースにhstore拡張をインストールします。
CREATE EXTENSION hstore;
9.1より前にインストールされたhstore
を拡張形式に更新します。
CREATE EXTENSION hstore SCHEMA public FROM unpackaged;
既存のhstore
オブジェクトをインストールしたスキーマを注意して指定してください。
CREATE EXTENSION
はPostgreSQLの拡張です。