cloud-fan commented on a change in pull request #31368:
URL: https://github.com/apache/spark/pull/31368#discussion_r565816065
##########
File path:
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/view.scala
##########
@@ -17,74 +17,21 @@
package org.apache.spark.sql.catalyst.analysis
-import org.apache.spark.sql.catalyst.expressions.Alias
-import org.apache.spark.sql.catalyst.plans.logical.{LogicalPlan, Project, View}
+import org.apache.spark.sql.catalyst.plans.logical.{LogicalPlan, View}
import org.apache.spark.sql.catalyst.rules.Rule
/**
* This file defines view types and analysis rules related to views.
*/
/**
- * This rule has two goals:
- *
- * 1. Removes [[View]] operators from the plan. The operator is respected till
the end of analysis
- * stage because we want to see which part of an analyzed logical plan is
generated from a view.
- *
- * 2. Make sure that a view's child plan produces the view's output
attributes. We try to wrap the
- * child by:
- * 1. Generate the `queryOutput` by:
- * 1.1. If the query column names are defined, map the column names to
attributes in the child
- * output by name(This is mostly for handling view queries like SELECT
* FROM ..., the
- * schema of the referenced table/view may change after the view has
been created, so we
- * have to save the output of the query to `viewQueryColumnNames`, and
restore them during
- * view resolution, in this way, we are able to get the correct view
column ordering and
- * omit the extra columns that we don't require);
- * 1.2. Else set the child output attributes to `queryOutput`.
- * 2. Map the `queryOutput` to view output by index, if the corresponding
attributes don't match,
- * try to up cast and alias the attribute in `queryOutput` to the attribute
in the view output.
- * 3. Add a Project over the child, with the new output generated by the
previous steps.
- *
- * Once reaches this rule, it means `CheckAnalysis` did necessary checks on
number of columns
- * between the view output and the child output or the query column names.
`CheckAnalysis` also
- * checked the cast from the view's child to the Project is up-cast.
- *
- * This should be only done after the batch of Resolution, because the view
attributes are not
- * completely resolved during the batch of Resolution.
+ * This rule removes [[View]] operators from the plan. The operator is
respected till the end of
+ * analysis stage because we want to see which part of an analyzed logical
plan is generated from a
+ * view.
*/
object EliminateView extends Rule[LogicalPlan] with CastSupport {
override def apply(plan: LogicalPlan): LogicalPlan = plan transformUp {
Review comment:
seems doesn't matter?
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]