Ah, I understand now. We can lie to the executor about the order,
because when we are moving based on the second outer column, we have a
stretch of equal values in the inner column, so we can consider them to
be sorted whatever way we need.
The patch applies cleanly, make check-world passes.
In create_mergejoin_plan:
* implied inner ordering is then "ORDER BY x, y, x", but the pathkey
* drops the second sort by x as redundant, and this code must cope.
-- should this read "the pathkey machinery drops"?
--
Alexander Kuzmenkov
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company