From c75f45a8d86568fc72a5ff2f12deeea8f86ea992 Mon Sep 17 00:00:00 2001 From: Ramasai Date: Fri, 3 Mar 2023 20:37:38 -0500 Subject: [PATCH] Removed cast from byte[] to string and copied entire string when is called --- go/arrow/array/string.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/go/arrow/array/string.go b/go/arrow/array/string.go index 26837254860..2230edd6b10 100644 --- a/go/arrow/array/string.go +++ b/go/arrow/array/string.go @@ -50,8 +50,11 @@ func (a *String) Reset(data arrow.ArrayData) { // Value returns the slice at index i. This value should not be mutated. func (a *String) Value(i int) string { + sb := strings.Builder{} + i = i + a.array.data.offset - return a.values[a.offsets[i]:a.offsets[i+1]] + sb.WriteString(a.values[a.offsets[i]:a.offsets[i+1]]) + return sb.String() } // ValueOffset returns the offset of the value at index i. @@ -246,7 +249,7 @@ func (a *LargeString) setData(data *Data) { if vdata := data.buffers[2]; vdata != nil { b := vdata.Bytes() - a.values = *(*string)(unsafe.Pointer(&b)) + a.values = string(b[:]) } if offsets := data.buffers[1]; offsets != nil {