helmi created ARROW-17644: ----------------------------- Summary: Exception when reading binary arrow file (Value cannot be null. (Parameter 'name')) Key: ARROW-17644 URL: https://issues.apache.org/jira/browse/ARROW-17644 Project: Apache Arrow Issue Type: Bug Components: C# Reporter: helmi Attachments: sample.arrow
Hi everyone, I'm trying to read binary file using csharp apache arrow library v9.0.0 and I'm facing this exception ``` Unhandled exception. System.AggregateException: One or more errors occurred. (Value cannot be null. (Parameter 'name')) ---> System.ArgumentNullException: Value cannot be null. (Parameter 'name') at Apache.Arrow.Field..ctor(String name, IArrowType dataType, Boolean nullable) at Apache.Arrow.Ipc.MessageSerializer.FieldFromFlatbuffer(Field flatbufField, DictionaryMemo& dictionaryMemo) at Apache.Arrow.Ipc.MessageSerializer.FieldFromFlatbuffer(Field flatbufField, DictionaryMemo& dictionaryMemo) at Apache.Arrow.Ipc.MessageSerializer.GetSchema(Schema schema, DictionaryMemo& dictionaryMemo) at Apache.Arrow.Ipc.ArrowStreamReaderImplementation.<ReadSchemaAsync>b__10_0(Memory`1 buff) at Apache.Arrow.ArrayPoolExtensions.RentReturnAsync(ArrayPool`1 pool, Int32 length, Func`2 action) at Apache.Arrow.Ipc.ArrowStreamReaderImplementation.ReadSchemaAsync() at Apache.Arrow.Ipc.ArrowStreamReaderImplementation.ReadRecordBatchAsync(CancellationToken cancellationToken) at Apache.Arrow.Ipc.ArrowStreamReaderImplementation.ReadNextRecordBatchAsync(CancellationToken cancellationToken) ``` As far as I do understand, the library is complaining about field name being null, not sure if it's the case since I tried to read the same file using apache arrow golang library and it seems to work without issue. Please find attached the `sample.arrow` file Below a sample code I'm using to read this arrow file: *Csharp sample ``` using System; using System.IO; using System.Threading.Tasks; using Apache.Arrow; using Apache.Arrow.Ipc; namespace arrow_csharp_issue { class Program { static async Task AsyncMain() { byte[] bytes = File.ReadAllBytes("./inputs/sample.arrow"); using (var memoryStream = new MemoryStream(bytes)) using (var reader = new ArrowStreamReader(memoryStream)) { RecordBatch record = await reader.ReadNextRecordBatchAsync(); Console.WriteLine(record); } } static void Main(string[] args) { AsyncMain().Wait(); } } } ``` * Golang sample ``` package main import ( "bytes" "fmt" "os" "github.com/apache/arrow/go/v9/arrow/ipc" ) func main() { data, err := os.ReadFile("./inputs/sample.arrow") if err != nil { panic(err) } reader, err := ipc.NewReader(bytes.NewReader(data)) if err != nil { panic(err) } defer reader.Release() reader.Next() record := reader.Record() fmt.Println(record) } ``` Thank you -- This message was sent by Atlassian Jira (v8.20.10#820010)