From: | Merlin Moncure <mmoncure(at)gmail(dot)com> |
---|---|
To: | Andreas Kretschmer <akretschmer(at)spamfence(dot)net> |
Cc: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: SELECT * in a view |
Date: | 2010-04-21 18:19:15 |
Message-ID: | p2qb42b73151004211119ged34c9f7rb76292948f5b6163@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Wed, Apr 21, 2010 at 2:14 PM, Andreas Kretschmer
<akretschmer(at)spamfence(dot)net> wrote:
> Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>
>> > That's not what I want. That means that if old_view changes, new_view
>> > will not reflect the changes. Is there any way to get new_view to
>> > automatically include all fields from old_view, no matter how many or
>> > how few fields there are?
>>
>> No. This behavior is specifically required by the SQL standard: the
>> result rowtype of a view is determined when the view is created, and
>> is not supposed to change when underlying tables have columns added.
>> That's why we expand * when the view is created.
>
> Right, and additional, don't use select *, in particular production
> code.
I don't agree. This entirely depends on context. It is completely
reasonable to want to be able expand a composite type without
explicitly listing the fields, or do other things:
select foo.* from foo join bar on ... -- what's wrong with this?
select (v).* from (select aggfunc(foo) as v from foo where ...) -- or this?
merlin
From | Date | Subject | |
---|---|---|---|
Next Message | John R Pierce | 2010-04-21 18:59:49 | Re: Int64GetDatum |
Previous Message | Andreas Kretschmer | 2010-04-21 18:14:37 | Re: SELECT * in a view |