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));
}
}