これはPGroonga 2.X and 3.X用のドキュメントです。古いPGroongaを使っているならPGroonga 1.xのドキュメントを見てください。
pgroonga_index_column_name
関数2.2.6で追加。
pgroonga_index_column_name
関数はPGroongaのインデックス名をGroongaのインデックスカラム名に変換します。Groongaのインデックスカラム名はpgroonga_command
関数でobject_inspect
Groongaコマンドを使うときに有用です。PGroongaのインデックスに対してobject_inspect
Groongaコマンドを使うときはGroongaのインデックスカラム名が必要です。
この関数の構文は次の通りです。
text pgroonga_index_column_name(pgroonga_index_name, column_name)
text pgroonga_index_column_name(pgroonga_index_name, column_index)
pgroonga_index_name
はtext
型の値です。これはGroongaのインデックスカラム名に変換したいインデックス名です。このインデックスはUSING pgroonga
付きで作られたインデックスでなければいけません。
column_name
はtext
型の値です。対象のPGroongaのインデックス内の対象のカラム名を指定します。
column_index
はint4
型の値です。これは対象のPGroongaのインデックス内の対象カラムの位置です。最初のカラムの位置は0です。
以下はサンプルスキーマです。
CREATE TABLE memos (
id integer,
title text,
content text,
tag text
);
CREATE INDEX pgroonga_index
ON memos
USING pgroonga (title, content, tag);
以下はcolumn_index
を使う例です。
SELECT pgroonga_index_column_name('pgroonga_index', 2);
-- pgroonga_index_column_name
-- ----------------------------
-- Lexicon17780_2.index
-- (1 row)
以下はcolumn_name
を使う例です。
SELECT pgroonga_index_column_name('pgroonga_index', 'tag');
-- pgroonga_index_column_name
-- ----------------------------
-- Lexicon17780_2.index
-- (1 row)
以下はobject_inspect
Groongaコマンド用にpgroonga_index_column_name()
を使う例です。
SELECT jsonb_pretty(
pgroonga_command('object_inspect',
ARRAY[
'name', pgroonga_index_column_name('pgroonga_index', 'tag')
])::jsonb
);
jsonb_pretty
------------------------------------------------------
-- [ +
-- [ +
-- 0, +
-- 1593478420.606223, +
-- 0.001304388046264648 +
-- ], +
-- { +
-- "id": 272, +
-- "name": "index", +
-- "type": { +
-- "raw": { +
-- "id": 72, +
-- "name": "column:index" +
-- }, +
-- "name": "index" +
-- }, +
-- "table": { +
-- "id": 270, +
-- "key": { +
-- "type": { +
-- "id": 14, +
-- "name": "ShortText", +
-- "size": 4096, +
-- "type": { +
-- "id": 32, +
-- "name": "type" +
-- } +
-- }, +
-- "total_size": 0, +
-- "max_total_size": 4294967294 +
-- }, +
-- "name": "Lexicon17780_2", +
-- "type": { +
-- "id": 49, +
-- "name": "table:pat_key" +
-- }, +
-- "value": { +
-- "type": null +
-- }, +
-- "n_records": 0, +
-- "disk_usage": 4243456 +
-- }, +
-- "value": { +
-- "size": "normal", +
-- "type": { +
-- "id": 263, +
-- "name": "Sources17780", +
-- "size": 4, +
-- "type": { +
-- "id": 48, +
-- "name": "table:hash_key" +
-- } +
-- }, +
-- "weight": false, +
-- "section": false, +
-- "position": true, +
-- "statistics": { +
-- "max_section_id": 0, +
-- "n_array_segments": 0, +
-- "n_garbage_chunks": [ +
-- 0, +
-- 0, +
-- 0, +
-- 0, +
-- 0, +
-- 0, +
-- 0, +
-- 0, +
-- 0, +
-- 0, +
-- 0, +
-- 0, +
-- 0, +
-- 0, +
-- 0 +
-- ], +
-- "total_chunk_size": 0, +
-- "n_buffer_segments": 0, +
-- "n_garbage_segments": 0, +
-- "max_in_use_chunk_id": 0, +
-- "max_array_segment_id": 0, +
-- "n_unmanaged_segments": 0, +
-- "max_buffer_segment_id": 0, +
-- "max_n_physical_segments": 131072, +
-- "next_physical_segment_id": 0, +
-- "max_in_use_physical_segment_id": 0 +
-- } +
-- }, +
-- "sources": [ +
-- { +
-- "id": 271, +
-- "name": "tag", +
-- "table": { +
-- "id": 263, +
-- "key": { +
-- "type": { +
-- "id": 11, +
-- "name": "UInt64", +
-- "size": 8, +
-- "type": { +
-- "id": 32, +
-- "name": "type" +
-- } +
-- }, +
-- "total_size": 0, +
-- "max_total_size": 4294967295+
-- }, +
-- "name": "Sources17780", +
-- "type": { +
-- "id": 48, +
-- "name": "table:hash_key" +
-- }, +
-- "value": { +
-- "type": null +
-- }, +
-- "n_records": 0, +
-- "disk_usage": 65536 +
-- }, +
-- "full_name": "Sources17780.tag" +
-- } +
-- ], +
-- "full_name": "Lexicon17780_2.index", +
-- "disk_usage": 565248 +
-- } +
-- ]
-- (1 row)