Hi,

I am running Postgres 12.9 on FreeBSD.

I had a developer ask me the best way to determine a view's dependencies
(i.e. which tables/views are used in a view's query).  In Oracle, I would
use the ALL_DEPENDENCIES dictionary view.  I found a view called
information_schema.view_table_usage (VTU) in the Postgres docs.  This does
the trick.  However, the view the developer is interested in is not listed
when I query the VTU view.

Looking at the documentation for the VTU view, it does state - "A table is
only included if that table is owned by a currently enabled role."

I am able to look at the view's query by using "\d+ schema_name.view_name"
and can see which objects are associated with the view.  I have confirmed I
am logged in as the role that owns all associated objects (i.e. the view,
plus all objects that are part of the view's SELECT.).

If I run the following:

select viewname from pg_views where schemaname = 'event' order by 1;

I see there are 7 views in the event schema.  However, when I run this:

select distinct view_name from information_schema.view_table_usage where
view_schema = 'event' order by 1;

There are only 6 views listed.  And the one that I'm interested in is, of
course, not listed.

I've also tried playing around with the search_path (e.g. making sure it
includes the schemas of all objects associated with the view), but still no
luck.  Every time I query VTU, it only shows 6 of the 7 views in the event
schema.

Has anybody ever encountered this, and if so, did you find a resolution?
Or perhaps there other limitations with the VTU that I'm unaware of?

Thanks!

Jon

Reply via email to