BTW, it suddenly strikes me that if anyone actually is using this syntax in the field, they're most likely doing it like this:
regression=# create view v as regression-# select * from (values (1),(2),(3) order by 1) v(x); CREATE VIEW which nicely sidesteps the question of what column aliases apply. However, ruleutils.c unhelpfully regurgitates that as regression=# \d+ v View "public.v" Column | Type | Collation | Nullable | Default | Storage | Description --------+---------+-----------+----------+---------+---------+------------- x | integer | | | | plain | View definition: SELECT x FROM ( VALUES (1), (2), (3) ORDER BY "*VALUES*".column1) v(x); Maybe we could teach it that in this one case, using column numbers is a better idea. It's not SQL-spec anymore (since SQL99 anyway). But the SQL spec has noplace to hide here, because they don't say what column names you could use in this misbegotten but spec-sanctioned syntax. regards, tom lane