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]
     }
 }

Reply via email to