Search Postgresql Archives

Re: Dependencies of Matviews?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thomas Kellerer <shammat@xxxxxxx> writes:
> I would like to extract the dependency between materialized views.
> e.g. in the following situation:
>     create materialized view mv1 as select ....;
>     create materialized view mv2 as select ... from mv1, ...;
> I would like to know that mv2 depends on mv1.
> I assumed this could be done through pg_depend, but the only dependency I see there for the matviews is the one for the namespace.

Most of the interesting dependencies for a view or matview are actually
held by its ON SELECT rule.  For example:

regression=# create materialized view mv1 as select * from int8_tbl;
SELECT 5
regression=# create materialized view mv2 as select * from mv1;
SELECT 5
regression=# select 'mv1'::regclass::oid;
  oid  
-------
 58550
(1 row)
regression=# select * from pg_depend where objid >= 58550 or refobjid >= 58550;
 classid | objid | objsubid | refclassid | refobjid | refobjsubid | deptype 
---------+-------+----------+------------+----------+-------------+---------
    1247 | 58552 |        0 |       1259 |    58550 |           0 | i
    1247 | 58551 |        0 |       1247 |    58552 |           0 | i
    1259 | 58550 |        0 |       2615 |     2200 |           0 | n
    2618 | 58553 |        0 |       1259 |    58550 |           0 | i
    2618 | 58553 |        0 |       1259 |    58550 |           0 | n
    2618 | 58553 |        0 |       1259 |    37540 |           1 | n
    2618 | 58553 |        0 |       1259 |    37540 |           2 | n
    1247 | 58556 |        0 |       1259 |    58554 |           0 | i
    1247 | 58555 |        0 |       1247 |    58556 |           0 | i
    1259 | 58554 |        0 |       2615 |     2200 |           0 | n
    2618 | 58557 |        0 |       1259 |    58554 |           0 | i
    2618 | 58557 |        0 |       1259 |    58554 |           0 | n
    2618 | 58557 |        0 |       1259 |    58550 |           1 | n
    2618 | 58557 |        0 |       1259 |    58550 |           2 | n
(14 rows)

or more readably,

regression=# select pg_describe_object(classid,objid,objsubid) as obj, pg_describe_object(refclassid,refobjid,refobjsubid) as ref, deptype from pg_depend where objid >= 58550 or refobjid >= 58550;
                  obj                  |                ref                 | deptype 
---------------------------------------+------------------------------------+---------
 type mv1                              | materialized view mv1              | i
 type mv1[]                            | type mv1                           | i
 materialized view mv1                 | schema public                      | n
 rule _RETURN on materialized view mv1 | materialized view mv1              | i
 rule _RETURN on materialized view mv1 | materialized view mv1              | n
 rule _RETURN on materialized view mv1 | column q1 of table int8_tbl        | n   <<<<<
 rule _RETURN on materialized view mv1 | column q2 of table int8_tbl        | n   <<<<<
 type mv2                              | materialized view mv2              | i
 type mv2[]                            | type mv2                           | i
 materialized view mv2                 | schema public                      | n
 rule _RETURN on materialized view mv2 | materialized view mv2              | i
 rule _RETURN on materialized view mv2 | materialized view mv2              | n
 rule _RETURN on materialized view mv2 | column q1 of materialized view mv1 | n   <<<<<
 rule _RETURN on materialized view mv2 | column q2 of materialized view mv1 | n   <<<<<
(14 rows)

where I marked the actually-interesting dependencies with <<<<<.

			regards, tom lane






[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux