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 <tengfe...@gmail.com> 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 <tengfe...@gmail.com> Signed-off-by: Max Gekk <max.g...@gmail.com> --- .../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: commits-unsubscr...@spark.apache.org For additional commands, e-mail: commits-h...@spark.apache.org