From 71f29708b77d46cd4f92d219e5b0905a05f594c4 Mon Sep 17 00:00:00 2001 From: Dongjoon Hyun Date: Thu, 10 Apr 2025 19:42:08 +0900 Subject: [PATCH] [SPARK-51763] Support `ArrowStruct` type --- Sources/SparkConnect/ProtoUtil.swift | 2 ++ Tests/SparkConnectTests/Resources/queries/struct.sql | 1 + Tests/SparkConnectTests/Resources/queries/struct.sql.json | 1 + 3 files changed, 4 insertions(+) create mode 100644 Tests/SparkConnectTests/Resources/queries/struct.sql create mode 100644 Tests/SparkConnectTests/Resources/queries/struct.sql.json diff --git a/Sources/SparkConnect/ProtoUtil.swift b/Sources/SparkConnect/ProtoUtil.swift index ace45a9..5a16269 100644 --- a/Sources/SparkConnect/ProtoUtil.swift +++ b/Sources/SparkConnect/ProtoUtil.swift @@ -64,6 +64,8 @@ func fromProto( // swiftlint:disable:this cyclomatic_complexity let arrowUnit: ArrowTime64Unit = timeType.unit == .microsecond ? .microseconds : .nanoseconds arrowType = ArrowTypeTime64(arrowUnit) } + case .struct_: + arrowType = ArrowType(ArrowType.ArrowStruct) default: arrowType = ArrowType(ArrowType.ArrowUnknown) } diff --git a/Tests/SparkConnectTests/Resources/queries/struct.sql b/Tests/SparkConnectTests/Resources/queries/struct.sql new file mode 100644 index 0000000..3ec2472 --- /dev/null +++ b/Tests/SparkConnectTests/Resources/queries/struct.sql @@ -0,0 +1 @@ +SELECT struct(1), struct(2, struct(3)) diff --git a/Tests/SparkConnectTests/Resources/queries/struct.sql.json b/Tests/SparkConnectTests/Resources/queries/struct.sql.json new file mode 100644 index 0000000..08ef088 --- /dev/null +++ b/Tests/SparkConnectTests/Resources/queries/struct.sql.json @@ -0,0 +1 @@ +[["{1}","{2,{3}}"]]