Re: Mapping view columns to their source columns - Mailing list pgsql-general

From Tom Lane
Subject Re: Mapping view columns to their source columns
Date
Msg-id 22840.1569387248@sss.pgh.pa.us
Whole thread Raw
In response to Mapping view columns to their source columns  (Matt Andrews <mattandrews@massey.com.au>)
Responses Re: Mapping view columns to their source columns
List pgsql-general
Matt Andrews <mattandrews@massey.com.au> writes:
> I'm trying to map view columns to their source columns using the system
> catalogs and information schema, but not having much luck.  It's easy to
> determine which columns a view *depends *on, but not how those columns are
> mapped to the columns of the view. It seems like the only way to do is this
> is to somehow query the pg_node_tree in pg_rewrite.ev_call.

Yeah, that's what you'd have to do.  The system doesn't track this
any more finely than "does the view as a whole depend on this column",
partly because we don't need to and partly because it's hard to define
reasonably.  What do you want to do with, say,

    select a, b+c from tab;

It gets even more interesting when you think about aggregates and
other advanced features:

    select a, max(b) as mb from tab group by a;

Any reasonable semantic analysis would have to conclude that the
mb column depends on both a and b.

Once you had answers to these definitional questions, you could
think about analyzing the view's query tree to get the answers
you want.  Unfortunately, doing that from client side is not
supported at all; if you try you'll find yourself maintaining
a lot of messy code that we *will* break on a regular basis.
It would be less hard in a backend extension, but I suspect
you don't want to go there :-(

            regards, tom lane



pgsql-general by date:

Previous
From: Andrew Gierth
Date:
Subject: Re: How to get timezone offset in timestamp with time zone AT TIME ZONE output.
Next
From: Matt Andrews
Date:
Subject: Re: Mapping view columns to their source columns