PostgreSQL 8.0.0 文書
前のページ | 巻戻し |  | 早送り | 次のページ

# CREATE LANGUAGE

## 名前

CREATE LANGUAGE -- 新しい手続き言語の定義

## 概要

    CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE name
        HANDLER call_handler [ VALIDATOR valfunction ]

## 説明

PostgreSQLユーザは、`CREATE LANGUAGE`を使って新しい手続き言語をPostgreSQLデータベースに登録することができます。 その後、関数とトリガプロシージャはこの新しい言語で定義可能になります。 ユーザは新しい言語を登録するためにはPostgreSQLのスーパーユーザ権限を持っていなければいけません。

`CREATE LANGUAGE`は効率的に言語名と、その言語で作成された関数の実行に責任をもつ呼び出しハンドラを関連付けます。 言語呼び出しハンドラについての詳細は第34章を参照してください。

手続き言語は各データベースに局所的なものであることに注意してください。 言語をデフォルトで全てのデータベースで使用できるようにするためには、`template1`データベースにインストールされなければなりません。

## パラメータ

`TRUSTED`

  `TRUSTED`は、その言語の呼び出しハンドラが安全であることを指定します。 つまり、権限を持たないユーザにはアクセス制限を無視する機能を何も与えないということです。 もし言語を登録する時にこのキーワードが省略されると、PostgreSQLのスーパーユーザ権限を持つユーザのみが新しい関数を作るためにこの言語を使うことができるようになります。

`PROCEDURAL`

  この単語はノイズです。

`name`

  新しい手続き言語の名前です。 言語名は大文字/小文字の区別がありません。 この名前はデータベース内の言語の中で一意でなければなりません。

  後方互換のため、この名前を単一引用符で括ることもできます。

`HANDLER` `call_handler`

  `call_handler`は、事前に登録されていた関数の名前で、この手続き言語の関数を実行するために呼び出されるものです。 手続き言語用の呼び出しハンドラは、C言語のようなコンパイル言語でバージョン1呼び出し規約を使用して作成し、引数を取らない`language_handler`型を返す関数として、PostgreSQLに登録されなければなりません。 `language_handler`型は、単に関数を呼び出しハンドラとして識別するのに使用するプレースホルダ型です。

`VALIDATOR` `valfunction`

  `valfunction`は、事前登録済みの関数の名前で、新しい関数がその言語で作成された場合、その新しい関数を検証するために呼び出されます。 検証用関数が指定されていない場合、新しい関数は作成時にチェックされません。 検証用関数は、`oid`型の引数を1つ取る必要があります。 この引数は作成される関数のOIDになります。 また、通常`void`型を返します。

  検証用関数は通常、関数本体が構文上正しいかどうかを検査するために使用されます。 しかし、それだけでなく、例えばその言語が特定の引数データ型を処理できないといった、関数の他のプロパティも参照可能です。 エラーを知らせるには、検証用関数で`ereport()`関数を使用してください。 関数の戻り値は無視されます。

## 注釈

通常このコマンドはユーザが直接実行するものではありません。 PostgreSQL配布物に含まれる手続き言語では、createlangスクリプトが使用されなければなりません。 これは正確な呼び出しハンドラのインストールも行ないます。 (`createlang`は内部的に`CREATE LANGUAGE`を呼び出します。)

PostgreSQL 7.3より前のバージョンでは、ハンドラ関数を`language_handler`型ではなくプレースホルダ型である`opaque`型を返すように宣言する必要がありました。 古いダンプファイルのロードをサポートするため、`CREATE LANGUAGE`では`opaque`型を返すように宣言された関数を受け入れます。 しかし、注意を促すメッセージを発行し、宣言された関数の戻り値型を`language_handler`に変換します。

新しい関数を作成するには、CREATE FUNCTIONコマンドを使用してください。

手続き言語を削除するには、DROP LANGUAGEを使用してください。 droplangプログラムを使用する方が良いでしょう。

`pg_language`システムカタログ(項41.18参照)は現時点でインストールされた手続き言語の情報を記録します。 また、`createlang`には、インストール済み言語の一覧を出力するオプションがあります。

手続き言語を使用可能にするには、ユーザに`USAGE`権限を与える必要があります。 その言語が信頼できる(trusted)と分かっている場合は、`createlang`プログラムで全ユーザに自動的に権限を与えます。

## 例

以下の続けて実行される2コマンドは新しい手続き言語と関連する呼び出しハンドラを登録します。

    CREATE FUNCTION plsample_call_handler() RETURNS language_handler
        AS '$libdir/plsample'
        LANGUAGE C;
    CREATE LANGUAGE plsample
        HANDLER plsample_call_handler;

## 互換性

`CREATE LANGUAGE`はPostgreSQLの拡張です。

## 関連項目

ALTER LANGUAGE, CREATE FUNCTION, DROP LANGUAGE, GRANT, REVOKE, createlang, droplang

前のページ | ホーム | 次のページ
CREATE INDEX | 上に戻る | CREATE OPERATOR