Issue
Current convertTakeOrderedAndProjectExec inserts an extra NativeProjectExec even when the result is collected directly to driver via executeCollect, For queries like:
SELECT id + 42, name, length(name) FROM t1 order by id limit 4
Proposal
refactor NativeTakeOrderedExec to NativeTakeOrderedAndProjectExec that natively handles the projection List, so we can completely eliminate the redundant NativeProjectExec.