Re: Docs claim that "select myTable.*" wildcard won't let you assign column names

From: "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>
To: Amir Rohan <amir(dot)rohan(at)mail(dot)com>
Cc: "pgsql-docs(at)postgresql(dot)org" <pgsql-docs(at)postgresql(dot)org>
Subject: Re: Docs claim that "select myTable.*" wildcard won't let you assign column names
Date: 2015-09-22 01:58:58
Message-ID: CAKFQuwagxbGTVji92nQ5a10u8gPK2THwG55Zh3yy-MYRCa=9dA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-docs

On Monday, September 21, 2015, Amir Rohan <amir(dot)rohan(at)mail(dot)com> wrote:

> On Monday, September 21, 2015, Amir Rohan <amir(dot)rohan(at)mail(dot)com
> <javascript:;>> wrote:
>
>
> >> From
> http://www.postgresql.org/docs/9.4/static/sql-select.html[http://www.postgresql.org/docs/9.4/static/sql->>
> select.html] (and previous version too):
> >>
> >> ##SELECT List
> >>
> >> <...>
> >> Instead of an expression, * can be written in the output list as a
> shorthand for all the columns of the
> >> selected rows.
> >> Also, you can write table_name.* as a shorthand for the columns
> coming from just that table. In these
> >> cases it is not possible to specify new names with AS; the output
> column names will be the same as the
> >> table columns' names.
> >>
> >> But, the docs elsewhere feature a query example show the use of a
> wildcard for columns
> >> as well as allowing you to assign names to as many of the leading
> columns as you wish:
> >>
> >>
> >> WITH T0 as ( SELECT 1,2,3 )
> >> SELECT T0.* from T0 as T0(foo,bar) ;<...>
>
> On Monday, September 21, 2015, David G. Johnston wrote:
>
> > Neither of those examples is:
> >
> > SELECT * AS "how would one alias this?" FROM table
> >
> > So what's your point?
>
> My point is that "In these cases it is not possible to specify new names
> with AS" is misleading because
> it *is* possible and useful, but requires syntax which isn't clearly shown
> (if at all) where I'd expect it.
> I think that could be improved.
>
> > Obviously you can alias stuff before it makes its way into a select-list
> that refers to it using *
>
> "obvious" to whom? probably not to someone who's level of SQL mastery has
> brought him/her to reading
> the exciting "SELECT" documentation. I do see your point though, in the
> grammar the "AS" in my example
> belongs not to `output_name ` but to `from_item`. So this syntax is hidden
> away behind the `column_alias`
> production.
>
> > In this case the FROM clause is what is being aliased. It is documented
> though I'd need to look to
> > identify the specific location.
>
> This belongs in the page describing SELECT, and though I've looked I
> haven't found it. If I'm wrong (
> I did look again just now), please correct me.
>
>
To be honest, if you have a situation where you think you need to alias "*"
you should probably be expanding that "*" out into individual column names
anyway, which you can easily alias.

The docs don't make a big deal of alising other than noting individually
where they can happen (cte, from clause, select-list) and few questions
that are raised are probably better served to be simply handled on these
lists than cluttering the docs.

David J.

In response to

Responses

Browse pgsql-docs by date

  From Date Subject
Next Message Amir Rohan 2015-09-22 19:40:58 Re: Docs claim that "select myTable.*" wildcard won't let you assign column names
Previous Message Joe Conway 2015-09-22 01:32:16 Re: Docs claim that "select myTable.*" wildcard won't let you assign column names