Eric Erhardt created ARROW-10719:
------------------------------------
Summary: [C#] ArrowStreamWriter doesn't write schema metadata
Key: ARROW-10719
URL: https://issues.apache.org/jira/browse/ARROW-10719
Project: Apache Arrow
Issue Type: Bug
Components: C#
Reporter: Eric Erhardt
See this TODO in the code:
[https://github.com/apache/arrow/blob/master/csharp/src/Apache.Arrow/Ipc/ArrowStreamWriter.cs#L445]
A simple test case:
{code:java}
// Build schema
var schemaBuilder = new Schema.Builder();
schemaBuilder.Field(f => f
.Name("Ints")
.Nullable(true)
.DataType(Int32Type.Default)
.Metadata(new Dictionary<string, string> { { "packed", packed ? "true" :
"false" } })
);
var indexMetadata = new Dictionary<string, string> { { "index",
JsonConvert.SerializeObject(new object()) } };
var schema = schemaBuilder.Metadata(indexMetadata).Build();
Int32Array a = new Int32Array.Builder().Append(5).Append(4).Build();
// Create record batch
var recordBatch = new RecordBatch(schema, new IArrowArray[] { a }, a.Length);//
Write recordbatch to file
using (var stream = File.Create("visits.arrow"))
using (var writer = new ArrowFileWriter(stream, recordBatch.Schema))
{
writer.WriteRecordBatch(recordBatch);
writer.WriteEnd();
}using (var stream = File.OpenRead("visits.arrow"))
using (var reader = new ArrowFileReader(stream))
{
var batch = reader.ReadNextRecordBatch();
Console.WriteLine(batch.Schema.HasMetadata);
}
{code}
The above should print `true`, but it prints `false` for HasMetadata.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)