This is an automated email from the ASF dual-hosted git repository.
jiayu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sedona.git
The following commit(s) were added to refs/heads/master by this push:
new 50071317cb [SEDONA-716] Change the spark parser order to use delegate
parser first (#1832)
50071317cb is described below
commit 50071317cba824eee3e6b516ca657c20c4b8e015
Author: Feng Zhang <[email protected]>
AuthorDate: Tue Feb 25 16:06:45 2025 -0800
[SEDONA-716] Change the spark parser order to use delegate parser first
(#1832)
---
.../org/apache/sedona/sql/parser/SedonaSqlParser.scala | 15 ++++++++++-----
.../org/apache/sedona/sql/parser/SedonaSqlParser.scala | 15 ++++++++++-----
.../org/apache/sedona/sql/parser/SedonaSqlParser.scala | 15 ++++++++++-----
3 files changed, 30 insertions(+), 15 deletions(-)
diff --git
a/spark/spark-3.3/src/main/scala/org/apache/sedona/sql/parser/SedonaSqlParser.scala
b/spark/spark-3.3/src/main/scala/org/apache/sedona/sql/parser/SedonaSqlParser.scala
index 56c27ba76b..54fb074eb0 100644
---
a/spark/spark-3.3/src/main/scala/org/apache/sedona/sql/parser/SedonaSqlParser.scala
+++
b/spark/spark-3.3/src/main/scala/org/apache/sedona/sql/parser/SedonaSqlParser.scala
@@ -28,17 +28,22 @@ class SedonaSqlParser(delegate: ParserInterface) extends
SparkSqlParser {
val parserBuilder = new SedonaSqlAstBuilder
/**
- * Parse the SQL text and return the logical plan.
+ * Parse the SQL text and return the logical plan. This method first
attempts to use the
+ * delegate parser to parse the SQL text. If the delegate parser fails
(throws an exception), it
+ * falls back to using the Sedona SQL parser.
+ *
* @param sqlText
+ * The SQL text to be parsed.
* @return
+ * The parsed logical plan.
*/
override def parsePlan(sqlText: String): LogicalPlan =
try {
- parse(sqlText) { parser =>
- parserBuilder.visit(parser.singleStatement())
- }.asInstanceOf[LogicalPlan]
+ delegate.parsePlan(sqlText)
} catch {
case _: Exception =>
- delegate.parsePlan(sqlText)
+ parse(sqlText) { parser =>
+ parserBuilder.visit(parser.singleStatement())
+ }.asInstanceOf[LogicalPlan]
}
}
diff --git
a/spark/spark-3.4/src/main/scala/org/apache/sedona/sql/parser/SedonaSqlParser.scala
b/spark/spark-3.4/src/main/scala/org/apache/sedona/sql/parser/SedonaSqlParser.scala
index 56c27ba76b..54fb074eb0 100644
---
a/spark/spark-3.4/src/main/scala/org/apache/sedona/sql/parser/SedonaSqlParser.scala
+++
b/spark/spark-3.4/src/main/scala/org/apache/sedona/sql/parser/SedonaSqlParser.scala
@@ -28,17 +28,22 @@ class SedonaSqlParser(delegate: ParserInterface) extends
SparkSqlParser {
val parserBuilder = new SedonaSqlAstBuilder
/**
- * Parse the SQL text and return the logical plan.
+ * Parse the SQL text and return the logical plan. This method first
attempts to use the
+ * delegate parser to parse the SQL text. If the delegate parser fails
(throws an exception), it
+ * falls back to using the Sedona SQL parser.
+ *
* @param sqlText
+ * The SQL text to be parsed.
* @return
+ * The parsed logical plan.
*/
override def parsePlan(sqlText: String): LogicalPlan =
try {
- parse(sqlText) { parser =>
- parserBuilder.visit(parser.singleStatement())
- }.asInstanceOf[LogicalPlan]
+ delegate.parsePlan(sqlText)
} catch {
case _: Exception =>
- delegate.parsePlan(sqlText)
+ parse(sqlText) { parser =>
+ parserBuilder.visit(parser.singleStatement())
+ }.asInstanceOf[LogicalPlan]
}
}
diff --git
a/spark/spark-3.5/src/main/scala/org/apache/sedona/sql/parser/SedonaSqlParser.scala
b/spark/spark-3.5/src/main/scala/org/apache/sedona/sql/parser/SedonaSqlParser.scala
index 56c27ba76b..54fb074eb0 100644
---
a/spark/spark-3.5/src/main/scala/org/apache/sedona/sql/parser/SedonaSqlParser.scala
+++
b/spark/spark-3.5/src/main/scala/org/apache/sedona/sql/parser/SedonaSqlParser.scala
@@ -28,17 +28,22 @@ class SedonaSqlParser(delegate: ParserInterface) extends
SparkSqlParser {
val parserBuilder = new SedonaSqlAstBuilder
/**
- * Parse the SQL text and return the logical plan.
+ * Parse the SQL text and return the logical plan. This method first
attempts to use the
+ * delegate parser to parse the SQL text. If the delegate parser fails
(throws an exception), it
+ * falls back to using the Sedona SQL parser.
+ *
* @param sqlText
+ * The SQL text to be parsed.
* @return
+ * The parsed logical plan.
*/
override def parsePlan(sqlText: String): LogicalPlan =
try {
- parse(sqlText) { parser =>
- parserBuilder.visit(parser.singleStatement())
- }.asInstanceOf[LogicalPlan]
+ delegate.parsePlan(sqlText)
} catch {
case _: Exception =>
- delegate.parsePlan(sqlText)
+ parse(sqlText) { parser =>
+ parserBuilder.visit(parser.singleStatement())
+ }.asInstanceOf[LogicalPlan]
}
}