CheckAnalysis — Analysis Validation¶
CheckAnalysis is an extension of the PredicateHelper abstraction for logical analysis checkers that can check analysis phase.
CheckAnalysis defines extendedCheckRules extension point for extra analysis check rules.
Note
Only after analysis a logical query plan is correct and ready for execution.
Contract¶
isView¶
isView(
nameParts: Seq[String]): Boolean
Used when:
CheckAnalysisis requested to check analysis (of a logical plan withUnresolvedV2Relations)
Implementations¶
extendedCheckRules Extension Point¶
extendedCheckRules: Seq[LogicalPlan => Unit] = Nil
CheckAnalysis allows implementations for extra analysis check rules using extendedCheckRules extension point.
Used after the built-in check rules have been evaluated.
Checking Analysis Phase¶
checkAnalysis(
plan: LogicalPlan): Unit
checkAnalysis checks (asserts) whether the given logical plan is correct using built-in and extended validation rules followed by marking it as analyzed.
checkAnalysis traverses the operators from their children first (up the operator chain).
checkAnalysis skips analysis if the plan has already been analyzed.
Unresolved Operators¶
checkAnalysis checks whether the plan has any logical plans unresolved. If so, checkAnalysis fails the analysis with the following error message:
unresolved operator [o.simpleString]
Logical Plan Analyzed¶
In the end, checkAnalysis marks the entire logical plan as analyzed.
Usage¶
checkAnalysis is used when:
Analyzeris requested to executeAndCheck- ResolveRelations logical resolution rule is executed (and resolveViews)
- ResolveAggregateFunctions logical resolution rule is executed
CheckAnalysisis requested to checkSubqueryExpression- Catalyst DSL's analyze operator is used
ExpressionEncoderis requested to resolveAndBind- RelationalGroupedDataset.as operator is used
checkShowPartitions¶
checkShowPartitions(
showPartitions: ShowPartitions): Unit
checkShowPartitions branches off based on the input ShowPartitions.
For ShowPartitions with ResolvedTable child with a Table that is not SupportsPartitionManagement, checkShowPartitions failAnalysis with the following message:
SHOW PARTITIONS cannot run for a table which does not support partitioning
For ShowPartitions with ResolvedTable child with a Table that is SupportsPartitionManagement with no partitions, checkShowPartitions failAnalysis with the following message:
SHOW PARTITIONS is not allowed on a table that is not partitioned: [name]