diff --git a/Sources/SparkConnect/DataFrame.swift b/Sources/SparkConnect/DataFrame.swift index 81c92e4..ad833de 100644 --- a/Sources/SparkConnect/DataFrame.swift +++ b/Sources/SparkConnect/DataFrame.swift @@ -173,6 +173,9 @@ public actor DataFrame: Sendable { let str = column.array as! AsString if column.data.isNull(i) { values.append(nil) + } else if column.data.type.info == ArrowType.ArrowBinary { + let binary = str.asString(i).utf8.map { String(format: "%02x", $0) }.joined(separator: " ") + values.append("[\(binary)]") } else { values.append(str.asString(i)) } @@ -201,6 +204,9 @@ public actor DataFrame: Sendable { let str = column.array as! AsString if column.data.isNull(i) { values.append("NULL") + } else if column.data.type.info == ArrowType.ArrowBinary { + let binary = str.asString(i).utf8.map { String(format: "%02x", $0) }.joined(separator: " ") + values.append("[\(binary)]") } else { values.append(str.asString(i)) } diff --git a/Tests/SparkConnectTests/Resources/queries/binary.sql b/Tests/SparkConnectTests/Resources/queries/binary.sql new file mode 100644 index 0000000..9d5e14f --- /dev/null +++ b/Tests/SparkConnectTests/Resources/queries/binary.sql @@ -0,0 +1 @@ +SELECT binary('abc') diff --git a/Tests/SparkConnectTests/Resources/queries/binary.sql.json b/Tests/SparkConnectTests/Resources/queries/binary.sql.json new file mode 100644 index 0000000..08434e6 --- /dev/null +++ b/Tests/SparkConnectTests/Resources/queries/binary.sql.json @@ -0,0 +1 @@ +[["[61 62 63]"]]