postgresql-检索表达式所在的部分索引

postgresql-检索表达式所在的部分索引,postgresql,Postgresql,我如何运行查询(在PostgreSQL内部表上)来检索部分索引的条件表达式(在本例中为下面的roles\u user\u group\u role\u idx) 据我所知,pg_index.indpred似乎是我需要研究的领域。运行此查询: SELECT C.oid, I.indpred FROM pg_catalog.pg_class C, pg_catalog.pg_namespace N, pg_catalog.pg_index I WHERE C.re

我如何运行查询(在PostgreSQL内部表上)来检索部分索引的条件表达式(在本例中为下面的
roles\u user\u group\u role\u idx

据我所知,pg_index.indpred似乎是我需要研究的领域。运行此查询:

SELECT
    C.oid,
    I.indpred
FROM pg_catalog.pg_class C,
     pg_catalog.pg_namespace N,
     pg_catalog.pg_index I
WHERE C.relname = 'roles_user_group_role_idx'
  AND C.relnamespace = N.oid
  AND I.indexrelid = C.oid
  AND N.nspname = 'public';
给我这个,不太清楚

   oid   |                                                                                  indpred                                                                                  
---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 1235504 | {NULLTEST :arg {VAR :varno 1 :varattno 5 :vartype 1043 :vartypmod 6 :varcollid 100 :varlevelsup 0 :varnoold 1 :varoattno 5 :location 95} :nulltesttype 0 :argisrow false}

我的方向对吗?如何获取部分索引的WHERE子句?我使用的是第9.2页,在谷歌搜索了一下之后,我找到了答案,正确的查询:

SELECT
    C.oid,
    pg_get_expr(I.indpred, I.indrelid)
FROM pg_catalog.pg_class C,
     pg_catalog.pg_namespace N,
     pg_catalog.pg_index I
WHERE C.relname = 'roles_user_group_role_idx'
  AND C.relnamespace = N.oid
  AND I.indexrelid = C.oid
  AND N.nspname = 'public';
结果:

   oid   |       pg_get_expr       
---------+-------------------------
 1235504 | (language_code IS NULL)
   oid   |       pg_get_expr       
---------+-------------------------
 1235504 | (language_code IS NULL)