This is an automated email from the ASF dual-hosted git repository.
maxgekk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/spark.git
The following commit(s) were added to refs/heads/master by this push:
new 0d56c94 [SPARK-38105][SQL] Use error classes in the parsing errors of
joins
0d56c94 is described below
commit 0d56c947f10f747ab4b76426b2d6a34a1d3b8277
Author: Tengfei Huang <[email protected]>
AuthorDate: Sun Feb 6 21:19:29 2022 +0300
[SPARK-38105][SQL] Use error classes in the parsing errors of joins
### What changes were proposed in this pull request?
Migrate the following errors in QueryParsingErrors onto use error classes:
1. joinCriteriaUnimplementedError => throw IllegalStateException instead,
since it should never happen and not visible to users, introduced by improving
exhaustivity in [PR](https://github.com/apache/spark/pull/30455)
2. naturalCrossJoinUnsupportedError => UNSUPPORTED_FEATURE
### Why are the changes needed?
Porting join parsing errors to new error framework.
### Does this PR introduce _any_ user-facing change?
No
### How was this patch tested?
UT added.
Closes #35405 from ivoson/SPARK-38105.
Authored-by: Tengfei Huang <[email protected]>
Signed-off-by: Max Gekk <[email protected]>
---
.../scala/org/apache/spark/sql/catalyst/parser/AstBuilder.scala | 2 +-
.../scala/org/apache/spark/sql/errors/QueryParsingErrors.scala | 6 +-----
.../org/apache/spark/sql/errors/QueryParsingErrorsSuite.scala | 8 ++++++++
3 files changed, 10 insertions(+), 6 deletions(-)
diff --git
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/parser/AstBuilder.scala
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/parser/AstBuilder.scala
index ed2623e..bd43cff 100644
---
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/parser/AstBuilder.scala
+++
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/parser/AstBuilder.scala
@@ -1146,7 +1146,7 @@ class AstBuilder extends SqlBaseBaseVisitor[AnyRef] with
SQLConfHelper with Logg
case Some(c) if c.booleanExpression != null =>
(baseJoinType, Option(expression(c.booleanExpression)))
case Some(c) =>
- throw QueryParsingErrors.joinCriteriaUnimplementedError(c, ctx)
+ throw new IllegalStateException(s"Unimplemented joinCriteria: $c")
case None if join.NATURAL != null =>
if (join.LATERAL != null) {
throw
QueryParsingErrors.lateralJoinWithNaturalJoinUnsupportedError(ctx)
diff --git
a/sql/catalyst/src/main/scala/org/apache/spark/sql/errors/QueryParsingErrors.scala
b/sql/catalyst/src/main/scala/org/apache/spark/sql/errors/QueryParsingErrors.scala
index 6bcd20c..6d7ed7b 100644
---
a/sql/catalyst/src/main/scala/org/apache/spark/sql/errors/QueryParsingErrors.scala
+++
b/sql/catalyst/src/main/scala/org/apache/spark/sql/errors/QueryParsingErrors.scala
@@ -129,12 +129,8 @@ object QueryParsingErrors {
new ParseException(s"Cannot resolve window reference '$name'", ctx)
}
- def joinCriteriaUnimplementedError(join: JoinCriteriaContext, ctx:
RelationContext): Throwable = {
- new ParseException(s"Unimplemented joinCriteria: $join", ctx)
- }
-
def naturalCrossJoinUnsupportedError(ctx: RelationContext): Throwable = {
- new ParseException("NATURAL CROSS JOIN is not supported", ctx)
+ new ParseException("UNSUPPORTED_FEATURE", Array("NATURAL CROSS JOIN."),
ctx)
}
def emptyInputForTableSampleError(ctx: ParserRuleContext): Throwable = {
diff --git
a/sql/core/src/test/scala/org/apache/spark/sql/errors/QueryParsingErrorsSuite.scala
b/sql/core/src/test/scala/org/apache/spark/sql/errors/QueryParsingErrorsSuite.scala
index 1a213bf..03117b9 100644
---
a/sql/core/src/test/scala/org/apache/spark/sql/errors/QueryParsingErrorsSuite.scala
+++
b/sql/core/src/test/scala/org/apache/spark/sql/errors/QueryParsingErrorsSuite.scala
@@ -78,4 +78,12 @@ class QueryParsingErrorsSuite extends QueryTest with
SharedSparkSession {
message = "Invalid SQL syntax: LATERAL can only be used with
subquery.")
}
}
+
+ test("UNSUPPORTED_FEATURE: NATURAL CROSS JOIN is not supported") {
+ validateParsingError(
+ sqlText = "SELECT * FROM a NATURAL CROSS JOIN b",
+ errorClass = "UNSUPPORTED_FEATURE",
+ sqlState = "0A000",
+ message = "The feature is not supported: NATURAL CROSS JOIN.")
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]