| From: | Gavin Flower <GavinFlower(at)archidevsys(dot)co(dot)nz> | 
|---|---|
| To: | bricklen <bricklen(at)gmail(dot)com> | 
| Cc: | pgsql-general(at)postgresql(dot)org | 
| Subject: | Re: Finding referecing and referenced tables, adaptation from David Fetter's solution | 
| Date: | 2011-07-30 11:49:18 | 
| Message-ID: | 4E33EFBE.2070409@archidevsys.co.nz | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-general | 
On 30/07/11 10:45, bricklen wrote:
> [...]
> CREATE OR REPLACE VIEW table_dependencies AS (
> WITH RECURSIVE t AS (
>      SELECT
>          c.oid AS origin_id,
>          c.oid::regclass::text AS origin_table,
>          c.oid AS referencing_id,
>          c.oid::regclass::text AS referencing_table,
>          c2.oid AS referenced_id,
>          c2.oid::regclass::text AS referenced_table,
>          ARRAY[c.oid::regclass,c2.oid::regclass] AS chain
>      FROM pg_catalog.pg_constraint AS co
>      INNER JOIN pg_catalog.pg_class AS c
>      ON c.oid = co.conrelid
>      INNER JOIN pg_catalog.pg_class AS c2
>      ON c2.oid = co.confrelid
> [...]
I am curious about the explicit use of INNER JOINs, I find them 
cumbersome, so I rewrote the code to remove them, I know in some 
situations that they can improve performance - but was this the case 
here, or is there some other subtlety that I have missed?
[...]
   SELECT
         c1.oid::regclass::text  AS origin_table,
         c2.oid                  AS referenced_id,
         c2.oid::regclass::text  AS referenced_table,
         ARRAY[c1.oid::regclass,c2.oid::regclass] AS chain
     FROM
         pg_catalog.pg_constraint    AS co,
         pg_catalog.pg_class         AS c1,
         pg_catalog.pg_class         AS c2
     WHERE
         c1.oid = co.conrelid AND
         c2.oid = co.confrelid
[...]
Cheers,
Gavin
| From | Date | Subject | |
|---|---|---|---|
| Next Message | D M | 2011-07-30 20:25:41 | Re: ERROR: could not read block 4707 of relation 1663/16384/16564: Success | 
| Previous Message | Gavin Flower | 2011-07-30 10:17:05 | Re: Finding referecing and referenced tables, adaptation from David Fetter's solution |