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

dongjoon 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 5b622c53dcfa [SPARK-52917][SQL] Read support to enable round-trip for 
binary in xml format
5b622c53dcfa is described below

commit 5b622c53dcfa4b90830126959d242ca954bd2c98
Author: Kent Yao <y...@apache.org>
AuthorDate: Tue Jul 22 12:42:22 2025 -0700

    [SPARK-52917][SQL] Read support to enable round-trip for binary in xml 
format
    
    ### What changes were proposed in this pull request?
    
    After SPARK-52788 fixed binary write for XML format, we need to add the 
functionality to support reading it back instead of producing null constantly.
    
    ### Why are the changes needed?
    
    XML improvement
    
    ### Does this PR introduce _any_ user-facing change?
    no
    
    ### How was this patch tested?
    new tests
    
    ### Was this patch authored or co-authored using generative AI tooling?
    no
    
    Closes #51614 from yaooqinn/SPARK-52917.
    
    Authored-by: Kent Yao <y...@apache.org>
    Signed-off-by: Dongjoon Hyun <dongj...@apache.org>
---
 .../org/apache/spark/util/SparkStringUtils.scala     |  4 ++++
 .../sql/catalyst/expressions/ToStringBase.scala      | 19 ++++++++++++++++++-
 .../spark/sql/catalyst/xml/StaxXmlParser.scala       |  6 +++++-
 .../sql-tests/analyzer-results/binary.sql.out        | 18 ++++++++++++++++++
 .../sql-tests/analyzer-results/binary_base64.sql.out | 18 ++++++++++++++++++
 .../sql-tests/analyzer-results/binary_basic.sql.out  | 18 ++++++++++++++++++
 .../sql-tests/analyzer-results/binary_hex.sql.out    | 18 ++++++++++++++++++
 .../analyzer-results/binary_hex_discrete.sql.out     | 18 ++++++++++++++++++
 .../src/test/resources/sql-tests/inputs/binary.sql   |  6 ++++++
 .../test/resources/sql-tests/results/binary.sql.out  | 20 ++++++++++++++++++++
 .../sql-tests/results/binary_base64.sql.out          | 20 ++++++++++++++++++++
 .../resources/sql-tests/results/binary_basic.sql.out | 20 ++++++++++++++++++++
 .../resources/sql-tests/results/binary_hex.sql.out   | 20 ++++++++++++++++++++
 .../sql-tests/results/binary_hex_discrete.sql.out    | 20 ++++++++++++++++++++
 14 files changed, 223 insertions(+), 2 deletions(-)

diff --git 
a/common/utils/src/main/scala/org/apache/spark/util/SparkStringUtils.scala 
b/common/utils/src/main/scala/org/apache/spark/util/SparkStringUtils.scala
index c984c450c07b..3583cd82ee80 100644
--- a/common/utils/src/main/scala/org/apache/spark/util/SparkStringUtils.scala
+++ b/common/utils/src/main/scala/org/apache/spark/util/SparkStringUtils.scala
@@ -34,6 +34,10 @@ private[spark] trait SparkStringUtils {
     s"[${SPACE_DELIMITED_UPPERCASE_HEX.formatHex(bytes)}]"
   }
 
+  def fromHexString(hex: String): Array[Byte] = {
+    
SPACE_DELIMITED_UPPERCASE_HEX.parseHex(hex.stripPrefix("[").stripSuffix("]"))
+  }
+
   def sideBySide(left: String, right: String): Seq[String] = {
     sideBySide(left.split("\n").toImmutableArraySeq, 
right.split("\n").toImmutableArraySeq)
   }
diff --git 
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/ToStringBase.scala
 
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/ToStringBase.scala
index 672dc84bfaf4..bc294fd722b3 100644
--- 
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/ToStringBase.scala
+++ 
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/ToStringBase.scala
@@ -472,7 +472,24 @@ object ToStringBase {
         (array: Array[Byte]) => 
UTF8String.fromString(SparkStringUtils.getHexString(array))
     }
   }
+
+  def getBinaryParser: BinaryParser = {
+    val style = SQLConf.get.getConf(SQLConf.BINARY_OUTPUT_STYLE)
+    style match {
+      case Some(BinaryOutputStyle.UTF8) =>
+        (utf8: UTF8String) => utf8.getBytes
+      case Some(BinaryOutputStyle.BASIC) =>
+        (utf8: UTF8String) =>
+          
utf8.toString.stripPrefix("[").stripSuffix("]").split(",").map(_.trim.toByte)
+      case Some(BinaryOutputStyle.BASE64) =>
+        (utf8: UTF8String) => java.util.Base64.getDecoder.decode(utf8.getBytes)
+      case Some(BinaryOutputStyle.HEX) =>
+        (utf8: UTF8String) => Hex.unhex(utf8.getBytes)
+      case _ =>
+        (utf8: UTF8String) => SparkStringUtils.fromHexString(utf8.toString)
+    }
+  }
 }
 
 trait BinaryFormatter extends (Array[Byte] => UTF8String) with Serializable
-
+trait BinaryParser extends (UTF8String => Array[Byte]) with Serializable
diff --git 
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/xml/StaxXmlParser.scala
 
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/xml/StaxXmlParser.scala
index 00497c1c31f3..e3efc362cd92 100644
--- 
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/xml/StaxXmlParser.scala
+++ 
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/xml/StaxXmlParser.scala
@@ -40,7 +40,7 @@ import org.apache.hadoop.security.AccessControlException
 import org.apache.spark.{SparkIllegalArgumentException, SparkUpgradeException}
 import org.apache.spark.internal.Logging
 import org.apache.spark.sql.catalyst.InternalRow
-import org.apache.spark.sql.catalyst.expressions.{ExprUtils, 
GenericInternalRow}
+import org.apache.spark.sql.catalyst.expressions.{ExprUtils, 
GenericInternalRow, ToStringBase}
 import org.apache.spark.sql.catalyst.util.{ArrayBasedMapData, 
BadRecordException, DateFormatter, DropMalformedMode, FailureSafeParser, 
GenericArrayData, MapData, ParseMode, PartialResultArrayException, 
PartialResultException, PermissiveMode, TimestampFormatter}
 import org.apache.spark.sql.catalyst.util.LegacyDateFormats.FAST_DATE_FORMAT
 import org.apache.spark.sql.catalyst.xml.StaxXmlParser.convertStream
@@ -76,6 +76,8 @@ class StaxXmlParser(
     legacyFormat = FAST_DATE_FORMAT,
     isParsing = true)
 
+  private lazy val binaryParser = ToStringBase.getBinaryParser
+
   private val decimalParser = ExprUtils.getDecimalParser(options.locale)
 
   private val caseSensitive = SQLConf.get.caseSensitiveAnalysis
@@ -493,6 +495,7 @@ class StaxXmlParser(
         case _: TimestampNTZType => 
timestampNTZFormatter.parseWithoutTimeZone(datum, false)
         case _: DateType => parseXmlDate(datum, options)
         case _: StringType => UTF8String.fromString(datum)
+        case _: BinaryType => binaryParser(UTF8String.fromString(datum))
         case _ => throw new SparkIllegalArgumentException(
           errorClass = "_LEGACY_ERROR_TEMP_3244",
           messageParameters = Map("castType" -> "castType.typeName"))
@@ -536,6 +539,7 @@ class StaxXmlParser(
         case DoubleType => signSafeToDouble(value)
         case BooleanType => castTo(value, BooleanType)
         case StringType => castTo(value, StringType)
+        case BinaryType => castTo(value, BinaryType)
         case DateType => castTo(value, DateType)
         case TimestampType => castTo(value, TimestampType)
         case TimestampNTZType => castTo(value, TimestampNTZType)
diff --git 
a/sql/core/src/test/resources/sql-tests/analyzer-results/binary.sql.out 
b/sql/core/src/test/resources/sql-tests/analyzer-results/binary.sql.out
index d21abdc824e0..b2781c56ca7d 100644
--- a/sql/core/src/test/resources/sql-tests/analyzer-results/binary.sql.out
+++ b/sql/core/src/test/resources/sql-tests/analyzer-results/binary.sql.out
@@ -39,3 +39,21 @@ select to_xml(named_struct('name', binary('Eason'), 'birth', 
2018, 'org', binary
 -- !query analysis
 Project [to_xml(named_struct(name, cast(Eason as binary), birth, 2018, org, 
cast(Kindergarten Cop as binary)), Some(America/Los_Angeles)) AS 
to_xml(named_struct(name, Eason, birth, 2018, org, Kindergarten Cop))#x]
 +- OneRowRelation
+
+
+-- !query
+SELECT from_xml(
+         to_xml(named_struct('name', binary('Eason'), 'birth', 2018, 'org', 
binary('Kindergarten Cop'))),
+         'name STRING, birth INT, org STRING')
+-- !query analysis
+Project [from_xml(StructField(name,StringType,true), 
StructField(birth,IntegerType,true), StructField(org,StringType,true), 
to_xml(named_struct(name, cast(Eason as binary), birth, 2018, org, 
cast(Kindergarten Cop as binary)), Some(America/Los_Angeles)), 
Some(America/Los_Angeles)) AS from_xml(to_xml(named_struct(name, Eason, birth, 
2018, org, Kindergarten Cop)))#x]
++- OneRowRelation
+
+
+-- !query
+SELECT from_xml(
+         to_xml(named_struct('name', binary('Eason'), 'birth', 2018, 'org', 
binary('Kindergarten Cop'))),
+         'name binary, birth INT, org binary')
+-- !query analysis
+Project [from_xml(StructField(name,BinaryType,true), 
StructField(birth,IntegerType,true), StructField(org,BinaryType,true), 
to_xml(named_struct(name, cast(Eason as binary), birth, 2018, org, 
cast(Kindergarten Cop as binary)), Some(America/Los_Angeles)), 
Some(America/Los_Angeles)) AS from_xml(to_xml(named_struct(name, Eason, birth, 
2018, org, Kindergarten Cop)))#x]
++- OneRowRelation
diff --git 
a/sql/core/src/test/resources/sql-tests/analyzer-results/binary_base64.sql.out 
b/sql/core/src/test/resources/sql-tests/analyzer-results/binary_base64.sql.out
index d21abdc824e0..b2781c56ca7d 100644
--- 
a/sql/core/src/test/resources/sql-tests/analyzer-results/binary_base64.sql.out
+++ 
b/sql/core/src/test/resources/sql-tests/analyzer-results/binary_base64.sql.out
@@ -39,3 +39,21 @@ select to_xml(named_struct('name', binary('Eason'), 'birth', 
2018, 'org', binary
 -- !query analysis
 Project [to_xml(named_struct(name, cast(Eason as binary), birth, 2018, org, 
cast(Kindergarten Cop as binary)), Some(America/Los_Angeles)) AS 
to_xml(named_struct(name, Eason, birth, 2018, org, Kindergarten Cop))#x]
 +- OneRowRelation
+
+
+-- !query
+SELECT from_xml(
+         to_xml(named_struct('name', binary('Eason'), 'birth', 2018, 'org', 
binary('Kindergarten Cop'))),
+         'name STRING, birth INT, org STRING')
+-- !query analysis
+Project [from_xml(StructField(name,StringType,true), 
StructField(birth,IntegerType,true), StructField(org,StringType,true), 
to_xml(named_struct(name, cast(Eason as binary), birth, 2018, org, 
cast(Kindergarten Cop as binary)), Some(America/Los_Angeles)), 
Some(America/Los_Angeles)) AS from_xml(to_xml(named_struct(name, Eason, birth, 
2018, org, Kindergarten Cop)))#x]
++- OneRowRelation
+
+
+-- !query
+SELECT from_xml(
+         to_xml(named_struct('name', binary('Eason'), 'birth', 2018, 'org', 
binary('Kindergarten Cop'))),
+         'name binary, birth INT, org binary')
+-- !query analysis
+Project [from_xml(StructField(name,BinaryType,true), 
StructField(birth,IntegerType,true), StructField(org,BinaryType,true), 
to_xml(named_struct(name, cast(Eason as binary), birth, 2018, org, 
cast(Kindergarten Cop as binary)), Some(America/Los_Angeles)), 
Some(America/Los_Angeles)) AS from_xml(to_xml(named_struct(name, Eason, birth, 
2018, org, Kindergarten Cop)))#x]
++- OneRowRelation
diff --git 
a/sql/core/src/test/resources/sql-tests/analyzer-results/binary_basic.sql.out 
b/sql/core/src/test/resources/sql-tests/analyzer-results/binary_basic.sql.out
index d21abdc824e0..b2781c56ca7d 100644
--- 
a/sql/core/src/test/resources/sql-tests/analyzer-results/binary_basic.sql.out
+++ 
b/sql/core/src/test/resources/sql-tests/analyzer-results/binary_basic.sql.out
@@ -39,3 +39,21 @@ select to_xml(named_struct('name', binary('Eason'), 'birth', 
2018, 'org', binary
 -- !query analysis
 Project [to_xml(named_struct(name, cast(Eason as binary), birth, 2018, org, 
cast(Kindergarten Cop as binary)), Some(America/Los_Angeles)) AS 
to_xml(named_struct(name, Eason, birth, 2018, org, Kindergarten Cop))#x]
 +- OneRowRelation
+
+
+-- !query
+SELECT from_xml(
+         to_xml(named_struct('name', binary('Eason'), 'birth', 2018, 'org', 
binary('Kindergarten Cop'))),
+         'name STRING, birth INT, org STRING')
+-- !query analysis
+Project [from_xml(StructField(name,StringType,true), 
StructField(birth,IntegerType,true), StructField(org,StringType,true), 
to_xml(named_struct(name, cast(Eason as binary), birth, 2018, org, 
cast(Kindergarten Cop as binary)), Some(America/Los_Angeles)), 
Some(America/Los_Angeles)) AS from_xml(to_xml(named_struct(name, Eason, birth, 
2018, org, Kindergarten Cop)))#x]
++- OneRowRelation
+
+
+-- !query
+SELECT from_xml(
+         to_xml(named_struct('name', binary('Eason'), 'birth', 2018, 'org', 
binary('Kindergarten Cop'))),
+         'name binary, birth INT, org binary')
+-- !query analysis
+Project [from_xml(StructField(name,BinaryType,true), 
StructField(birth,IntegerType,true), StructField(org,BinaryType,true), 
to_xml(named_struct(name, cast(Eason as binary), birth, 2018, org, 
cast(Kindergarten Cop as binary)), Some(America/Los_Angeles)), 
Some(America/Los_Angeles)) AS from_xml(to_xml(named_struct(name, Eason, birth, 
2018, org, Kindergarten Cop)))#x]
++- OneRowRelation
diff --git 
a/sql/core/src/test/resources/sql-tests/analyzer-results/binary_hex.sql.out 
b/sql/core/src/test/resources/sql-tests/analyzer-results/binary_hex.sql.out
index d21abdc824e0..b2781c56ca7d 100644
--- a/sql/core/src/test/resources/sql-tests/analyzer-results/binary_hex.sql.out
+++ b/sql/core/src/test/resources/sql-tests/analyzer-results/binary_hex.sql.out
@@ -39,3 +39,21 @@ select to_xml(named_struct('name', binary('Eason'), 'birth', 
2018, 'org', binary
 -- !query analysis
 Project [to_xml(named_struct(name, cast(Eason as binary), birth, 2018, org, 
cast(Kindergarten Cop as binary)), Some(America/Los_Angeles)) AS 
to_xml(named_struct(name, Eason, birth, 2018, org, Kindergarten Cop))#x]
 +- OneRowRelation
+
+
+-- !query
+SELECT from_xml(
+         to_xml(named_struct('name', binary('Eason'), 'birth', 2018, 'org', 
binary('Kindergarten Cop'))),
+         'name STRING, birth INT, org STRING')
+-- !query analysis
+Project [from_xml(StructField(name,StringType,true), 
StructField(birth,IntegerType,true), StructField(org,StringType,true), 
to_xml(named_struct(name, cast(Eason as binary), birth, 2018, org, 
cast(Kindergarten Cop as binary)), Some(America/Los_Angeles)), 
Some(America/Los_Angeles)) AS from_xml(to_xml(named_struct(name, Eason, birth, 
2018, org, Kindergarten Cop)))#x]
++- OneRowRelation
+
+
+-- !query
+SELECT from_xml(
+         to_xml(named_struct('name', binary('Eason'), 'birth', 2018, 'org', 
binary('Kindergarten Cop'))),
+         'name binary, birth INT, org binary')
+-- !query analysis
+Project [from_xml(StructField(name,BinaryType,true), 
StructField(birth,IntegerType,true), StructField(org,BinaryType,true), 
to_xml(named_struct(name, cast(Eason as binary), birth, 2018, org, 
cast(Kindergarten Cop as binary)), Some(America/Los_Angeles)), 
Some(America/Los_Angeles)) AS from_xml(to_xml(named_struct(name, Eason, birth, 
2018, org, Kindergarten Cop)))#x]
++- OneRowRelation
diff --git 
a/sql/core/src/test/resources/sql-tests/analyzer-results/binary_hex_discrete.sql.out
 
b/sql/core/src/test/resources/sql-tests/analyzer-results/binary_hex_discrete.sql.out
index d21abdc824e0..b2781c56ca7d 100644
--- 
a/sql/core/src/test/resources/sql-tests/analyzer-results/binary_hex_discrete.sql.out
+++ 
b/sql/core/src/test/resources/sql-tests/analyzer-results/binary_hex_discrete.sql.out
@@ -39,3 +39,21 @@ select to_xml(named_struct('name', binary('Eason'), 'birth', 
2018, 'org', binary
 -- !query analysis
 Project [to_xml(named_struct(name, cast(Eason as binary), birth, 2018, org, 
cast(Kindergarten Cop as binary)), Some(America/Los_Angeles)) AS 
to_xml(named_struct(name, Eason, birth, 2018, org, Kindergarten Cop))#x]
 +- OneRowRelation
+
+
+-- !query
+SELECT from_xml(
+         to_xml(named_struct('name', binary('Eason'), 'birth', 2018, 'org', 
binary('Kindergarten Cop'))),
+         'name STRING, birth INT, org STRING')
+-- !query analysis
+Project [from_xml(StructField(name,StringType,true), 
StructField(birth,IntegerType,true), StructField(org,StringType,true), 
to_xml(named_struct(name, cast(Eason as binary), birth, 2018, org, 
cast(Kindergarten Cop as binary)), Some(America/Los_Angeles)), 
Some(America/Los_Angeles)) AS from_xml(to_xml(named_struct(name, Eason, birth, 
2018, org, Kindergarten Cop)))#x]
++- OneRowRelation
+
+
+-- !query
+SELECT from_xml(
+         to_xml(named_struct('name', binary('Eason'), 'birth', 2018, 'org', 
binary('Kindergarten Cop'))),
+         'name binary, birth INT, org binary')
+-- !query analysis
+Project [from_xml(StructField(name,BinaryType,true), 
StructField(birth,IntegerType,true), StructField(org,BinaryType,true), 
to_xml(named_struct(name, cast(Eason as binary), birth, 2018, org, 
cast(Kindergarten Cop as binary)), Some(America/Los_Angeles)), 
Some(America/Los_Angeles)) AS from_xml(to_xml(named_struct(name, Eason, birth, 
2018, org, Kindergarten Cop)))#x]
++- OneRowRelation
diff --git a/sql/core/src/test/resources/sql-tests/inputs/binary.sql 
b/sql/core/src/test/resources/sql-tests/inputs/binary.sql
index 8da97e466341..b30c57a7e871 100644
--- a/sql/core/src/test/resources/sql-tests/inputs/binary.sql
+++ b/sql/core/src/test/resources/sql-tests/inputs/binary.sql
@@ -6,3 +6,9 @@ SELECT CAST('Spark' as BINARY);
 SELECT array( X'', 
X'4561736F6E2059616F20323031382D31312D31373A31333A33333A3333', CAST('Spark' as 
BINARY));
 SELECT to_csv(named_struct('n', 1, 'info', 
X'4561736F6E2059616F20323031382D31312D31373A31333A33333A3333'));
 select to_xml(named_struct('name', binary('Eason'), 'birth', 2018, 'org', 
binary('Kindergarten Cop')));
+SELECT from_xml(
+         to_xml(named_struct('name', binary('Eason'), 'birth', 2018, 'org', 
binary('Kindergarten Cop'))),
+         'name STRING, birth INT, org STRING');
+SELECT from_xml(
+         to_xml(named_struct('name', binary('Eason'), 'birth', 2018, 'org', 
binary('Kindergarten Cop'))),
+         'name binary, birth INT, org binary');
diff --git a/sql/core/src/test/resources/sql-tests/results/binary.sql.out 
b/sql/core/src/test/resources/sql-tests/results/binary.sql.out
index 9571d9130f73..bdbf4e538f6c 100644
--- a/sql/core/src/test/resources/sql-tests/results/binary.sql.out
+++ b/sql/core/src/test/resources/sql-tests/results/binary.sql.out
@@ -49,3 +49,23 @@ struct<to_xml(named_struct(name, Eason, birth, 2018, org, 
Kindergarten Cop)):str
     <birth>2018</birth>
     <org>Kindergarten Cop</org>
 </ROW>
+
+
+-- !query
+SELECT from_xml(
+         to_xml(named_struct('name', binary('Eason'), 'birth', 2018, 'org', 
binary('Kindergarten Cop'))),
+         'name STRING, birth INT, org STRING')
+-- !query schema
+struct<from_xml(to_xml(named_struct(name, Eason, birth, 2018, org, 
Kindergarten Cop))):struct<name:string,birth:int,org:string>>
+-- !query output
+{"name":"Eason","birth":2018,"org":"Kindergarten Cop"}
+
+
+-- !query
+SELECT from_xml(
+         to_xml(named_struct('name', binary('Eason'), 'birth', 2018, 'org', 
binary('Kindergarten Cop'))),
+         'name binary, birth INT, org binary')
+-- !query schema
+struct<from_xml(to_xml(named_struct(name, Eason, birth, 2018, org, 
Kindergarten Cop))):struct<name:binary,birth:int,org:binary>>
+-- !query output
+{"name":Eason,"birth":2018,"org":Kindergarten Cop}
diff --git 
a/sql/core/src/test/resources/sql-tests/results/binary_base64.sql.out 
b/sql/core/src/test/resources/sql-tests/results/binary_base64.sql.out
index ef45d059bc81..0806f175550d 100644
--- a/sql/core/src/test/resources/sql-tests/results/binary_base64.sql.out
+++ b/sql/core/src/test/resources/sql-tests/results/binary_base64.sql.out
@@ -49,3 +49,23 @@ struct<to_xml(named_struct(name, Eason, birth, 2018, org, 
Kindergarten Cop)):str
     <birth>2018</birth>
     <org>S2luZGVyZ2FydGVuIENvcA</org>
 </ROW>
+
+
+-- !query
+SELECT from_xml(
+         to_xml(named_struct('name', binary('Eason'), 'birth', 2018, 'org', 
binary('Kindergarten Cop'))),
+         'name STRING, birth INT, org STRING')
+-- !query schema
+struct<from_xml(to_xml(named_struct(name, Eason, birth, 2018, org, 
Kindergarten Cop))):struct<name:string,birth:int,org:string>>
+-- !query output
+{"name":"RWFzb24","birth":2018,"org":"S2luZGVyZ2FydGVuIENvcA"}
+
+
+-- !query
+SELECT from_xml(
+         to_xml(named_struct('name', binary('Eason'), 'birth', 2018, 'org', 
binary('Kindergarten Cop'))),
+         'name binary, birth INT, org binary')
+-- !query schema
+struct<from_xml(to_xml(named_struct(name, Eason, birth, 2018, org, 
Kindergarten Cop))):struct<name:binary,birth:int,org:binary>>
+-- !query output
+{"name":RWFzb24,"birth":2018,"org":S2luZGVyZ2FydGVuIENvcA}
diff --git a/sql/core/src/test/resources/sql-tests/results/binary_basic.sql.out 
b/sql/core/src/test/resources/sql-tests/results/binary_basic.sql.out
index 0118df765df1..ce0d7d5d7f9b 100644
--- a/sql/core/src/test/resources/sql-tests/results/binary_basic.sql.out
+++ b/sql/core/src/test/resources/sql-tests/results/binary_basic.sql.out
@@ -49,3 +49,23 @@ struct<to_xml(named_struct(name, Eason, birth, 2018, org, 
Kindergarten Cop)):str
     <birth>2018</birth>
     <org>[75, 105, 110, 100, 101, 114, 103, 97, 114, 116, 101, 110, 32, 67, 
111, 112]</org>
 </ROW>
+
+
+-- !query
+SELECT from_xml(
+         to_xml(named_struct('name', binary('Eason'), 'birth', 2018, 'org', 
binary('Kindergarten Cop'))),
+         'name STRING, birth INT, org STRING')
+-- !query schema
+struct<from_xml(to_xml(named_struct(name, Eason, birth, 2018, org, 
Kindergarten Cop))):struct<name:string,birth:int,org:string>>
+-- !query output
+{"name":"[69, 97, 115, 111, 110]","birth":2018,"org":"[75, 105, 110, 100, 101, 
114, 103, 97, 114, 116, 101, 110, 32, 67, 111, 112]"}
+
+
+-- !query
+SELECT from_xml(
+         to_xml(named_struct('name', binary('Eason'), 'birth', 2018, 'org', 
binary('Kindergarten Cop'))),
+         'name binary, birth INT, org binary')
+-- !query schema
+struct<from_xml(to_xml(named_struct(name, Eason, birth, 2018, org, 
Kindergarten Cop))):struct<name:binary,birth:int,org:binary>>
+-- !query output
+{"name":[69, 97, 115, 111, 110],"birth":2018,"org":[75, 105, 110, 100, 101, 
114, 103, 97, 114, 116, 101, 110, 32, 67, 111, 112]}
diff --git a/sql/core/src/test/resources/sql-tests/results/binary_hex.sql.out 
b/sql/core/src/test/resources/sql-tests/results/binary_hex.sql.out
index d97f6efae292..b1b23e02ea4e 100644
--- a/sql/core/src/test/resources/sql-tests/results/binary_hex.sql.out
+++ b/sql/core/src/test/resources/sql-tests/results/binary_hex.sql.out
@@ -49,3 +49,23 @@ struct<to_xml(named_struct(name, Eason, birth, 2018, org, 
Kindergarten Cop)):str
     <birth>2018</birth>
     <org>4B696E64657267617274656E20436F70</org>
 </ROW>
+
+
+-- !query
+SELECT from_xml(
+         to_xml(named_struct('name', binary('Eason'), 'birth', 2018, 'org', 
binary('Kindergarten Cop'))),
+         'name STRING, birth INT, org STRING')
+-- !query schema
+struct<from_xml(to_xml(named_struct(name, Eason, birth, 2018, org, 
Kindergarten Cop))):struct<name:string,birth:int,org:string>>
+-- !query output
+{"name":"4561736F6E","birth":2018,"org":"4B696E64657267617274656E20436F70"}
+
+
+-- !query
+SELECT from_xml(
+         to_xml(named_struct('name', binary('Eason'), 'birth', 2018, 'org', 
binary('Kindergarten Cop'))),
+         'name binary, birth INT, org binary')
+-- !query schema
+struct<from_xml(to_xml(named_struct(name, Eason, birth, 2018, org, 
Kindergarten Cop))):struct<name:binary,birth:int,org:binary>>
+-- !query output
+{"name":4561736F6E,"birth":2018,"org":4B696E64657267617274656E20436F70}
diff --git 
a/sql/core/src/test/resources/sql-tests/results/binary_hex_discrete.sql.out 
b/sql/core/src/test/resources/sql-tests/results/binary_hex_discrete.sql.out
index e0dc049db833..a07cfd8cacff 100644
--- a/sql/core/src/test/resources/sql-tests/results/binary_hex_discrete.sql.out
+++ b/sql/core/src/test/resources/sql-tests/results/binary_hex_discrete.sql.out
@@ -49,3 +49,23 @@ struct<to_xml(named_struct(name, Eason, birth, 2018, org, 
Kindergarten Cop)):str
     <birth>2018</birth>
     <org>[4B 69 6E 64 65 72 67 61 72 74 65 6E 20 43 6F 70]</org>
 </ROW>
+
+
+-- !query
+SELECT from_xml(
+         to_xml(named_struct('name', binary('Eason'), 'birth', 2018, 'org', 
binary('Kindergarten Cop'))),
+         'name STRING, birth INT, org STRING')
+-- !query schema
+struct<from_xml(to_xml(named_struct(name, Eason, birth, 2018, org, 
Kindergarten Cop))):struct<name:string,birth:int,org:string>>
+-- !query output
+{"name":"[45 61 73 6F 6E]","birth":2018,"org":"[4B 69 6E 64 65 72 67 61 72 74 
65 6E 20 43 6F 70]"}
+
+
+-- !query
+SELECT from_xml(
+         to_xml(named_struct('name', binary('Eason'), 'birth', 2018, 'org', 
binary('Kindergarten Cop'))),
+         'name binary, birth INT, org binary')
+-- !query schema
+struct<from_xml(to_xml(named_struct(name, Eason, birth, 2018, org, 
Kindergarten Cop))):struct<name:binary,birth:int,org:binary>>
+-- !query output
+{"name":[45 61 73 6F 6E],"birth":2018,"org":[4B 69 6E 64 65 72 67 61 72 74 65 
6E 20 43 6F 70]}


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

Reply via email to