戻り値の型がrecordの場合の取り扱い方法
Postgresの関数の中で、recordを返すものがある。
つまり、テーブルをSelectした時みたいに複数のカラムを持つ複数行のレコードを返す関数だ。
例えば、textsearch_ja の ja_analyze(text)関数。
こいつは、ある文字列を受け取って、それをmecabで形態素解析した結果を1単語1レコードで返す。
なので、インプット1行に対し、0~複数行の結果を返す。
この時、普通に関数を実行しただけだと、戻り値の方がrecord型なのでちゃんと読めない。
record型のSELECTの仕方は以下の通り。
カラム名を括弧でくくるのがポイント。
select (ana).* from ( select ja_analyze(text) as ana from test ) sub;
select (ana).word, (ana).type from ( select ja_analyze(text) as ana from test ) sub;