Is your feature request related to a problem or challenge?
Both these 2 exec run MemoryStream. The difference is that we evaluate the batch for ValuesExec. Given their similarity I think we can introduce try_new_as_values for MemoryExec for ValuesExec to avoid duplicated concept.
Describe the solution you'd like
Introduce MemoryExec::try_new_as_values that does what ValuesExec does. And also support multiple partition for ValuesExec based on the existing MemoryExec implementation, this can be done in another PR if it is not trivial.
Describe alternatives you've considered
Have a good reason that we should keep ValuesExec
Additional context
No response