From 7daa76c716f096b9187760b83ead2a7bf0747d08 Mon Sep 17 00:00:00 2001 From: Noam Preil Date: Fri, 7 Nov 2025 08:57:16 -0600 Subject: [PATCH 1/2] test: string => unsafe.String --- arrow/ipc/metadata.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/arrow/ipc/metadata.go b/arrow/ipc/metadata.go index b83c1a84..dc9423c4 100644 --- a/arrow/ipc/metadata.go +++ b/arrow/ipc/metadata.go @@ -22,6 +22,7 @@ import ( "fmt" "io" "sort" + "unsafe" "github.com/apache/arrow-go/v18/arrow" "github.com/apache/arrow-go/v18/arrow/endian" @@ -183,7 +184,8 @@ func fieldFromFB(field *flatbuf.Field, pos dictutils.FieldPos, memo *dictutils.M o arrow.Field ) - o.Name = string(field.Name()) + name := field.Name() + o.Name = unsafe.String(&name[0], len(name)) o.Nullable = field.Nullable() o.Metadata, err = metadataFromFB(field) if err != nil { From 73eb8a114950738ffcbca5043978c50c3063f2d8 Mon Sep 17 00:00:00 2001 From: Noam Preil Date: Fri, 7 Nov 2025 09:12:08 -0600 Subject: [PATCH 2/2] more tostring optimization --- arrow/ipc/metadata.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/arrow/ipc/metadata.go b/arrow/ipc/metadata.go index dc9423c4..67d86e37 100644 --- a/arrow/ipc/metadata.go +++ b/arrow/ipc/metadata.go @@ -35,6 +35,7 @@ import ( // Magic string identifying an Apache Arrow file. var Magic = []byte("ARROW1") + const ( currentMetadataVersion = MetadataV5 minMetadataVersion = MetadataV4 @@ -462,7 +463,7 @@ func (fv *fieldVisitor) visit(field arrow.Field) { field.Type = dt.StorageType() fv.visit(field) fv.meta[ExtensionTypeKeyName] = dt.ExtensionName() - fv.meta[ExtensionMetadataKeyName] = string(dt.Serialize()) + fv.meta[ExtensionMetadataKeyName] = dt.Serialize() case *arrow.DictionaryType: field.Type = dt.ValueType @@ -988,8 +989,9 @@ func timeFromFB(data flatbuf.Time) (arrow.DataType, error) { func timestampFromFB(data flatbuf.Timestamp) (arrow.DataType, error) { unit := unitFromFB(data.Unit()) - tz := string(data.Timezone()) - return &arrow.TimestampType{Unit: unit, TimeZone: tz}, nil + tz := data.Timezone() + tzs := unsafe.String(&tz[0], len(tz)) + return &arrow.TimestampType{Unit: unit, TimeZone: tzs}, nil } func dateFromFB(data flatbuf.Date) (arrow.DataType, error) {