Chapter 26. PL/Perl - Perl による手続き言語

Table of Contents
26.1. 構築と導入
26.2. PL/Perlを使用する

PL/Perl を使うと、あたかも Postgres に組み込まれているかの ように Perl プログラミング言語を使った SQL 問い合わせ関数の作成 を行うことができます。

PL/Perl インタプリタは、完全な Perl インタプリタです。 しかしながら、システムのセキュリティレベルを確保するために、 使用できないようにしている機能もあります。 一般に、これらの制限されている操作は環境と互いに影響し合って います。例としては、ファイルハンドルの操作、 require、(外部モジュール用の) use などがあります。 このセキュリティが絶対ではないことは知っておくべきでしょう。 実際に、いくつかの DoS攻撃 (サービス停止攻撃: Denial-of-Service) - メモリ浪費とエンドレスループの 2 つの例 - は現状でも可能です。

26.1. 構築と導入

PostgresのソースからPL/Perlをインストールする場合は、 configureスクリプトに--with-perlオプション を付けなければなりません。 PL/Perlでは、Perllibperlライブ ラリが共用オブジェクトとしてビルドされている必要があります。 現時点では、OSに予め備わっているPerlパッケージのほとんどは、このようになっ ていません。 そこで、次のようなメッセージがビルドするときに表示されることがあります。

*****
* Cannot build PL/Perl because libperl is not a shared library.
* Skipped.
*****
したがって多くの場合、PL/Perlを構築するために、Perlを再度手動でビルドし、インストール しなければなりません。

Perlを再インストールした後に、PL/Perlを再度ビルドする時は、 Postgresソースツリーの src/pl/plperl にチェンジディレクトリして、 次のコマンドを実行します。

gmake clean
gmake all
gmake install

createlangコマンドは、データベースに言語を導入 するために使います。

$ createlang plperl template1
template1へインストールすると、その後に作成される全てのデータベースにはその言語が 自動的にインストールされます。