tom__bo’s Blog

MySQL!! MySQL!! @tom__bo

第33回 PostgreSQL 勉強会に行ってきた

2015/11/14に開催されたPosgtreSQL勉強会に参加してきた。相変わらずイベント系はなぜか記事にするのに間隔が空く。。。
第33回 PostgreSQL 勉強会(2015年11月14日) — NPO法人 日本PostgreSQLユーザ会


f:id:tom__bo:20151025155132p:plain
公演とPostgreSQLのパッチレビューをするハンズオンがありました。
<プログラム>


ハンズオンに参加する人には事前準備の必要もあったので、勉強会に関してやったことをまとめてみようと思います。
<目次>

  1. 事前準備
  2. プログラムメモ
  3. ハンズオン復習

1. 事前準備

前出のURLの事前に準備することの内容です。
基本的な開発環境の準備とPostgreSQLのビルドをしておくようにということだったので、いつものようにVagrantでCentos6.5に環境を用意して、box化しておきました。

centos65での作業(以前の記事を参考にpostgresユーザで実行)

$ sudo yum install git gcc zlib-devel bison flex readline-devel openssl-devel -y
# PostgreSQLのビルド
$ git clone https://github.com/postgres/postgres.git postgres
$ cd postgres
$ ./configure --prefix=/usr/local/pgsql –-enable-depend --enable-debug –-enable-cassert 
$ make
## 上手く行かなかった↓
$ make check
$ make install 

make checkした時にエラーが出て、error.log見に行ったらinitdbでエラーを吐いてた。

initdb: invalid locale settings; check LANG and LC_* environment variables

ロケールの設定が良くないらしいがロケールはja_JP.UTF-8に設定されていて、よくわからないので、以前やったようにgmakeでやる。

$ gmake
$ cd contrib
$ gmake
$ cd ..
$ sudo mkdir -p /usr/local/pgsql
$ sudo chown postgres:postgres /usr/local/pgsql
$ gmake install
$ cd contrib
$ gmake install

initdbするも、localeの設定にjapaneseはないと言われるので、--no-localeで初期化した。
パスを通して読みこめばちゃんとpg_ctlで起動することが出来た。

$ initdb --no-local -D /usr/local/pgsql/data -E=UTF8


あとは、DBに接続できるかの確認をしてboxとして書き出しておいた。
この他に予習内容として上げられている
Developer FAQ/ja
Reviewing a Patch/ja
Submitting a Patch
を眺めて、そっと閉じた。



2. プログラムメモ

予定通り安永さんと澤田さんの発表だった。スライドで発表したのはⅠ時間ずつくらい。
安永さんスライドwww.slideshare.net

おまけ

www.slideshare.net

澤田さんスライド

www.slideshare.net


どちらもPostgreSQL初心者の自分には情報量が結構多いけど、あとから振り返れるようにスライドが作られていたので、非常にありがたい。説明するほどわかっていないし、目次から導入からわかりやすいので、スライドをみてください。

お二人の発表で、PostgreSQLを拡張するとしたらどういう手段があって、どこから手を付けると良いか、更にコードを書かなくても、コミュニティに貢献する方法もあるということが順序良く説明してもらえて、とても充実した内容になっていた。

まだまだ機能を開発するような実力やニーズは自分にはないけれど、OSSの開発様式の1つを知ることが出来たという意味でもとてもためになった。



3. ハンズオン復習

後半の1時間ちょっとは澤田さんの発表の延長といった感じで、PostgreSQLのバッチをレビューする時間だった。
PostgreSQLの開発にはCommitFest (以後CF)という次バージョンで追加される機能提案と実装のフェーズがあり、ちょうど発表のあった日は9.6へのCF3の時期だったので、CommitFest Appに登録されているバッチのレビューを参加者全員でやってみるという内容。

自分は体調が悪くてぐだっとしていたのだが、せっかく前準備をして途中までこの記事を書いたことなので、バッチを当てるところまでをやってみようと思う。

どのパッチをレビューするところから参加者各々が選ぶ形だったので、僕は簡単そうな
psqlのtrue, falseを自分の好きな値に再定義してその結果で取得できるようにするといった提案を見てみることにした。


f:id:tom__bo:20151119021943p:plain

写真下の方のLatest attachmentのリンクにパッチの内容があるので、DLする。
これをPostgreSQLのダウンロード先トップディレクトリに持って行って、

$ patch -p1 < psqltruefalse_v1.patch
$ make -j 4
$ make install

詳細はスライドをm(_ _)m
こういったパッチを当てる作業や、コンパイル時に失敗していたら、そのことを報告することも立派なコミュニティ貢献になるという話があった。確かに、完璧なものでなくても、自分の提案しているものにレスポンスがあることは結構大事だよなといった感じ。

今回のパッチはビルドも成功してくれるので、提案のサンプルに付いているとおりにtrue, falseの表示方式を設定してみると

postgres-# \pset true TRUE
Boolean TRUE display is "TRUE".

postgres-#  \pset false FALSE
Boolean FALSE display is "FALSE".

postgres=# select true, false;
 bool | bool
------+-------
 TRUE | FALSE
(1 row)


ちゃんと変わってるじゃん!!!ということでバッチの内容が再現できた!
最高!!
これでLGTMとか(そんな軽くないか?)レビューコメントをかけば良さそう。

ということでこういった手順を追ってPostgreSQLが開発されているんだなーということがわかった(=゚ω゚)ノ

コアな部分の議論に参加したり、機能の提案をするのは厳しいけれど、こういったバッチのレビューやドキュメントの訂正だったりは、確かに頑張ってやれば貢献できる内容だと実感できた。
まだまだPostgreSQLの基本的な機能を使いこなすことができていないけど、OSSに与えてもらうばかりなの状態でいるのは良くないので、少しでも+αできる用に今後も頑張りたい。



勉強会を開いて下さった方々ありがとうございました。






終わり ⊂゚U┬───┬~