On Mon, May 22, 2017 at 7:51 PM, Mark Rofail <markm.rof...@gmail.com> wrote:
> Cloned the git repo found @ https://github.com/postgres/postgres and
> identified the main two files I will be concerned with. (I know I may need
> to edit other files but these seem to where I will spend most of my summer)
>
> src/backend/commands/tablecmds.c
> src/backend/utils/ri_triggers.c
>
> I am yet to identify the files concerned with the GIN opclass. <-- if anyone
> can help with this

There's not only one GIN opclass.  You can get a list like this:

select oid, * from pg_opclass where opcmethod = 2742;

Actually, you probably want to look for GIN opfamilies:

rhaas=# select oid, * from pg_opfamily where opfmethod = 2742;
 oid  | opfmethod |    opfname     | opfnamespace | opfowner
------+-----------+----------------+--------------+----------
 2745 |      2742 | array_ops      |           11 |       10
 3659 |      2742 | tsvector_ops   |           11 |       10
 4036 |      2742 | jsonb_ops      |           11 |       10
 4037 |      2742 | jsonb_path_ops |           11 |       10
(4 rows)

To see which SQL functions are used to implement a particular
opfamily, use the OID from the previous step in a query like this:

rhaas=# select prosrc from pg_amop, pg_operator, pg_proc where
amopfamily = 2745 and amopopr = pg_operator.oid and oprcode =
pg_proc.oid;
     prosrc
----------------
 array_eq
 arrayoverlap
 arraycontains
 arraycontained
(4 rows)

Then, you can look for those in the source tree.  You can also search
for the associated support functions, e.g.:

rhaas=# select distinct amprocnum, prosrc from pg_amproc, pg_proc
where amprocfamily = 2745 and amproc = pg_proc.oid order by 1, 2;
 amprocnum |        prosrc
-----------+-----------------------
         1 | bitcmp
         1 | bpcharcmp
         1 | btabstimecmp
         1 | btboolcmp
         1 | btcharcmp
         1 | btfloat4cmp
         1 | btfloat8cmp
         1 | btint2cmp
         1 | btint4cmp
         1 | btint8cmp
         1 | btnamecmp
         1 | btoidcmp
         1 | btoidvectorcmp
         1 | btreltimecmp
         1 | bttextcmp
         1 | bttintervalcmp
         1 | byteacmp
         1 | cash_cmp
         1 | date_cmp
         1 | interval_cmp
         1 | macaddr_cmp
         1 | network_cmp
         1 | numeric_cmp
         1 | time_cmp
         1 | timestamp_cmp
         1 | timetz_cmp
         2 | ginarrayextract
         3 | ginqueryarrayextract
         4 | ginarrayconsistent
         6 | ginarraytriconsistent
(30 rows)

You might want to read https://www.postgresql.org/docs/devel/static/xindex.html

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to