You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by ya...@apache.org on 2026/07/15 08:14:23 UTC

(spark) branch master updated: [SPARK-58121][SQL] Assign a name to the error condition _LEGACY_ERROR_TEMP_0012

This is an automated email from the ASF dual-hosted git repository.

LuciferYang 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 8a18d2831baa [SPARK-58121][SQL] Assign a name to the error condition _LEGACY_ERROR_TEMP_0012
8a18d2831baa is described below

commit 8a18d2831baa8ff687cbe44ef885e0dd1f223519
Author: YangJie <ya...@baidu.com>
AuthorDate: Wed Jul 15 16:14:08 2026 +0800

    [SPARK-58121][SQL] Assign a name to the error condition _LEGACY_ERROR_TEMP_0012
    
    ### What changes were proposed in this pull request?
    
    Convert the legacy error condition `_LEGACY_ERROR_TEMP_0012` ("DISTRIBUTE BY is not supported.") into the `UNSUPPORTED_FEATURE.DISTRIBUTE_BY` subclass (SQLSTATE `0A000`, inherited from the `UNSUPPORTED_FEATURE` umbrella).
    
    ### Why are the changes needed?
    
    The error-conditions README disallows new `_LEGACY_ERROR_TEMP_*` entries and asks existing ones to be resolved. This resolves one of them.
    
    The error is raised by the base `AstBuilder`, which does not support `DISTRIBUTE BY`; `SparkSqlAstBuilder` overrides `withRepartitionByExpression` to support it, so only parsers built on the base `AstBuilder` (via `CatalystSqlParser`) reject the clause. This is the same `withQueryResultClauses` code path whose combination case already reports `UNSUPPORTED_FEATURE.COMBINATION_QUERY_RESULT_CLAUSES`, so a `DISTRIBUTE_BY` subclass under the same umbrella keeps the parser feature-not-suppo [...]
    
    ### Does this PR introduce _any_ user-facing change?
    
    No. Only the error condition name is assigned; the `_LEGACY_ERROR_TEMP_*` names are not part of the public API. The rendered message becomes "The feature is not supported: DISTRIBUTE BY clause."
    
    ### How was this patch tested?
    
    Added a `checkError` test in `PlanParserSuite` (which uses `CatalystSqlParser`) that parses `select * from t distribute by a` and asserts the `UNSUPPORTED_FEATURE.DISTRIBUTE_BY` condition. `build/sbt "catalyst/testOnly *PlanParserSuite" "core/testOnly org.apache.spark.SparkThrowableSuite"` passes.
    
    ### Was this patch authored or co-authored using generative AI tooling?
    
    Generated-by: Claude Code (Opus 4.8)
    
    Closes #57249 from LuciferYang/assign-name-legacy-0012.
    
    Authored-by: YangJie <ya...@baidu.com>
    Signed-off-by: yangjie01 <ya...@baidu.com>
---
 common/utils/src/main/resources/error/error-conditions.json  | 10 +++++-----
 .../org/apache/spark/sql/errors/QueryParsingErrors.scala     |  2 +-
 .../apache/spark/sql/catalyst/parser/PlanParserSuite.scala   | 12 ++++++++++++
 3 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/common/utils/src/main/resources/error/error-conditions.json b/common/utils/src/main/resources/error/error-conditions.json
index 6adcf5d23cb7..a6150f5e9500 100644
--- a/common/utils/src/main/resources/error/error-conditions.json
+++ b/common/utils/src/main/resources/error/error-conditions.json
@@ -8331,6 +8331,11 @@
           "DESC TABLE COLUMN for a specific partition."
         ]
       },
+      "DISTRIBUTE_BY" : {
+        "message" : [
+          "DISTRIBUTE BY clause."
+        ]
+      },
       "DROP_DATABASE" : {
         "message" : [
           "Drop the default database <database>."
@@ -9348,11 +9353,6 @@
       "Empty source for merge: you should specify a source table/subquery in merge."
     ]
   },
-  "_LEGACY_ERROR_TEMP_0012" : {
-    "message" : [
-      "DISTRIBUTE BY is not supported."
-    ]
-  },
   "_LEGACY_ERROR_TEMP_0014" : {
     "message" : [
       "TABLESAMPLE does not accept empty inputs."
diff --git a/sql/api/src/main/scala/org/apache/spark/sql/errors/QueryParsingErrors.scala b/sql/api/src/main/scala/org/apache/spark/sql/errors/QueryParsingErrors.scala
index cd3cc63bda17..9c7eaadedd78 100644
--- a/sql/api/src/main/scala/org/apache/spark/sql/errors/QueryParsingErrors.scala
+++ b/sql/api/src/main/scala/org/apache/spark/sql/errors/QueryParsingErrors.scala
@@ -161,7 +161,7 @@ private[sql] object QueryParsingErrors extends DataTypeErrorsBase {
   }
 
   def distributeByUnsupportedError(ctx: QueryOrganizationContext): Throwable = {
-    new ParseException(errorClass = "_LEGACY_ERROR_TEMP_0012", ctx)
+    new ParseException(errorClass = "UNSUPPORTED_FEATURE.DISTRIBUTE_BY", ctx)
   }
 
   def transformNotSupportQuantifierError(ctx: ParserRuleContext): Throwable = {
diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/parser/PlanParserSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/parser/PlanParserSuite.scala
index e9f1a94f7010..6e5239b3d206 100644
--- a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/parser/PlanParserSuite.scala
+++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/parser/PlanParserSuite.scala
@@ -437,6 +437,18 @@ class PlanParserSuite extends AnalysisTest {
         stop = 41))
   }
 
+  test("DISTRIBUTE BY is not supported in the Catalyst parser") {
+    val sql = "select * from t distribute by a"
+    checkError(
+      exception = parseException(sql),
+      condition = "UNSUPPORTED_FEATURE.DISTRIBUTE_BY",
+      parameters = Map.empty,
+      context = ExpectedContext(
+        fragment = "distribute by a",
+        start = 16,
+        stop = 30))
+  }
+
   test("insert into") {
     import org.apache.spark.sql.catalyst.dsl.expressions._
     import org.apache.spark.sql.catalyst.dsl.plans._


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org