Go言語 の Firebird driver 2017 [Firebird]
この記事はFirebird Advent Calendar 2017 https://qiita.com/advent-calendar/2017/firebird の7日目の記事です。
昨年のエントリーはこれ。
http://nakagami.blog.so-net.ne.jp/2016-12-20
昨年の Advent Calendar からの差分はこれ。
git diff f6b1 8e47
見返してみると内容的には、不具合修正だけのようです。
現在の issue を見ると、まだ不具合があるようです。
現在は、問題点の把握(再現コード)もできてなくて、中には不具合じゃないものもあると思うのですが、手が付けられていません。
誰か pull request 送ってください。再現のテストコードだけでもいいです。
・・・という気持ちです。
昨年のエントリーはこれ。
http://nakagami.blog.so-net.ne.jp/2016-12-20
昨年の Advent Calendar からの差分はこれ。
git diff f6b1 8e47
見返してみると内容的には、不具合修正だけのようです。
現在の issue を見ると、まだ不具合があるようです。
現在は、問題点の把握(再現コード)もできてなくて、中には不具合じゃないものもあると思うのですが、手が付けられていません。
誰か pull request 送ってください。再現のテストコードだけでもいいです。
・・・という気持ちです。
Firebird deveopers guide [Firebird]
この記事は、Firebird Advent Calendar 2017 の3日目の記事です
https://qiita.com/advent-calendar/2017/firebird
Donation を募って、ロシア語から英語に翻訳した Firebird developers Guide というドキュメントがありまして、書籍として販売するのかと思ったら、 pre beta 版が Web で公開されました。
http://www.firebirdnews.org/firebird-3-developers-guide-beta-now-available/
内容は、 Firebird2.5 での説明をベースにしていて、Firebird 3.0 については適宜「Firebird 3.0 ではこうしたほうがいいよ」という捕捉を入れている形のようです。
目次:
1. このガイドについて
2. サンプルデータベース examples.fdb について
3. Delphi によるアプリケーション開発
4. Microsoft Entity Framework による開発
5. Entity Framework と MVC で Web アプリケーション作成
やっぱり、 Firebird って Delphi とかWindows でつかわれてるんかな?という内容でした。
https://qiita.com/advent-calendar/2017/firebird
Donation を募って、ロシア語から英語に翻訳した Firebird developers Guide というドキュメントがありまして、書籍として販売するのかと思ったら、 pre beta 版が Web で公開されました。
http://www.firebirdnews.org/firebird-3-developers-guide-beta-now-available/
内容は、 Firebird2.5 での説明をベースにしていて、Firebird 3.0 については適宜「Firebird 3.0 ではこうしたほうがいいよ」という捕捉を入れている形のようです。
目次:
1. このガイドについて
2. サンプルデータベース examples.fdb について
3. Delphi によるアプリケーション開発
4. Microsoft Entity Framework による開発
5. Entity Framework と MVC で Web アプリケーション作成
やっぱり、 Firebird って Delphi とかWindows でつかわれてるんかな?という内容でした。
Ubuntu17.04 + Firebird3.0 で、はまったこと [Firebird]
日本では自分しか必要なさそうな情報だが、ここに記しておく。
Ubuntu17.04 をインストールしてみたら、Firebird3.0 のパッケージがインストールできるようになっていた
$ sudo apt install firebird3.0
これでインストール完了。便利。
firebird.conf は /etc/firebird/3.0/firebird.conf にある
インストールの途中で sysdba のパスワードを聞かれるが、あとで設定するのは
$ sudo dpkg-reconfigure firebird3.0-server
でできる。便利。
ここまではいいのだが、 isql-fb コマンドで接続できるのに、自作のデーターベースドライバーでは接続できない???
いろいろ悩んだが、 tcp6 では listen しているが tcp ではlisten していない模様。
/etc/sysctl.conf に以下の3行を加えて・・・
IPv6 を無効にしたら、IPv4 で listen するようになった。
ssh は tcp と tcp6 で listen しているので、これはどっかの init スクリプトが悪いのか、 firebird 本体が悪いのか?
めっちゃはまったけど、とりあえず解決したし、当面 IPv6 で接続できる必要はないので、これで良しとしよう。
Ubuntu17.04 をインストールしてみたら、Firebird3.0 のパッケージがインストールできるようになっていた
$ sudo apt install firebird3.0
これでインストール完了。便利。
firebird.conf は /etc/firebird/3.0/firebird.conf にある
インストールの途中で sysdba のパスワードを聞かれるが、あとで設定するのは
$ sudo dpkg-reconfigure firebird3.0-server
でできる。便利。
ここまではいいのだが、 isql-fb コマンドで接続できるのに、自作のデーターベースドライバーでは接続できない???
いろいろ悩んだが、 tcp6 では listen しているが tcp ではlisten していない模様。
$ netstat -tap |grep gds (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) tcp6 0 0 localhost:gds_db [::]:* LISTEN -
/etc/sysctl.conf に以下の3行を加えて・・・
net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1
IPv6 を無効にしたら、IPv4 で listen するようになった。
$ netstat -tap |grep gds_db (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) tcp 0 0 localhost:gds_db 0.0.0.0:* LISTEN -
ssh は tcp と tcp6 で listen しているので、これはどっかの init スクリプトが悪いのか、 firebird 本体が悪いのか?
めっちゃはまったけど、とりあえず解決したし、当面 IPv6 で接続できる必要はないので、これで良しとしよう。
Firebird LLVM build for FreeBSD and macOS [Firebird]
この記事は Firebird Advent Calendar 2016 http://qiita.com/advent-calendar/2016/firebird 24日目のエントリーです
Firebird といえば、多くのプラットフォームで動作することも特徴のひとつでした。
Advent Calendar のネタの一つと一つとして、 master ブランチのソースを Linux, Windows 以外のプラットフォームでコンパイルしてみる、というのを軽いネタとして考えていたのですがハマりました。
結局、のべ5日くらいかかかった気がします。
特に、昨日と今日の2日は(Advent Calendar に間にあわせるべく)長時間作業していて、かなり疲れました。
一昨日の時点で、手元の macOS ではある程度コンパイルできてたんですが、FreeBSD11 は、インストールを昨日の朝始めるところからでした。
(俺、クリスマス前の連休に何やってんだろう・・・)と思いましたが、なんとか結果が出せました。
https://github.com/FirebirdSQL/firebird/pull/72
もともと FreeBSD や MacOS X でコンパイルできてたわけですが、今回のコンパイルに関わるソースの修正をしていて
「もう長いこと Linux と Windows 以外ではコンパイルしている人いないんだろうなー」
という感じは受けました。
Firebird といえば、多くのプラットフォームで動作することも特徴のひとつでした。
Advent Calendar のネタの一つと一つとして、 master ブランチのソースを Linux, Windows 以外のプラットフォームでコンパイルしてみる、というのを軽いネタとして考えていたのですがハマりました。
結局、のべ5日くらいかかかった気がします。
特に、昨日と今日の2日は(Advent Calendar に間にあわせるべく)長時間作業していて、かなり疲れました。
一昨日の時点で、手元の macOS ではある程度コンパイルできてたんですが、FreeBSD11 は、インストールを昨日の朝始めるところからでした。
(俺、クリスマス前の連休に何やってんだろう・・・)と思いましたが、なんとか結果が出せました。
https://github.com/FirebirdSQL/firebird/pull/72
もともと FreeBSD や MacOS X でコンパイルできてたわけですが、今回のコンパイルに関わるソースの修正をしていて
「もう長いこと Linux と Windows 以外ではコンパイルしている人いないんだろうなー」
という感じは受けました。
Firebird client library for erlang [Firebird]
この記事は Firebird Advent Calendar 2016 http://qiita.com/advent-calendar/2016/firebird 23日目のエントリーです
プログラマーは往々にして、新しいプログラミング言語を学びたくなり、そして(そのいくつかは)マスターできないまま忘れていきます。
erlang は、私にとって、数年前からマスターしたいと思いつつ、本を読んで、途中で挫折して、また思い出したように「はじめに」から読み始めるということを繰り返しているプログラミング言語です。
そして、このままじゃいけないと思い、今年の初めに他のデーターベースのドライバーを見て、見よう見まねで書いたのが Firebird のドライバーです。
https://github.com/nakagami/efirebirdsql
決まったインターフェース仕様があるわけではないようなので、自分が実装しやすいように書いたら Python のドライバーの APIっぽくなりました。
Github に公開してすぐに hex.pm に登録しないの?という Issue が立って
https://github.com/nakagami/efirebirdsql/issues/1
そんなのあるんだーと思って Puhlish したんですが・・・
https://hex.pm/packages/efirebirdsql
ダウンロード数、めっちゃ少ないです。
現在は、 Support Firebird Events の issue に取り組んでいます
https://github.com/nakagami/efirebirdsql/issues/5
・・・というか、12月に入って真剣に取り組もうとして久しぶりにソースを読んで、機能を追加しようと思っているのですが、もともと身についてないものですから、ループの代わりに再帰で書くのに四苦八苦するところからやり直してます。
イベント機能というのは
http://nakagami.blog.so-net.ne.jp/2016-12-09
こちらを参考にしてください
プログラマーは往々にして、新しいプログラミング言語を学びたくなり、そして(そのいくつかは)マスターできないまま忘れていきます。
erlang は、私にとって、数年前からマスターしたいと思いつつ、本を読んで、途中で挫折して、また思い出したように「はじめに」から読み始めるということを繰り返しているプログラミング言語です。
そして、このままじゃいけないと思い、今年の初めに他のデーターベースのドライバーを見て、見よう見まねで書いたのが Firebird のドライバーです。
https://github.com/nakagami/efirebirdsql
決まったインターフェース仕様があるわけではないようなので、自分が実装しやすいように書いたら Python のドライバーの APIっぽくなりました。
Github に公開してすぐに hex.pm に登録しないの?という Issue が立って
https://github.com/nakagami/efirebirdsql/issues/1
そんなのあるんだーと思って Puhlish したんですが・・・
https://hex.pm/packages/efirebirdsql
ダウンロード数、めっちゃ少ないです。
現在は、 Support Firebird Events の issue に取り組んでいます
https://github.com/nakagami/efirebirdsql/issues/5
・・・というか、12月に入って真剣に取り組もうとして久しぶりにソースを読んで、機能を追加しようと思っているのですが、もともと身についてないものですから、ループの代わりに再帰で書くのに四苦八苦するところからやり直してます。
イベント機能というのは
http://nakagami.blog.so-net.ne.jp/2016-12-09
こちらを参考にしてください
Go言語 の Firebird driver 2016 [Firebird]
この記事は Firebird Advent Calendar 2016 http://qiita.com/advent-calendar/2016/firebird 20日目のエントリーです
私がスクラッチから書いている Go 言語の Firebird driver について。
まずは、過去の記録を見ていただくとして
http://nakagami.blog.so-net.ne.jp/2014-12-23
http://nakagami.blog.so-net.ne.jp/2015-12-08
機能も一通り動いているので、やれやれ、もうこれでやることないぞ、と思っていたら、
「Go1.8 で database/sql の機能が拡張されるからよろしくね」
https://github.com/nakagami/firebirdsql/issues/36
という Issue が立った。
「うーん、英語も Go言語もよくわからないし、これはどうすればいいんだ?」
と思っていたら
mattn さんにより日本語解説が書かれた
http://mattn.kaoriya.net/software/lang/go/20161106232834.htm
しかも、今までやったことなかったけど build constraints というので、
Go のバージョンでコンパイルするかしないかを分けられることを知った
http://mattn.kaoriya.net/software/lang/go/20161202095532.htm
ありがたやありがたや
ちなみに、この mattn さんの解説の時から今までで仕様の変更が少しあった。
BeginContext という関数がなくなって、代わりに
BeginTx という関数になり、その関数で
context.Content の他に、 IsolationLevel と ReadOnly かどうか
のstruct の txOptions というオプション変数を渡すようになった。
https://github.com/golang/go/blob/master/src/database/sql/driver/driver.go#L199
Firebird のドライバーについては
「複数の結果セット」はサポートせず、それ以外の関数は
形だけでも実装しようと思っている(現在進行形)
私がスクラッチから書いている Go 言語の Firebird driver について。
まずは、過去の記録を見ていただくとして
http://nakagami.blog.so-net.ne.jp/2014-12-23
http://nakagami.blog.so-net.ne.jp/2015-12-08
機能も一通り動いているので、やれやれ、もうこれでやることないぞ、と思っていたら、
「Go1.8 で database/sql の機能が拡張されるからよろしくね」
https://github.com/nakagami/firebirdsql/issues/36
という Issue が立った。
「うーん、英語も Go言語もよくわからないし、これはどうすればいいんだ?」
と思っていたら
mattn さんにより日本語解説が書かれた
http://mattn.kaoriya.net/software/lang/go/20161106232834.htm
しかも、今までやったことなかったけど build constraints というので、
Go のバージョンでコンパイルするかしないかを分けられることを知った
http://mattn.kaoriya.net/software/lang/go/20161202095532.htm
ありがたやありがたや
ちなみに、この mattn さんの解説の時から今までで仕様の変更が少しあった。
BeginContext という関数がなくなって、代わりに
BeginTx という関数になり、その関数で
context.Content の他に、 IsolationLevel と ReadOnly かどうか
のstruct の txOptions というオプション変数を渡すようになった。
https://github.com/golang/go/blob/master/src/database/sql/driver/driver.go#L199
Firebird のドライバーについては
「複数の結果セット」はサポートせず、それ以外の関数は
形だけでも実装しようと思っている(現在進行形)
Firebird4.0 Plannning [Firebird]
この記事は Firebird Advent Calendar 2016 http://qiita.com/advent-calendar/2016/firebird 19日目のエントリーです
昨年(2015年)の秋頃の話では
- 2015年中に Firebird3.0 をリリース
- Firebird3.0 リリースの少し前に Firebird 4.0 のブランチを作る
- 次のリリースは Firebird3.0 リリースから一年半後くらいにはしたいよねー
- そのためには、来年(2016年)の年末には 4.0 alpha 1 をリリースしたい
となっていました。
はい、2016年の年末を迎えて、振り返ると、やはり予想通り遅れて、
いつもの Firebird ですね。
でも、地道に進めているところも、いつもの Firebird だと思います。
Firebird のリリースの Plannning Board はここにあります
http://www.firebirdtest.com/en/planning-board/
Mandatory features の中では、テーブル名などの識別子が31文字より長い
ものが使えるようになっているようです(素晴らしい)
JIRA を見る方が現状にあっているようで、PlanningBoard の項目のいくつかは
Firebrid4.0 alpha1 から先送りされているようです。
http://tracker.firebirdsql.org/secure/IssueNavigator.jspa?reset=true&mode=hide&sorter/order=DESC&sorter/field=priority&resolution=-1&pid=10000&fixfor=10731
Planning Board や JIRA を見ると、次のバージョンでは
- 識別子に31文字以上使える
- レプリケーションやスタンバイ機能
- User/Role の機能追加
- Window 関数のさらなる追加
あたりが実装されそうです
(バックアップ/リストアも改善されるかも)
2.0 → 3.0 に 10年の月日がかかったわけですが、
2020年くらいに Firebird 4.0 が出てくれるといいなぁ、と思う今日この頃です
昨年(2015年)の秋頃の話では
- 2015年中に Firebird3.0 をリリース
- Firebird3.0 リリースの少し前に Firebird 4.0 のブランチを作る
- 次のリリースは Firebird3.0 リリースから一年半後くらいにはしたいよねー
- そのためには、来年(2016年)の年末には 4.0 alpha 1 をリリースしたい
となっていました。
はい、2016年の年末を迎えて、振り返ると、やはり予想通り遅れて、
いつもの Firebird ですね。
でも、地道に進めているところも、いつもの Firebird だと思います。
Firebird のリリースの Plannning Board はここにあります
http://www.firebirdtest.com/en/planning-board/
Mandatory features の中では、テーブル名などの識別子が31文字より長い
ものが使えるようになっているようです(素晴らしい)
JIRA を見る方が現状にあっているようで、PlanningBoard の項目のいくつかは
Firebrid4.0 alpha1 から先送りされているようです。
http://tracker.firebirdsql.org/secure/IssueNavigator.jspa?reset=true&mode=hide&sorter/order=DESC&sorter/field=priority&resolution=-1&pid=10000&fixfor=10731
Planning Board や JIRA を見ると、次のバージョンでは
- 識別子に31文字以上使える
- レプリケーションやスタンバイ機能
- User/Role の機能追加
- Window 関数のさらなる追加
あたりが実装されそうです
(バックアップ/リストアも改善されるかも)
2.0 → 3.0 に 10年の月日がかかったわけですが、
2020年くらいに Firebird 4.0 が出てくれるといいなぁ、と思う今日この頃です
Firebird ADO.Net Provider の Current status [Firebird]
この記事は Firebird Advent Calendar 2016 http://qiita.com/advent-calendar/2016/firebird 16日目のエントリーです
stable なバージョンは、最新が 5.7.0.0 で bugfix だけみたいですが
https://blog.cincura.net/233588-ado-net-provider-5-7-0-0-for-firebird-is-ready/
5.6.0.0 で .NET Core がサポートされているそうです。
https://blog.cincura.net/233580-ado-net-provider-5-6-0-0-for-firebird-is-ready-with-net-core-support/
(.NET Core についてはよくわかっておらず・・・)
5.0.0.0 のリリースで
http://www.firebirdsql.org/en/news/ado-net-provider-5-0-0-0-release/
- Boolean support
- srp authenticaiton support
- null indicator
といった Firebird3.0 の機能のへの対応が完了していますので、デフォルトのfirebird.conf のFirebird3.0 に接続できると思います。
ちなみに .NET Framework は当然として、随分前から Mono でも動くようになっています。
以前に srp authentication の pull request を送った時は、
https://github.com/cincuranet/FirebirdSql.Data.FirebirdClient/commits?author=nakagami
私は、 Windows の環境がなかったので Mono 上の MonoDevelop でコンパイルして動作確認しました
ここら↓で環境作ったときですね
http://nakagami.blog.so-net.ne.jp/2015-08-29
stable なバージョンは、最新が 5.7.0.0 で bugfix だけみたいですが
https://blog.cincura.net/233588-ado-net-provider-5-7-0-0-for-firebird-is-ready/
5.6.0.0 で .NET Core がサポートされているそうです。
https://blog.cincura.net/233580-ado-net-provider-5-6-0-0-for-firebird-is-ready-with-net-core-support/
(.NET Core についてはよくわかっておらず・・・)
5.0.0.0 のリリースで
http://www.firebirdsql.org/en/news/ado-net-provider-5-0-0-0-release/
- Boolean support
- srp authenticaiton support
- null indicator
といった Firebird3.0 の機能のへの対応が完了していますので、デフォルトのfirebird.conf のFirebird3.0 に接続できると思います。
ちなみに .NET Framework は当然として、随分前から Mono でも動くようになっています。
以前に srp authentication の pull request を送った時は、
https://github.com/cincuranet/FirebirdSql.Data.FirebirdClient/commits?author=nakagami
私は、 Windows の環境がなかったので Mono 上の MonoDevelop でコンパイルして動作確認しました
ここら↓で環境作ったときですね
http://nakagami.blog.so-net.ne.jp/2015-08-29
Jaybird (Firebird JDBC Driver) の Current status [Firebird]
この記事は Firebird Advent Calendar 2016 http://qiita.com/advent-calendar/2016/firebird 15日目のエントリーです
Firebird 3.0 に関連するプロトコル追加について Pull Request を
送ったことについて、昨年の AdventCalendar に書きました
http://nakagami.blog.so-net.ne.jp/2015-12-20
その時点では「 master にマージされてリリースされていない」という状態で
Firebird3.0 もリリースされていませんでした。
その後 Firebird 3.0 がリリースされましたが Firebird 3.0 のWireprotocol 13 に対応したドライバー Jaybird 3.0 は現在 beta1
http://www.firebirdsql.org/en/news/jaybird-3-0-0-beta-1-is-now-available-for-testing/
http://www.firebirdsql.org/file/documentation/drivers_documentation/java/3.0.0-beta-1/release_notes.html
去年の夏頃に Pull Request を送って、
https://github.com/FirebirdSQL/jaybird/commits?author=nakagami
その頃にはまだ Firebird 3.0 がリリースされてなかったとはいうものの、データーベース関連の OSS のリリースは実に慎重だなぁ、と思う今日この頃です。
Firebird 3.0 に関連するプロトコル追加について Pull Request を
送ったことについて、昨年の AdventCalendar に書きました
http://nakagami.blog.so-net.ne.jp/2015-12-20
その時点では「 master にマージされてリリースされていない」という状態で
Firebird3.0 もリリースされていませんでした。
その後 Firebird 3.0 がリリースされましたが Firebird 3.0 のWireprotocol 13 に対応したドライバー Jaybird 3.0 は現在 beta1
http://www.firebirdsql.org/en/news/jaybird-3-0-0-beta-1-is-now-available-for-testing/
http://www.firebirdsql.org/file/documentation/drivers_documentation/java/3.0.0-beta-1/release_notes.html
去年の夏頃に Pull Request を送って、
https://github.com/FirebirdSQL/jaybird/commits?author=nakagami
その頃にはまだ Firebird 3.0 がリリースされてなかったとはいうものの、データーベース関連の OSS のリリースは実に慎重だなぁ、と思う今日この頃です。
Firebird 3.0 の統計処理用の集約関数 [Firebird]
この記事は Firebird Advent Calendar 2016 http://qiita.com/advent-calendar/2016/firebird 13日目のエントリーです
Firebird 3.0 で相関係数・標準偏差とその関連の値を求める関数が実装されました。
公式なドキュメントしては、 Firebird3.0 のリリースノートに説明があるので読んでください。
http://firebirdsql.org/file/documentation/release_notes/html/en/3_0/bk01ch09s05.html#rnfb30-dml-statistical
(PostgreSQLでは歴史的理由で残されている stddev, variance は、Firebird では実装されていませんが)PostgreSQL の統計処理用の集約関数に相当するので、日本語で読みたい場合は、PostgreSQL のリファレンスマニュアルを見るのが良いと思います。
https://www.postgresql.jp/document/9.6/html/functions-aggregate.html#functions-aggregate-statistics-table
ぶっちゃけ、私も、この PostgreSQL の表を参考に実装しました。
今年の Firebird Advent Calendar では、 meijik さんが、
「使い慣れたSQLに潜む実装依存: Firebirdの場合」
というテーマで連続して書かれてますが、標準偏差、分散に関連する関数についても、PostgreSQL で、戻り値の型が
「浮動小数点型の引数ではdouble precision。それ以外ではnumeric 」
となっているところは、Firebird では常に double precision が返ります。
関数の詳細について、日本語で書かれた良いドキュメントないかなーと探したのですが、
標準偏差と分散については Redshift のマニュアルがわかりやすいと思いました。
- http://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_STDDEV_functions.html
- http://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_VARIANCE_functions.html
残念ながら、そのほかの関数は Redshift では実装されてないようです
- http://docs.aws.amazon.com/ja_jp/redshift/latest/dg/c_unsupported-postgresql-functions.html
これらの関数について pull request を送ってマージされた話は昨年の Firebird Advent Calendar 2015
http://nakagami.blog.so-net.ne.jp/2015-12-22 に書きました
Firebird 3.0 で相関係数・標準偏差とその関連の値を求める関数が実装されました。
公式なドキュメントしては、 Firebird3.0 のリリースノートに説明があるので読んでください。
http://firebirdsql.org/file/documentation/release_notes/html/en/3_0/bk01ch09s05.html#rnfb30-dml-statistical
(PostgreSQLでは歴史的理由で残されている stddev, variance は、Firebird では実装されていませんが)PostgreSQL の統計処理用の集約関数に相当するので、日本語で読みたい場合は、PostgreSQL のリファレンスマニュアルを見るのが良いと思います。
https://www.postgresql.jp/document/9.6/html/functions-aggregate.html#functions-aggregate-statistics-table
ぶっちゃけ、私も、この PostgreSQL の表を参考に実装しました。
今年の Firebird Advent Calendar では、 meijik さんが、
「使い慣れたSQLに潜む実装依存: Firebirdの場合」
というテーマで連続して書かれてますが、標準偏差、分散に関連する関数についても、PostgreSQL で、戻り値の型が
「浮動小数点型の引数ではdouble precision。それ以外ではnumeric 」
となっているところは、Firebird では常に double precision が返ります。
関数の詳細について、日本語で書かれた良いドキュメントないかなーと探したのですが、
標準偏差と分散については Redshift のマニュアルがわかりやすいと思いました。
- http://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_STDDEV_functions.html
- http://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_VARIANCE_functions.html
残念ながら、そのほかの関数は Redshift では実装されてないようです
- http://docs.aws.amazon.com/ja_jp/redshift/latest/dg/c_unsupported-postgresql-functions.html
これらの関数について pull request を送ってマージされた話は昨年の Firebird Advent Calendar 2015
http://nakagami.blog.so-net.ne.jp/2015-12-22 に書きました