From 3f4f98ff47ec424ef84319c87e2ddcc679ecbbf2 Mon Sep 17 00:00:00 2001 From: micyen <29710093+micyen@users.noreply.github.com> Date: Sat, 2 May 2026 15:27:44 -0400 Subject: [PATCH 1/3] refactor: use strings.Builder instead of string concatenation in listValueContainer.Value() Signed-off-by: Michael Yen <29710093+micyen@users.noreply.github.com> --- internal/rows/arrowbased/columnValues.go | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/internal/rows/arrowbased/columnValues.go b/internal/rows/arrowbased/columnValues.go index 47105095..95ee15e2 100644 --- a/internal/rows/arrowbased/columnValues.go +++ b/internal/rows/arrowbased/columnValues.go @@ -195,13 +195,14 @@ var _ columnValues = (*listValueContainer)(nil) func (lvc *listValueContainer) Value(i int) (any, error) { if i < lvc.listArray.Len() { - r := "[" + var sb strings.Builder + sb.WriteByte('[') s, e := lvc.listArray.ValueOffsets(i) len := int(e - s) for i := 0; i < len; i++ { if lvc.values.IsNull(i + int(s)) { - r = r + "null" + sb.WriteString("null") } else { val, err := lvc.values.Value(i + int(s)) @@ -214,19 +215,19 @@ func (lvc *listValueContainer) Value(i int) (any, error) { if err != nil { return nil, err } - r = r + string(vb) + sb.Write(vb) } else { - r = r + val.(string) + sb.WriteString(val.(string)) } } if i < len-1 { - r = r + "," + sb.WriteByte(',') } } - r = r + "]" - return r, nil + sb.WriteByte(']') + return sb.String(), nil } return nil, nil } From 4278ca61e993ce2e29eb5af17b65620f8fb1781f Mon Sep 17 00:00:00 2001 From: micyen <29710093+micyen@users.noreply.github.com> Date: Sat, 2 May 2026 15:28:52 -0400 Subject: [PATCH 2/3] refactor: use strings.Builder instead of string concatenation in mapValueContainer.Value() Signed-off-by: Michael Yen <29710093+micyen@users.noreply.github.com> --- internal/rows/arrowbased/columnValues.go | 32 +++++++++++++----------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/internal/rows/arrowbased/columnValues.go b/internal/rows/arrowbased/columnValues.go index 95ee15e2..21749254 100644 --- a/internal/rows/arrowbased/columnValues.go +++ b/internal/rows/arrowbased/columnValues.go @@ -268,7 +268,8 @@ func (mvc *mapValueContainer) Value(i int) (any, error) { if i < mvc.mapArray.Len() { s, e := mvc.mapArray.ValueOffsets(i) len := e - s - r := "{" + var sb strings.Builder + sb.WriteByte('{') for i := int64(0); i < len; i++ { k, err := mvc.keys.Value(int(i + s)) if err != nil { @@ -285,33 +286,34 @@ func (mvc *mapValueContainer) Value(i int) (any, error) { return nil, err } - var b string + if !strings.HasPrefix(string(key), "\"") { + sb.WriteByte('"') + sb.Write(key) + sb.WriteString("\":") + } else { + sb.Write(key) + sb.WriteByte(':') + } + if mvc.values.IsNull(int(i + s)) { - b = "null" + sb.WriteString("null") } else if mvc.complexValue { - b = v.(string) + sb.WriteString(v.(string)) } else { vb, err := marshal(v) if err != nil { return nil, err } - b = string(vb) - } - - if !strings.HasPrefix(string(key), "\"") { - r = r + "\"" + string(key) + "\":" - } else { - r = r + string(key) + ":" + sb.Write(vb) } - r = r + b if i < len-1 { - r = r + "," + sb.WriteByte(',') } } - r = r + "}" + sb.WriteByte('}') - return r, nil + return sb.String(), nil } return nil, nil } From 02bc13e6ae76b2ceac3edd72ed255c01bb68ab41 Mon Sep 17 00:00:00 2001 From: micyen <29710093+micyen@users.noreply.github.com> Date: Sat, 2 May 2026 15:29:26 -0400 Subject: [PATCH 3/3] refactor: use strings.Builder instead of string concatenation in structValueContainer.Value() Signed-off-by: Michael Yen <29710093+micyen@users.noreply.github.com> --- internal/rows/arrowbased/columnValues.go | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/internal/rows/arrowbased/columnValues.go b/internal/rows/arrowbased/columnValues.go index 21749254..bf4bb17c 100644 --- a/internal/rows/arrowbased/columnValues.go +++ b/internal/rows/arrowbased/columnValues.go @@ -359,38 +359,38 @@ var _ columnValues = (*structValueContainer)(nil) func (svc *structValueContainer) Value(i int) (any, error) { if i < svc.structArray.Len() { - r := "{" + var sb strings.Builder + sb.WriteByte('{') for j := range svc.fieldValues { - r = r + "\"" + svc.fieldNames[j] + "\":" + sb.WriteByte('"') + sb.WriteString(svc.fieldNames[j]) + sb.WriteString("\":") if svc.fieldValues[j].IsNull(int(i)) { - r = r + "null" + sb.WriteString("null") } else { v, err := svc.fieldValues[j].Value(int(i)) if err != nil { return nil, err } - var b string if svc.complexValue[j] { - b = v.(string) + sb.WriteString(v.(string)) } else { vb, err := marshal(v) if err != nil { return nil, err } - b = string(vb) + sb.Write(vb) } - - r = r + b } if j < len(svc.fieldValues)-1 { - r = r + "," + sb.WriteByte(',') } } - r = r + "}" + sb.WriteByte('}') - return r, nil + return sb.String(), nil } return nil, nil }