Right now, Spark SQL is not aware of the outputPartitioning and outputOrdering of a InMemoryColumnarTableScan. Actually, we can just inherit these two properties from the SparkPlan of the cached table.
Right now, Spark SQL is not aware of the partitioning scheme of a leaf SparkPlan (e.g. an input table). So, even users want to re-partitioning the data in advance, Exchange operators will still be used.