Как я могу найти подробности LOCALITY, PARTITIONED, UNIQUENESS в postgres так же, как мы получаем от USER_PART_INDEXES оракула - PullRequest
0 голосов
/ 18 февраля 2019

Может ли кто-нибудь помочь мне получить столбцы LOCALITY, PARTITIONED, UNIQUENESS в postgres, такие же, как мы получаем из оракула USER_PART_INDEXES, который отображает информацию о разделении на уровне объектов для секционированных индексов?

Я пытался использовать pg_indexes в postgres, но не смог найти LOCALITY, PARTITIONED, UNIQUENESS детали.

oracle : 
SELECT  I.INDEX_NAME INDEX_NAME
FROM    USER_PART_INDEXES PI,USER_INDEXES I
WHERE   I.TABLE_NAME    = test
AND     LOCALITY        = 'LOCAL'
AND     PARTITIONED     = 'YES'
AND     UNIQUENESS      = 'NONUNIQUE'
AND     INDEX_TYPE      <> P_EXCLUDE_TYPE
AND     I.TABLE_NAME    = PI.TABLE_NAME
AND     I.INDEX_NAME    = PI.INDEX_NAME

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Postgres не имеет глобальных индексов (пока), поэтому все индексы в секционированных таблицах являются "локальными" индексами.

Уникальность индекса хранится в pg_index.indisunique

Чтобы найти все неуникальные индексы для конкретной таблицы в Postgres, вы можете сделать:

select ic.relname as index_name
from pg_index ix 
  join pg_class ic on ix.indexrelid = ic.oid
where ix.indrelid = 'test'::regclass
  and not ix.indisunique;
0 голосов
/ 18 февраля 2019

PostgreSQL - не Oracle, и ваша жизнь станет проще, если вы не попытаетесь рассматривать их системные каталоги как одно и то же.

Эти две системные таблицы - то, что вам нужно, но не простопредположим, что поведение в обеих системах одинаковое:

...