これはPGroonga 2.X and 3.X用のドキュメントです。古いPGroongaを使っているならPGroonga 1.xのドキュメントを見てください。
pgroonga_result_to_recordset
関数2.3.0で追加。
pgroonga_result_to_recordset
function is similar to pgroonga_result_to_jsonb_objects
function.
pgroonga_result_to_recordset
関数はpgroonga_command
関数の結果のJSONをrecord
型の集合に変換します。この関数はPostgreSQLのjsonb_to_recordset
関数に似ています。通常、record
型の集合の方が結果のJSONよりも扱いやすいです。
将来的にはGroongaのコマンドのすべての結果JSONフォーマットをサポートする予定ですが、現時点では次のコマンドだけサポートしています。
select
: command_version=1
select
: command_version=3
この関数の構文は次の通りです。
setof record pgroonga_result_to_recordset(result)
result
はjsonb
型の値です。pgroonga_command
関数の結果のtext
をjsonb
にキャストすればこの関数に渡せます。
サンプルスキーマとデータは次の通りです。
CREATE TABLE memos (
content text
);
CREATE INDEX pgroonga_memos_index
ON memos
USING pgroonga (content);
INSERT INTO memos VALUES ('PGroonga (PostgreSQL+Groonga) is great!');
INSERT INTO memos VALUES ('Groonga is an embeddable full text search engine.');
以下はrecord
の集合を返す例です。
SELECT pgroonga_result_to_recordset(
pgroonga_command(
'select',
ARRAY[
'table', pgroonga_table_name('pgroonga_memos_index')
]
)::jsonb
);
-- pgroonga_result_to_recordset
-- -----------------------------------------------------------
-- (1,1,"PGroonga (PostgreSQL+Groonga) is great!")
-- (2,2,"Groonga is an embeddable full text search engine.")
-- (2 rows)
カラム名とカラムの型をAS
で指定することでFROM
でこの結果レコードの集合を使うことができます。
SELECT *
FROM pgroonga_result_to_recordset(
pgroonga_command(
'select',
ARRAY[
'table', pgroonga_table_name('pgroonga_memos_index')
]
)::jsonb
) AS record(
_id bigint,
_key bigint,
content text
);
-- _id | _key | content
-- -----+------+---------------------------------------------------
-- 1 | 1 | PGroonga (PostgreSQL+Groonga) is great!
-- 2 | 2 | Groonga is an embeddable full text search engine.
-- (2 rows)