The head, tail, and convert commands render BYTE_ARRAY columns with STRING logical type as raw byte counts (e.g. <5 bytes>) instead of the actual string value.
Example:
$ hardwood head -f data.parquet -n 3
+----+-------+------------+--------+
| id | price | name | active |
+----+-------+------------+--------+
| 1 | 10.0 | <5 bytes> | true |
| 2 | 20.0 | <6 bytes> | true |
| 3 | 30.0 | <6 bytes> | true |
+----+-------+------------+--------+
Expected: name should show Alice, Bob, Claire.
The schema correctly identifies the column as byte_array name (StringType[]), so the logical type metadata is present. The RowTable formatter renders byte[] values as <N bytes> without checking the logical type annotation.
Same issue affects convert --to json output: "name":"<5 bytes>" instead of "name":"Alice".
The
head,tail, andconvertcommands renderBYTE_ARRAYcolumns withSTRINGlogical type as raw byte counts (e.g.<5 bytes>) instead of the actual string value.Example:
Expected:
nameshould showAlice,Bob,Claire.The schema correctly identifies the column as
byte_array name (StringType[]), so the logical type metadata is present. TheRowTableformatter rendersbyte[]values as<N bytes>without checking the logical type annotation.Same issue affects
convert --to jsonoutput:"name":"<5 bytes>"instead of"name":"Alice".