Hi, I have a simple Flight server in Go. I am able to receive data to a Go server from a Python client:
import pyarrow.flight as flight import polars as pl df = pl.read_csv("test.csv") data_table = df.to_arrow() client = pa.flight.connect("grpc://0.0.0.0:58474") upload_descriptor = pa.flight.FlightDescriptor.for_path("uploaded.parquet") writer, _ = client.do_put(upload_descriptor, data_table.schema) writer.write_table(data_table) writer.close() This works perfectly. But I am getting very stuck with the methods to format the DoPut to include the descriptor and schema for the Go client. My approximate code is: client, err := flight.NewClientWithMiddleware(address, nil, nil, grpc.WithTransportCredentials(insecure.NewCredentials())) stream, err := client.DoPut(context.Background()) if err != nil { panic(err) } wr := flight.NewRecordWriter(stream) descriptor := &flight.FlightDescriptor{ Type: flight.DescriptorPATH, Path: []string{*output}, } wr.SetFlightDescriptor(descriptor) schema := flight.SerializeSchema(rr.Schema(), memory.DefaultAllocator) defer rr.Release() for rr.Next() { rec := rr.Record() print("rec", rec.NumRows()) err = wr.Write(rec) } My question is how to correctly insert the flight.FlightDescriptor and flight.SerializeSchema pieces. The comments for these methods suggest it can be a bit intricate. I can't find an example from the docs, the Flight SQL example in the repository, or docs such as https://voltrondata.com/resources/data-transfer-with-apache-arrow-and-golang or https://blog.djnavarro.net/posts/2022-10-18_arrow-flight/ All the examples I could find (blogs and tests) only show DoGet, where it appears the NewRecordWriter does most of the heavy lifting Thanks Thanks