@@ -60,13 +60,30 @@ func (s *ReadSplitsStreamer[T]) writeDataToStream() error {
6060}
6161
6262func (s * ReadSplitsStreamer [T ]) sendResultToStream (result * paging.ReadResult [T ]) error {
63- // buffer must be explicitly marked as unused,
64- // otherwise memory will leak
65- defer result .ColumnarBuffer .Release ()
63+ var resp * api_service_protos.TReadSplitsResponse
6664
67- resp , err := result .ColumnarBuffer .ToResponse ()
68- if err != nil {
69- return fmt .Errorf ("buffer to response: %w" , err )
65+ var err error
66+
67+ if result .Data != nil {
68+ fmt .Println (" >>> HERE <<<" )
69+ // Handle the case where we have serialized Arrow data
70+ resp = & api_service_protos.TReadSplitsResponse {
71+ Payload : & api_service_protos.TReadSplitsResponse_ArrowIpcStreaming {
72+ ArrowIpcStreaming : result .Data ,
73+ },
74+ }
75+ } else if result .ColumnarBuffer != nil {
76+ // Handle the case where we have a columnar buffer
77+ // buffer must be explicitly marked as unused,
78+ // otherwise memory will leak
79+ defer result .ColumnarBuffer .Release ()
80+
81+ resp , err = result .ColumnarBuffer .ToResponse ()
82+ if err != nil {
83+ return fmt .Errorf ("buffer to response: %w" , err )
84+ }
85+ } else {
86+ return fmt .Errorf ("result contains neither Data nor ColumnarBuffer" )
7087 }
7188
7289 resp .Stats = result .Stats
0 commit comments