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 df3d4fd9ca77 [SPARK-49438][SQL] Fix the pretty name of the `FromAvro` 
& `ToAvro` expression
df3d4fd9ca77 is described below

commit df3d4fd9ca77b5f4416275ccc6d6f4f8f107f8b0
Author: panbingkun <[email protected]>
AuthorDate: Wed Aug 28 10:57:39 2024 +0200

    [SPARK-49438][SQL] Fix the pretty name of the `FromAvro` & `ToAvro` 
expression
    
    ### What changes were proposed in this pull request?
    In the PR, I propose to override the `prettyName` method of the `FromAvro` 
& `ToAvro` expression and set to `from_avro` & `to_avro` by default as in 
`FunctionRegistry`:
    
https://github.com/apache/spark/blob/6d8235f3b2bbaa88b10c35d6eecddffa4d1b04a4/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/FunctionRegistry.scala#L873-L874
    
    ### Why are the changes needed?
    To don't confuse users by non-existent function name, and print correct 
name in errors.
    
    ### Does this PR introduce _any_ user-facing change?
    Yes.
    
    ### How was this patch tested?
    Update existed UT.
    
    ### Was this patch authored or co-authored using generative AI tooling?
    No.
    
    Closes #47900 from panbingkun/SPARK-49438.
    
    Authored-by: panbingkun <[email protected]>
    Signed-off-by: Max Gekk <[email protected]>
---
 .../test/scala/org/apache/spark/sql/avro/AvroFunctionsSuite.scala  | 6 +++---
 .../spark/sql/catalyst/expressions/toFromAvroSqlFunctions.scala    | 7 +++++++
 .../test/resources/sql-tests/analyzer-results/to_from_avro.sql.out | 6 +++---
 sql/core/src/test/resources/sql-tests/results/to_from_avro.sql.out | 6 +++---
 4 files changed, 16 insertions(+), 9 deletions(-)

diff --git 
a/connector/avro/src/test/scala/org/apache/spark/sql/avro/AvroFunctionsSuite.scala
 
b/connector/avro/src/test/scala/org/apache/spark/sql/avro/AvroFunctionsSuite.scala
index 42ddfd48892c..7001fa96deb8 100644
--- 
a/connector/avro/src/test/scala/org/apache/spark/sql/avro/AvroFunctionsSuite.scala
+++ 
b/connector/avro/src/test/scala/org/apache/spark/sql/avro/AvroFunctionsSuite.scala
@@ -328,7 +328,7 @@ class AvroFunctionsSuite extends QueryTest with 
SharedSparkSession {
              |select to_avro(s, 42) as result from t
              |""".stripMargin)),
         errorClass = "DATATYPE_MISMATCH.TYPE_CHECK_FAILURE_WITH_HINT",
-        parameters = Map("sqlExpr" -> "\"toavro(s, 42)\"",
+        parameters = Map("sqlExpr" -> "\"to_avro(s, 42)\"",
           "msg" -> ("The second argument of the TO_AVRO SQL function must be a 
constant string " +
             "containing the JSON representation of the schema to use for 
converting the value to " +
             "AVRO format"),
@@ -343,7 +343,7 @@ class AvroFunctionsSuite extends QueryTest with 
SharedSparkSession {
              |select from_avro(s, 42, '') as result from t
              |""".stripMargin)),
         errorClass = "DATATYPE_MISMATCH.TYPE_CHECK_FAILURE_WITH_HINT",
-        parameters = Map("sqlExpr" -> "\"fromavro(s, 42, )\"",
+        parameters = Map("sqlExpr" -> "\"from_avro(s, 42, )\"",
           "msg" -> ("The second argument of the FROM_AVRO SQL function must be 
a constant string " +
             "containing the JSON representation of the schema to use for 
converting the value " +
             "from AVRO format"),
@@ -360,7 +360,7 @@ class AvroFunctionsSuite extends QueryTest with 
SharedSparkSession {
         errorClass = "DATATYPE_MISMATCH.TYPE_CHECK_FAILURE_WITH_HINT",
         parameters = Map(
           "sqlExpr" ->
-            s"\"fromavro(s, $jsonFormatSchema, 42)\"".stripMargin,
+            s"\"from_avro(s, $jsonFormatSchema, 42)\"".stripMargin,
           "msg" -> ("The third argument of the FROM_AVRO SQL function must be 
a constant map of " +
             "strings to strings containing the options to use for converting 
the value " +
             "from AVRO format"),
diff --git 
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/toFromAvroSqlFunctions.scala
 
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/toFromAvroSqlFunctions.scala
index 46f80cacc4fe..58bddafac088 100644
--- 
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/toFromAvroSqlFunctions.scala
+++ 
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/toFromAvroSqlFunctions.scala
@@ -17,6 +17,7 @@
 
 package org.apache.spark.sql.catalyst.expressions
 
+import org.apache.spark.sql.catalyst.analysis.FunctionRegistry
 import org.apache.spark.sql.catalyst.analysis.TypeCheckResult
 import org.apache.spark.sql.catalyst.util.ArrayBasedMapData
 import org.apache.spark.sql.errors.QueryCompilationErrors
@@ -117,6 +118,9 @@ case class FromAvro(child: Expression, jsonFormatSchema: 
Expression, options: Ex
     val expr = constructor.newInstance(child, schemaValue, optionsValue)
     expr.asInstanceOf[Expression]
   }
+
+  override def prettyName: String =
+    getTagValue(FunctionRegistry.FUNC_ALIAS).getOrElse("from_avro")
 }
 
 /**
@@ -189,4 +193,7 @@ case class ToAvro(child: Expression, jsonFormatSchema: 
Expression)
     val expr = constructor.newInstance(child, schemaValue)
     expr.asInstanceOf[Expression]
   }
+
+  override def prettyName: String =
+    getTagValue(FunctionRegistry.FUNC_ALIAS).getOrElse("to_avro")
 }
diff --git 
a/sql/core/src/test/resources/sql-tests/analyzer-results/to_from_avro.sql.out 
b/sql/core/src/test/resources/sql-tests/analyzer-results/to_from_avro.sql.out
index 951a4025d5fb..8275e4f1c0ff 100644
--- 
a/sql/core/src/test/resources/sql-tests/analyzer-results/to_from_avro.sql.out
+++ 
b/sql/core/src/test/resources/sql-tests/analyzer-results/to_from_avro.sql.out
@@ -36,7 +36,7 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
   "messageParameters" : {
     "hint" : "",
     "msg" : "The second argument of the FROM_AVRO SQL function must be a 
constant string containing the JSON representation of the schema to use for 
converting the value from AVRO format",
-    "sqlExpr" : "\"fromavro(s, 42, map())\""
+    "sqlExpr" : "\"from_avro(s, 42, map())\""
   },
   "queryContext" : [ {
     "objectType" : "",
@@ -58,7 +58,7 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
   "messageParameters" : {
     "hint" : "",
     "msg" : "The third argument of the FROM_AVRO SQL function must be a 
constant map of strings to strings containing the options to use for converting 
the value from AVRO format",
-    "sqlExpr" : "\"fromavro(s, variablereference(system.session.avro_schema='{ 
\"type\": \"record\", \"name\": \"struct\", \"fields\": [{ \"name\": \"u\", 
\"type\": [\"int\",\"string\"] }] }'), 42)\""
+    "sqlExpr" : "\"from_avro(s, 
variablereference(system.session.avro_schema='{ \"type\": \"record\", \"name\": 
\"struct\", \"fields\": [{ \"name\": \"u\", \"type\": [\"int\",\"string\"] }] 
}'), 42)\""
   },
   "queryContext" : [ {
     "objectType" : "",
@@ -80,7 +80,7 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
   "messageParameters" : {
     "hint" : "",
     "msg" : "The second argument of the TO_AVRO SQL function must be a 
constant string containing the JSON representation of the schema to use for 
converting the value to AVRO format",
-    "sqlExpr" : "\"toavro(s, 42)\""
+    "sqlExpr" : "\"to_avro(s, 42)\""
   },
   "queryContext" : [ {
     "objectType" : "",
diff --git a/sql/core/src/test/resources/sql-tests/results/to_from_avro.sql.out 
b/sql/core/src/test/resources/sql-tests/results/to_from_avro.sql.out
index f9f491bd70fd..a94175b1df39 100644
--- a/sql/core/src/test/resources/sql-tests/results/to_from_avro.sql.out
+++ b/sql/core/src/test/resources/sql-tests/results/to_from_avro.sql.out
@@ -38,7 +38,7 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
   "messageParameters" : {
     "hint" : "",
     "msg" : "The second argument of the FROM_AVRO SQL function must be a 
constant string containing the JSON representation of the schema to use for 
converting the value from AVRO format",
-    "sqlExpr" : "\"fromavro(s, 42, map())\""
+    "sqlExpr" : "\"from_avro(s, 42, map())\""
   },
   "queryContext" : [ {
     "objectType" : "",
@@ -62,7 +62,7 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
   "messageParameters" : {
     "hint" : "",
     "msg" : "The third argument of the FROM_AVRO SQL function must be a 
constant map of strings to strings containing the options to use for converting 
the value from AVRO format",
-    "sqlExpr" : "\"fromavro(s, variablereference(system.session.avro_schema='{ 
\"type\": \"record\", \"name\": \"struct\", \"fields\": [{ \"name\": \"u\", 
\"type\": [\"int\",\"string\"] }] }'), 42)\""
+    "sqlExpr" : "\"from_avro(s, 
variablereference(system.session.avro_schema='{ \"type\": \"record\", \"name\": 
\"struct\", \"fields\": [{ \"name\": \"u\", \"type\": [\"int\",\"string\"] }] 
}'), 42)\""
   },
   "queryContext" : [ {
     "objectType" : "",
@@ -86,7 +86,7 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
   "messageParameters" : {
     "hint" : "",
     "msg" : "The second argument of the TO_AVRO SQL function must be a 
constant string containing the JSON representation of the schema to use for 
converting the value to AVRO format",
-    "sqlExpr" : "\"toavro(s, 42)\""
+    "sqlExpr" : "\"to_avro(s, 42)\""
   },
   "queryContext" : [ {
     "objectType" : "",


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to