You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[C++] is_null(nan_is_null=true) ignores NaN and null values in dictionary-encoded float arrays #51127
Describe the bug, including details regarding any error messages, version, or platform.
is_null(arr, nan_is_null=True) does not mark NaN values as null when arr is dictionary-encoded with floating-point dictionary values.
IsNullExec decides whether to take the NaN path by looking at the top-level type id. For a dictionary-encoded array that id is DICTIONARY, so the floating-point check is skipped entirely and NaN entries in the dictionary are never marked null. The same call on the decoded (non-dictionary) array returns the expected result.
Related: null values inside the dictionary (as opposed to null indices) are also not reflected, so a valid index pointing at a null dictionary slot is reported as non-null.
Discussion and a first attempt at a fix are in #51000; @pitrou suggested computing is_null on the dictionary values, take-ing by the indices, and OR-ing the result with the index validity bitmap, which covers both the NaN case and null dictionary values in one pass.
Activity
apacheGH-51127: [C++] Build is_null dictionary indices directly
apacheGH-51127: [C++] Fix is_null nan_is_null for dictionary-encoded …
apacheGH-51127: [C++] Check dictionary indices before validity lookup
apacheGH-51127: [C++] Simplify dictionary NaN null checks
apacheGH-51127: Combine dictionary null bits in one bitmap pass
GH-51127: [C++] Fix is_null nan_is_null for dictionary-encoded float …
pitrou commentedon Sep 28, 2026
Issue resolved by pull request 51000
#51000