自分は今のところ、WindowsPL/v8を使う時の準備作業は、配布されているコンパイル済みzipを解凍しフォルダごとコピーするだけ。なので今ごろ気付いたのですが、zipの中にv8エンジンのシェルであるd8.exeが付属しており、特段の作業は不要でコマンドプロンプト内でJavaScriptを動かせます。また ↓ のようにpsqlからも呼び出せるので、一つのDOS窓でSQLJavaScriptを行ったり来たりが可能。実行環境はWindows 7 64bit + PostgreSQL 9.4.5、コンソールはConEmuで確認しました。


PostgreSQL 9.4PL/v8を使う準備

923に書いたのと基本同じですが、PostgreSQLのマイナーバージョン等が微妙に違うので今回の手順を一応まとめておきます。

  1. EnterpriseDB - Download PostgreSQL Binariesから、zip版のPostgreSQL 9.4.5(Windows 64bit用)をダウンロードし適当な場所に解凍。最低限必要なフォルダはbin, lib, shareの三つ。
  2. 上記zipVisual C++のランタイムが入ってないので、mvcr120.dllを入手してbinフォルダにコピー。(詳細: 1217日の記事)
  3. Postgres OnLine Journal - PLV8 binaries for PostgreSQL 9.4 windows both 32-bit and 64-bitにあるzipをダウンロードし(pg94plv8jsbin_w64.zip)中にあるbin, lib, shareの各フォルダを丸ごとPostgreSQL本体のフォルダにコピー。
  4. zip版のPostgreSQLを手動で動かすバッチファイルを作り実行して、サーバを起動。(参考: 1219日の記事)
  5. psql等でデータベースに接続。テスト用のDBを作り、それに接続し直してCREATE EXTENSION plv8;


3.pg94plv8jsbin_w64.zipの中身は ↓ で、binフォルダにd8.exeがあります。PostgreSQLPL/v8を使わずJavaScriptシェルだけ必要な場合は、このzipだけでOK。


動作確認

まずd8.exe単独でテスト。d8と打てばシェルが起動し、--helpでヘルプ(結構長い)が表示されます。下記のコンソールにはヘルプのみ示しました。
$ cd
D:\AppsPortable\PostgreSQL\9.4.5\bin

$ d8 --help
Usage:
  shell [options] -e string
    execute string in V8
  shell [options] file1 file2 ... filek
    run JavaScript scripts in file1, file2, ..., filek
  shell [options]
  shell [options] --shell [file1 file2 ... filek]
    run an interactive JavaScript shell
  d8 [options] file1 file2 ... filek
  d8 [options]
  d8 [options] --shell [file1 file2 ... filek]
    run the new debugging shell

Options:
  --use_strict (enforce strict mode)
        type: bool  default: false
(...)


次にpsqlから一時的にd8を呼び出し、終了してpsqlに戻る例。事前にPostgreSQLサーバを起動させておきます。psqlでは「
\!」で任意のコマンドを実行できるので、今回のように同じパスにd8があれば「\! d8」だけでd8のシェルに移れます。下記は、とりあえずprintHello Worldと、Date・Mathオブジェトが使える確認。JavaScriptなので累乗が間違えやすい(x^yが、xy乗でない)。シェル終了はquit()。
$ cd
D:\AppsPortable\PostgreSQL\9.4.5\bin

$ psql -U postgres
psql (9.4.5)
Type "help" for help.

postgres=# \! d8
V8 version 3.14.5 [console: dumb]
d8>
d8> print('Hello World')
Hello World
d8>
d8> new Date
Fri Dec 25 2015 20:25:46 GMT+0900 (Tokyo Standard Time)
d8>
d8> Math.pow(2, 10)
1024
d8>
d8> 2^10
8
d8> quit()
postgres=#


d8シェルに関する情報は少なく、下記が参考になりました。この記事によれば公式ドキュメントは無いらしい。


psqlJavaScriptを入ったり来たりって、実際そんなに多いか疑問ですけど^^; PL/v8のストアドをいじる時は、無名コードブロック(DO文)で部分部分を確認する方が便利だし。でもまぁ、JavaScriptの小さなテストをするためにブラウザを起動して開発ツールのコンソールを使うよりはいいかな。マウスに手を延ばさなくて済むし。

問題は、WindowsPostgreSQL 9.5に使えるコンパイル済みPL/v8がまだ出てないこと。いつもPL/v8公式とは関係なく海外のユーザがビルドしてPostgreSQL Onlineに投稿してくれており、それを待っているという…。
先日のアンカンファレンス2次会でも話が出たように、何とかしたいです。