9.4の新機能のうち、運用は信頼性向上に関わる実装や、将来的な発展を見込んだ機能強化を見ていきます。9.4の注目機能である「JSONB」や「GINインデックス」を、第2回では運用時の利便性が向上する機能を中心に紹介してきました。今回は、新たに対応した問い合わせ構文と、レプリケーションに関する機能強化を紹介します。将来の機能追加のための基盤となる機能追加についても紹介します。本連載では、執筆時点で公開されているベータ版を前提にして解説しています。更新ビューのCHECKオプションPostgreSQLは、ビューに対して「INSERT」「DELETE」「UPDATE」の操作が実行可能です。この操作は、ビューの更新に対して、どのテーブルに反映させるかを「RULE」としてあらかじめ定義しておくことで実現しています。9.3以降で、かつ、テーブル結合や集約処理を伴わないシンプルなビューであれば、ビューを定義するだけで自動的に更新可能になっています。更新ビュー機能の応用として有力なのは、あるユーザーに対して、テーブルの特定の一部データだけを対象に、参照と操作を許可することです。具体的には、以下のようにWHERE条件の付いたビューを作り、GRANT命令でビューにSELECTとUPDATEを許可することで実現できます。foo;ビューに権限を与えられたfooユーザーからは、次のようにして操作します。100;ところが、この方式だと、以下のようなビューの範囲外の値に更新する処理を許すことになってしまいます。実行するとid=100の行はv_public_docuemntビューから消えたように見えます。VIEW命令にCHECKオプションが追加され、ビューで定義している範囲外の値を挿入したり、範囲外の値に更新することを禁止できるようになりました。VIEW命令のCHECKオプションは以下のように使用します。OPTION;CHECKオプションが付加されたビューの場合は、先ほどのような更新は下記の例のように、エラーとなります。t).なお、CHECKオプションが使えるのは、今のところ自動的に定義された更新可能ビューだけです。RULEによって定義された更新可能ビューに対しては、CHECKオプションは使用できません。集約クエリのFILTERオプション集約処理をするSELECT命令に新たな構文が加わりました。1」であるものに限定して、日ごとに件数を集計しています。rows)これをFILTER構文を使って条件を選択リストに記述するように書き換えることができます。以下は、上記SQLと同じ結果になります。t;このSELECT命令のFILTER構文は、以下のようにさまざまな条件での集計を一度に行う際に便利です。以下のように記述すると、t_access_logに対する走査は全体で1回だけ行われ、条件付きの各集計はその中でそれぞれに実行されます。したがって、書き方が便利になっただけでなく、処理効率もアップしています。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。