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

gurwls223 pushed a commit to branch branch-3.4
in repository https://gitbox.apache.org/repos/asf/spark.git


The following commit(s) were added to refs/heads/branch-3.4 by this push:
     new 135bb497eda [SPARK-44479][CONNECT][PYTHON] Fix protobuf conversion 
from an empty struct type
135bb497eda is described below

commit 135bb497edad8d132323257547c86bd405ecba8e
Author: Takuya UESHIN <ues...@databricks.com>
AuthorDate: Thu Jul 27 10:10:44 2023 +0900

    [SPARK-44479][CONNECT][PYTHON] Fix protobuf conversion from an empty struct 
type
    
    ### What changes were proposed in this pull request?
    
    This is a partial backport of #42161.
    
    Fixes protobuf conversion from an empty struct type.
    
    ### Why are the changes needed?
    
    The empty struct type was not properly converted to the protobuf message.
    
    ### Does this PR introduce _any_ user-facing change?
    
    No.
    
    ### How was this patch tested?
    
    Existing tests.
    
    Closes #42179 from ueshin/issues/SPARK-44479/3.4/empty_schema.
    
    Authored-by: Takuya UESHIN <ues...@databricks.com>
    Signed-off-by: Hyukjin Kwon <gurwls...@apache.org>
---
 python/pyspark/sql/connect/types.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/python/pyspark/sql/connect/types.py 
b/python/pyspark/sql/connect/types.py
index dfb0fb5303f..be8d62c805f 100644
--- a/python/pyspark/sql/connect/types.py
+++ b/python/pyspark/sql/connect/types.py
@@ -155,6 +155,7 @@ def pyspark_types_to_proto_types(data_type: DataType) -> 
pb2.DataType:
         ret.day_time_interval.start_field = data_type.startField
         ret.day_time_interval.end_field = data_type.endField
     elif isinstance(data_type, StructType):
+        struct = pb2.DataType.Struct()
         for field in data_type.fields:
             struct_field = pb2.DataType.StructField()
             struct_field.name = field.name
@@ -162,7 +163,8 @@ def pyspark_types_to_proto_types(data_type: DataType) -> 
pb2.DataType:
             struct_field.nullable = field.nullable
             if field.metadata is not None and len(field.metadata) > 0:
                 struct_field.metadata = json.dumps(field.metadata)
-            ret.struct.fields.append(struct_field)
+            struct.fields.append(struct_field)
+        ret.struct.CopyFrom(struct)
     elif isinstance(data_type, MapType):
         
ret.map.key_type.CopyFrom(pyspark_types_to_proto_types(data_type.keyType))
         
ret.map.value_type.CopyFrom(pyspark_types_to_proto_types(data_type.valueType))


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

Reply via email to