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

paleolimbot 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 73386cb806 GH-41258: [C#][Integration] Fix comparison of sliced 
validity buffers with non-zero offsets (#41259)
73386cb806 is described below

commit 73386cb806a429875f1846b69e21beccfd339b21
Author: Dewey Dunnington <[email protected]>
AuthorDate: Wed Apr 17 13:08:51 2024 -0300

    GH-41258: [C#][Integration] Fix comparison of sliced validity buffers with 
non-zero offsets (#41259)
    
    
    ### Rationale for this change
    
    After https://github.com/apache/arrow/pull/41230 , the integration tests 
are failing on main .
    
    ### What changes are included in this PR?
    
    The bit-by-bit comparison branch in the validity bitmap comparison is 
missing an offset on one side of the comparison. This PR adds that offset back 
in.
    
    ### Are these changes tested?
    
    Via the integration test CI job.
    
    ### Are there any user-facing changes?
    
    No
    * GitHub Issue: #41258
    
    Authored-by: Dewey Dunnington <[email protected]>
    Signed-off-by: Dewey Dunnington <[email protected]>
---
 .../test/Apache.Arrow.Tests/ArrowReaderVerifier.cs | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/csharp/test/Apache.Arrow.Tests/ArrowReaderVerifier.cs 
b/csharp/test/Apache.Arrow.Tests/ArrowReaderVerifier.cs
index 9597219321..f656979c22 100644
--- a/csharp/test/Apache.Arrow.Tests/ArrowReaderVerifier.cs
+++ b/csharp/test/Apache.Arrow.Tests/ArrowReaderVerifier.cs
@@ -257,7 +257,7 @@ namespace Apache.Arrow.Tests
                 Assert.Equal(expectedArray.Length, actualArray.Length);
                 Assert.Equal(expectedArray.NullCount, actualArray.NullCount);
 
-                CompareValidityBuffer(expectedArray.NullCount, 
_expectedArray.Length, expectedArray.NullBitmapBuffer, expectedArray.Offset, 
actualArray.NullBitmapBuffer);
+                CompareValidityBuffer(expectedArray.NullCount, 
_expectedArray.Length, expectedArray.NullBitmapBuffer, expectedArray.Offset, 
actualArray.NullBitmapBuffer, actualArray.Offset);
 
                 if (_strictCompare)
                 {
@@ -294,7 +294,7 @@ namespace Apache.Arrow.Tests
                     Assert.Equal(expectedArray.Offset, actualArray.Offset);
                 }
 
-                CompareValidityBuffer(expectedArray.NullCount, 
_expectedArray.Length, expectedArray.NullBitmapBuffer, expectedArray.Offset, 
actualArray.NullBitmapBuffer);
+                CompareValidityBuffer(expectedArray.NullCount, 
_expectedArray.Length, expectedArray.NullBitmapBuffer, expectedArray.Offset, 
actualArray.NullBitmapBuffer, actualArray.Offset);
 
                 
Assert.True(expectedArray.Views.SequenceEqual(actualArray.Views));
 
@@ -318,7 +318,7 @@ namespace Apache.Arrow.Tests
                 Assert.Equal(expectedArray.Length, actualArray.Length);
                 Assert.Equal(expectedArray.NullCount, actualArray.NullCount);
 
-                CompareValidityBuffer(expectedArray.NullCount, 
_expectedArray.Length, expectedArray.NullBitmapBuffer, expectedArray.Offset, 
actualArray.NullBitmapBuffer);
+                CompareValidityBuffer(expectedArray.NullCount, 
_expectedArray.Length, expectedArray.NullBitmapBuffer, expectedArray.Offset, 
actualArray.NullBitmapBuffer, actualArray.Offset);
 
                 if (_strictCompare)
                 {
@@ -347,7 +347,7 @@ namespace Apache.Arrow.Tests
                 Assert.Equal(expectedArray.Length, actualArray.Length);
                 Assert.Equal(expectedArray.NullCount, actualArray.NullCount);
 
-                CompareValidityBuffer(expectedArray.NullCount, 
_expectedArray.Length, expectedArray.NullBitmapBuffer, expectedArray.Offset, 
actualArray.NullBitmapBuffer);
+                CompareValidityBuffer(expectedArray.NullCount, 
_expectedArray.Length, expectedArray.NullBitmapBuffer, expectedArray.Offset, 
actualArray.NullBitmapBuffer, actualArray.Offset);
 
                 if (_strictCompare)
                 {
@@ -379,7 +379,7 @@ namespace Apache.Arrow.Tests
                 Assert.Equal(expectedArray.Length, actualArray.Length);
                 Assert.Equal(expectedArray.NullCount, actualArray.NullCount);
 
-                CompareValidityBuffer(expectedArray.NullCount, 
_expectedArray.Length, expectedArray.NullBitmapBuffer, expectedArray.Offset, 
actualArray.NullBitmapBuffer);
+                CompareValidityBuffer(expectedArray.NullCount, 
_expectedArray.Length, expectedArray.NullBitmapBuffer, expectedArray.Offset, 
actualArray.NullBitmapBuffer, actualArray.Offset);
 
                 if (_strictCompare)
                 {
@@ -406,7 +406,7 @@ namespace Apache.Arrow.Tests
                 Assert.Equal(expectedArray.Length, actualArray.Length);
                 Assert.Equal(expectedArray.NullCount, actualArray.NullCount);
 
-                CompareValidityBuffer(expectedArray.NullCount, 
_expectedArray.Length, expectedArray.NullBitmapBuffer, expectedArray.Offset, 
actualArray.NullBitmapBuffer);
+                CompareValidityBuffer(expectedArray.NullCount, 
_expectedArray.Length, expectedArray.NullBitmapBuffer, expectedArray.Offset, 
actualArray.NullBitmapBuffer, actualArray.Offset);
 
                 if (_strictCompare)
                 {
@@ -442,7 +442,7 @@ namespace Apache.Arrow.Tests
                 Assert.Equal(expectedArray.Length, actualArray.Length);
                 Assert.Equal(expectedArray.NullCount, actualArray.NullCount);
 
-                CompareValidityBuffer(expectedArray.NullCount, 
_expectedArray.Length, expectedArray.NullBitmapBuffer, expectedArray.Offset, 
actualArray.NullBitmapBuffer);
+                CompareValidityBuffer(expectedArray.NullCount, 
_expectedArray.Length, expectedArray.NullBitmapBuffer, expectedArray.Offset, 
actualArray.NullBitmapBuffer, actualArray.Offset);
 
                 if (_strictCompare)
                 {
@@ -475,7 +475,7 @@ namespace Apache.Arrow.Tests
                     Assert.Equal(expectedArray.Offset, actualArray.Offset);
                 }
 
-                CompareValidityBuffer(expectedArray.NullCount, 
_expectedArray.Length, expectedArray.NullBitmapBuffer, expectedArray.Offset, 
actualArray.NullBitmapBuffer);
+                CompareValidityBuffer(expectedArray.NullCount, 
_expectedArray.Length, expectedArray.NullBitmapBuffer, expectedArray.Offset, 
actualArray.NullBitmapBuffer, actualArray.Offset);
 
                 var listSize = 
((FixedSizeListType)expectedArray.Data.DataType).ListSize;
                 var expectedValuesSlice = ArrowArrayFactory.Slice(
@@ -483,7 +483,7 @@ namespace Apache.Arrow.Tests
                 actualArray.Values.Accept(new 
ArrayComparer(expectedValuesSlice, _strictCompare));
             }
 
-            private void CompareValidityBuffer(int nullCount, int arrayLength, 
ArrowBuffer expectedValidityBuffer, int expectedBufferOffset, ArrowBuffer 
actualValidityBuffer)
+            private void CompareValidityBuffer(int nullCount, int arrayLength, 
ArrowBuffer expectedValidityBuffer, int expectedBufferOffset, ArrowBuffer 
actualValidityBuffer, int actualBufferOffset)
             {
                 if (_strictCompare)
                 {
@@ -493,7 +493,7 @@ namespace Apache.Arrow.Tests
                 {
                     Assert.True(nullCount == 0 || arrayLength == 0);
                 }
-                else if (expectedBufferOffset % 8 == 0)
+                else if (expectedBufferOffset % 8 == 0 && expectedBufferOffset 
== actualBufferOffset)
                 {
                     int validityBitmapByteCount = 
BitUtility.ByteCount(arrayLength);
                     int byteOffset = 
BitUtility.ByteCount(expectedBufferOffset);
@@ -524,7 +524,7 @@ namespace Apache.Arrow.Tests
                     for (int i = 0; i < arrayLength; i++)
                     {
                         Assert.True(
-                            BitUtility.GetBit(expectedSpan, 
expectedBufferOffset + i) == BitUtility.GetBit(actualSpan, i),
+                            BitUtility.GetBit(expectedSpan, 
expectedBufferOffset + i) == BitUtility.GetBit(actualSpan, actualBufferOffset + 
i),
                             string.Format("Bit at index {0}/{1} is not equal", 
i, arrayLength));
                     }
                 }

Reply via email to