You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by pa...@apache.org on 2024/04/17 16:08:57 UTC
(arrow) branch main updated: GH-41258: [C#][Integration] Fix comparison of sliced validity buffers with non-zero offsets (#41259)
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 <de...@fishandwhistle.net>
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 <de...@fishandwhistle.net>
Signed-off-by: Dewey Dunnington <de...@fishandwhistle.net>
---
.../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));
}
}