Gregory Stark <stark@enterprisedb.com> writes:
> What if the equivalence class is in more than one place in the ORDER BY?
That's not a problem. ORDER BY 1,1 is not different from ORDER BY 1,
even if the referenced expression is volatile, because the secondary
sort key is useless anyway.
> And what would happen when you pull up subqueries?
I think I know how to deal with that. The worst case would be that
select * from (select random() as a from foo order by a) ssorder by ss.a
would incur two sorts instead of one because we fail to acknowledge the
subquery's sort key as being the same thing as the upper query's. It
*should* be possible to avoid that, but if it gets too complicated I'll
leave it on the table for 8.4.
regards, tom lane