This is a long-term plan, and may require major changes.
From the query, we can figure out the sorting/bucketing properties, and change the metadata of the destination at that time.
However, this means that different partitions may have different metadata. Currently, the query plan is same for all the
partitions of the table - we can do the following:
1. In the first cut, have a simple approach where you take the union all metadata, and create the most defensive plan.
2. Enhance mapredWork() to include partition specific operator trees.