What is the argument type for the order by
clause in Postgresql?
I came across a very strange behaviour (using Postgresql 9.5). Namely, the query
select * from unnest(array[1,4,3,2]) as x order by 1;
produces 1,2,3,4
as expected. However the query
select * from unnest(array[1,4,3,2]) as x order by 1::int;
produces 1,4,3,2
, which seems strange. Similarly, whenever I replace 1::int
with whatever function (e.g. greatest(0,1)
) or even case
operator, the results are unordered (on the contrary to what I would expect).
So which type should an argument of order by
have, and how do I get the expected behaviour?