Improper handling of join keys in MergeOperation
Merge keys are "added back" post facto. This is problematic both from a performance perspective and also causes the keys to be in the wrong order in the joined result (the join keys are inserted in the beginning rather than in their natural places). Consolidation of the DataFrame is being improperly deferred until after the join result is returned. 
