hcrosse commented on code in PR #1488:
URL: https://github.com/apache/arrow-go/pull/1488#discussion_r4515257706
##########
arrow/compute/internal/kernels/scalar_comparisons.go:
##########
@@ -742,21 +743,34 @@ func dictValidity(ctx *exec.KernelCtx, input
*exec.ArraySpan, out *exec.ExecResu
default:
return fmt.Errorf("%w: unsupported dictionary index type",
arrow.ErrInvalid)
}
+
+ dict := input.Dictionary()
+ valueValidity, valueOffset := dict.Buffers[0].Buf, dict.Offset
+ if nanIsNull && arrow.IsFloating(dict.Type.ID()) {
+ buf := ctx.AllocateBitmap(dict.Len)
Review Comment:
Thanks, I'll leave it as is. The bitmap is only built when `NanIsNull` is
set and the dictionary holds floats.
##########
arrow/compute/internal/kernels/scalar_comparisons.go:
##########
@@ -848,12 +862,62 @@ func isValidAt(span *exec.ArraySpan, i int64) bool {
return true
}
+// setNaNBits sets bit i of out to v for each NaN slot i of a float16, float32
+// or float64 span, and does nothing for other types.
+func setNaNBits(input *exec.ArraySpan, out []byte, v bool) {
Review Comment:
Thanks, agreed. I'll keep the per-slot loop.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]