[SPARK-12167][SQL] Invoke the right sameResult function when plan is warpped with SubQueries #10169
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Bug
I find this bug when I use cache table,
I got the wrong physical plan
and the right physical plan is
Reason
When the implementation classes of
MultiInstanceRelation(eg.LogicalRelation,LocalRelation) are warpped with SubQueries, they can't invoke the rightsameResultfunction in their own implementation. So we need to eliminate SubQueries first and then try to invokesameResultfunction in their own implementation.Like:
When plan is
Subquery(LogicalRelation(relation:ParquetRelation[hdfs://9.91.8.131:9000/user/hive/warehouse/src_p], expectedOutputAttributes:Some(ArrayBuffer(key#0, value#1)))), first eliminate SubQueries, and then will invoke thesameResultfunction inLogicalRelationinstead ofLogicalPlan.