"Dave Page" <dpage@vale-housing.co.uk> writes:
> As I see it, the tidy/simple answer is to add nspname, relname and
> attname information to each attribute in the row description, and if any
> one of those cannot be easily determined, or the value doesn't come
> directly from there (ie an aggregate), it is simply omitted or left
> empty. It could be done more efficiently with attnum/attrelid, but I
> wonder if that might cause problems in the future if attnum gets hacked
> about.
I'd prefer to stick with rel OID and attnum; those are the keys you are
going to need for looking in the system catalogs, anyway, and they're
surely a lot more compact to transmit than three Names (potentially 180
bytes or so).
So let me get this straight: we want the attribute ID information for
any SELECT output column that is a simple Var (no expressions, and no
aggregated cases either), treating view output columns as Vars belonging
to the view. What about:
* Joins. Does an aliased JOIN output variable get resolved to the
underlying table variable? What about common columns in USING/NATURAL
joins?
* Sub-selects. Are you expectingSELECT x FROM (SELECT x FROM foo) ss
to produce a reference to foo.x? (If so, why is this different from the
case where ss is a view?)
regards, tom lane