You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by ze...@apache.org on 2023/08/31 15:35:11 UTC

[arrow] branch main updated: GH-37465: [Go] Add Value method to BooleanBuilder (#37459)

This is an automated email from the ASF dual-hosted git repository.

zeroshade pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow.git


The following commit(s) were added to refs/heads/main by this push:
     new d7b4d2d5f7 GH-37465: [Go] Add Value method to BooleanBuilder (#37459)
d7b4d2d5f7 is described below

commit d7b4d2d5f7491a788649ccc0a9f61d3212a6e438
Author: Matthias Loibl <ma...@matthiasloibl.com>
AuthorDate: Thu Aug 31 16:35:04 2023 +0100

    GH-37465: [Go] Add Value method to BooleanBuilder (#37459)
    
    
    
    ### Rationale for this change
    
    Similar to the changes we've made in #35744 we need this for the BooleanBuilder too.
    
    ### What changes are included in this PR?
    
    Adding the method itself and adjusting a test to test both the Value method on the builder and the final array.
    
    ### Are these changes tested?
    
    Yes
    
    ### Are there any user-facing changes?
    
    Just an enhancement to get on-par with other builders.
    
    * Closes: #37465
    
    Authored-by: Matthias Loibl <ma...@matthiasloibl.com>
    Signed-off-by: Matt Topol <zo...@gmail.com>
---
 go/arrow/array/booleanbuilder.go      |  4 ++++
 go/arrow/array/booleanbuilder_test.go | 11 ++++++++++-
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/go/arrow/array/booleanbuilder.go b/go/arrow/array/booleanbuilder.go
index f4a5ba9816..10b7405aa5 100644
--- a/go/arrow/array/booleanbuilder.go
+++ b/go/arrow/array/booleanbuilder.go
@@ -254,6 +254,10 @@ func (b *BooleanBuilder) UnmarshalJSON(data []byte) error {
 	return b.Unmarshal(dec)
 }
 
+func (b *BooleanBuilder) Value(i int) bool {
+	return bitutil.BitIsSet(b.rawData, i)
+}
+
 var (
 	_ Builder = (*BooleanBuilder)(nil)
 )
diff --git a/go/arrow/array/booleanbuilder_test.go b/go/arrow/array/booleanbuilder_test.go
index 702b0ca554..e270636a87 100644
--- a/go/arrow/array/booleanbuilder_test.go
+++ b/go/arrow/array/booleanbuilder_test.go
@@ -32,12 +32,21 @@ func TestBooleanBuilder_AppendValues(t *testing.T) {
 	b := array.NewBooleanBuilder(mem)
 
 	exp := tools.Bools(1, 1, 0, 1, 1, 0)
-	got := make([]bool, len(exp)+2)
 
 	b.AppendValues(exp, nil)
 	assert.NoError(t, b.AppendValueFromString("true"))
 	assert.NoError(t, b.AppendValueFromString("false"))
 	exp = tools.Bools(1, 1, 0, 1, 1, 0, 1, 0)
+
+	got := make([]bool, len(exp))
+	// make sure we can read the values directly from the builder.
+	for i := 0; i < b.Len(); i++ {
+		got[i] = b.Value(i)
+	}
+	assert.Equal(t, exp, got)
+
+	got = make([]bool, len(exp)) // reset
+
 	a := b.NewBooleanArray()
 	b.Release()
 	for i := 0; i < a.Len(); i++ {