I wrote: > which are indeed different (might be worth looking into why) Oh: the reason they're different is that these expressions are not actually the same thing. Minus binds less tightly than typecast. You get consistent results if you input equivalent expressions: regression=# select cast(-1 as numeric(20,4)); numeric --------- -1.0000 (1 row) regression=# select (-1)::numeric(20,4); numeric --------- -1.0000 (1 row) regression=# select - cast(1 as numeric(20,4)); ?column? ---------- -1.0000 (1 row) regression=# select - 1::numeric(20,4); ?column? ---------- -1.0000 (1 row) What we're actually seeing here is that the code to guess a default column name doesn't descend through a unary minus operator, it just punts upon finding an Op node. regards, tom lane -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general