raf <raf@xxxxxxx> writes: > It's almost as if the parser sees "update" as a possible > table name (rather than a reserved word) and "tblname" > as the alias for that table and it's expecting a comma > or left/right/full etc. when it seess the "t". No, it's *exactly* as if that. UPDATE is an unreserved keyword so it's fully legitimate as a table name. If you made the syntax be what the grammar is expecting: regression=# select * from (update t cross join update t2); ERROR: relation "update" does not exist LINE 1: select * from (update t cross join update t2); ^ regards, tom lane