postgresql-检索表达式所在的部分索引
我如何运行查询(在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
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)