2013/10/13
R > PL/R が PostgreSQL 9.3 に対応
R > PL/R が PostgreSQL 9.3 に対応
先月末日に PostgreSQL 9.3 から PL/R を無理矢理使う方法を書いたが、予想外に早く PL/R が PostgreSQL 9.3 に対応したので意味がなくなってしまったw ともかく 9.3 で普通に PL/R が使えるようになって嬉しい。インストール時の手順はほとんど PostgreSQL 9.2 へのインストール と同じだが、以下にメモしておく。OS はいつも通り Windows XP SP3。
まず公式サイトのトップページからインストール用ファイルを入手する。下のように 9.3 対応版が追加されている。テキストだけのシンプルな Web なので変化に気づきにくい…。
PL/R - R Procedural Language for PostgreSQL
http://www.joeconway.com/plr/
Change log を見ると 9.3 対応だけでなく若干の改良が行われている。ある種のエラーが PostgreSQL サーバをクラッシュさせないようにしたり、ストアド関数の引数で OUT を使えるようになったり。前者の恐ろしい例は 2013/09/14(PL/R で日本語を直に使うとサーバが落ちる)で書いた。これが直っていると非常に嬉しいが、何しろサーバが止まる可能性があるので簡単にはテストできない。いずれ検証できたら記事にする。
上記公式サイトから Win32 用をダウンロードする。ZIP ファイルで、内容は下のとおり。更新日時を見ると 10/7・8 で、つい先週出たらしい。
↓ ZIP 内の README.txt 全文。簡潔で分かりやすい。PostgreSQL 9.2 の 32bit 用は PATH が 64bit 版の場所に間違っていたが(PostgreSQL 9.2 へのインストール 3. を参照)今回は正しく <rdir>\bin\i386 になっている。
上記 README にならって私の環境で PL/R インストールに必要な作業一覧は次のとおり。
上記を粛々と実行する。先月、うっかり R_HOME の先頭に半角スペースを入れていたのに気づかず「PL/R が動かない!」と勘違いしてしまった(9/22 の記事参照)。同じ失敗を繰り返さないよう確実に・・・。
↓ 結果、PostgreSQL 9.3 のデータベースに無事インストールできた。
↓ R の runif 関数をそのまま PostgreSQL のストアド関数で作成した例。
↓ 今回対応の OUT パラメータを使って関数を定義した例。
PL/R が PostgreSQL 9.2 に対応したのは 9.2 リリースから結構経ってからだった。それに比べ今回は 9.3 リリースの翌月に対応するという早さで、かつ地道に改良されていてありがたい。PostGIS 2.1 Bundle といい、最近 PostgreSQL 拡張機能の充実ぶりがすごい。
まず公式サイトのトップページからインストール用ファイルを入手する。下のように 9.3 対応版が追加されている。テキストだけのシンプルな Web なので変化に気づきにくい…。
PL/R - R Procedural Language for PostgreSQL
http://www.joeconway.com/plr/
Change log を見ると 9.3 対応だけでなく若干の改良が行われている。ある種のエラーが PostgreSQL サーバをクラッシュさせないようにしたり、ストアド関数の引数で OUT を使えるようになったり。前者の恐ろしい例は 2013/09/14(PL/R で日本語を直に使うとサーバが落ちる)で書いた。これが直っていると非常に嬉しいが、何しろサーバが止まる可能性があるので簡単にはテストできない。いずれ検証できたら記事にする。
上記公式サイトから Win32 用をダウンロードする。ZIP ファイルで、内容は下のとおり。更新日時を見ると 10/7・8 で、つい先週出たらしい。
↓ ZIP 内の README.txt 全文。簡潔で分かりやすい。PostgreSQL 9.2 の 32bit 用は PATH が 64bit 版の場所に間違っていたが(PostgreSQL 9.2 へのインストール 3. を参照)今回は正しく <rdir>\bin\i386 になっている。
上記 README にならって私の環境で PL/R インストールに必要な作業一覧は次のとおり。
1) ZIP からファイルコピー
plr.dll -> C:\Program Files\PostgreSQL\9.3\lib\
plr.control, plr.sql, plr--8.3.0.15.sql, plr--unpackaged--8.3.0.15.sql
-> C:\Program Files\PostgreSQL\9.3\share\extension\
2) 環境変数 PATH に追加
C:\Program Files\PostgreSQL\9.3\bin
C:\Program Files\PostgreSQL\9.3\lib
C:\Program Files\R\R-2.15.3\bin\i386
3) 環境変数 R_HOME を設定
R_HOME=C:\Program Files\R\R-2.15.3
4) PostgreSQL 9.3 サーバを再起動
5) PL/R インストール先のデータベースで SQL 実行
CREATE EXTENSION plr ;
上記を粛々と実行する。先月、うっかり R_HOME の先頭に半角スペースを入れていたのに気づかず「PL/R が動かない!」と勘違いしてしまった(9/22 の記事参照)。同じ失敗を繰り返さないよう確実に・・・。
↓ 結果、PostgreSQL 9.3 のデータベースに無事インストールできた。
↓ R の runif 関数をそのまま PostgreSQL のストアド関数で作成した例。
↓ 今回対応の OUT パラメータを使って関数を定義した例。
PL/R が PostgreSQL 9.2 に対応したのは 9.2 リリースから結構経ってからだった。それに比べ今回は 9.3 リリースの翌月に対応するという早さで、かつ地道に改良されていてありがたい。PostGIS 2.1 Bundle といい、最近 PostgreSQL 拡張機能の充実ぶりがすごい。