SELECT dep.classid::regclass AS class,
  CASE WHEN dep.classid = 'pg_catalog.pg_class'::regclass THEN dep.objid::regclass::text        WHEN dep.classid = 'pg_catalog.pg_constraint'::regclass THEN (SELECT conname FROM pg_catalog.pg_constraint WHERE oid = dep.objid)
   ELSE NULL
   END AS name
FROM
   pg_catalog.pg_extension e
  JOIN pg_catalog.pg_depend edep ON edep.refclassid = 'pg_catalog.pg_extension'::regclass AND edep.refobjid = e.oid AND deptype = 'e' AND edep.classid = 'pg_catalog.pg_operator'::regclass
   JOIN pg_catalog.pg_operator o ON o.oid = edep.objid AND o.oprname = '~>'
  JOIN pg_catalog.pg_depend dep ON dep.refclassid = 'pg_catalog.pg_operator'::regclass AND dep.refobjid = o.oid
WHERE
  e.extname = 'cube' AND dep.classid IN ('pg_catalog.pg_constraint'::regclass, 'pg_catalog.pg_class'::regclass);

On the below data schema

create table tmp (c cube, check ((c ~> 0 > 0)));
create index tmp_idx on tmp ((c~>0));

it gives following result

      class     |    name
---------------+-------------
  pg_class      | tmp_idx
  pg_constraint | tmp_c_check
(2 rows)

SQL-query seems too huge for release notes and isn't looking for materialized view (fixable) and functional indexes with function which contains this operator somewhere inside (not fixable by this query). I think, just words is enough.

--
Teodor Sigaev                                   E-mail: teo...@sigaev.ru
                                                   WWW: http://www.sigaev.ru/

Reply via email to