Skip to content

Commit 53b90ae

Browse files
committed
fix Apply in PrimitiveColumnContainer
1 parent a18b9cb commit 53b90ae

File tree

1 file changed

+6
-14
lines changed

1 file changed

+6
-14
lines changed

src/Microsoft.Data.Analysis/PrimitiveColumnContainer.cs

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -257,31 +257,23 @@ public void Apply<TResult>(Func<T?, TResult?> func, PrimitiveColumnContainer<TRe
257257
{
258258
for (int b = 0; b < Buffers.Count; b++)
259259
{
260-
ReadOnlyDataFrameBuffer<T> buffer = Buffers[b];
261-
long prevLength = checked(Buffers[0].Length * b);
262-
DataFrameBuffer<T> mutableBuffer = DataFrameBuffer<T>.GetMutableBuffer(buffer);
263-
Buffers[b] = mutableBuffer;
264-
Span<T> span = mutableBuffer.Span;
265-
DataFrameBuffer<byte> mutableNullBitMapBuffer = DataFrameBuffer<byte>.GetMutableBuffer(NullBitMapBuffers[b]);
266-
NullBitMapBuffers[b] = mutableNullBitMapBuffer;
267-
Span<byte> nullBitMapSpan = mutableNullBitMapBuffer.Span;
260+
ReadOnlyDataFrameBuffer<T> sourceBuffer = Buffers[b];
261+
ReadOnlySpan<byte> sourceNullBitMap = NullBitMapBuffers[b].ReadOnlySpan;
268262

269263
ReadOnlyDataFrameBuffer<TResult> resultBuffer = resultContainer.Buffers[b];
270-
long resultPrevLength = checked(resultContainer.Buffers[0].Length * b);
271264
DataFrameBuffer<TResult> resultMutableBuffer = DataFrameBuffer<TResult>.GetMutableBuffer(resultBuffer);
272265
resultContainer.Buffers[b] = resultMutableBuffer;
273266
Span<TResult> resultSpan = resultMutableBuffer.Span;
274267
DataFrameBuffer<byte> resultMutableNullBitMapBuffer = DataFrameBuffer<byte>.GetMutableBuffer(resultContainer.NullBitMapBuffers[b]);
275268
resultContainer.NullBitMapBuffers[b] = resultMutableNullBitMapBuffer;
276269
Span<byte> resultNullBitMapSpan = resultMutableNullBitMapBuffer.Span;
277270

278-
for (int i = 0; i < span.Length; i++)
271+
for (int i = 0; i < Buffers[b].Length; i++)
279272
{
280-
long curIndex = i + prevLength;
281-
bool isValid = IsValid(nullBitMapSpan, i);
282-
TResult? value = func(isValid ? span[i] : default(T?));
273+
bool isValid = IsValid(sourceNullBitMap, i);
274+
TResult? value = func(isValid ? sourceBuffer[i] : default(T?));
283275
resultSpan[i] = value.GetValueOrDefault();
284-
SetValidityBit(resultNullBitMapSpan, i, value != null);
276+
resultContainer.SetValidityBit(resultNullBitMapSpan, i, value != null);
285277
}
286278
}
287279
}

0 commit comments

Comments
 (0)