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
The JSON reader constructs ListView arrays without validating child nullability. As a result, JSON containing null can be accepted for a non-nullable child field.
What changes are included in this PR?
Replace unchecked ListView construction with GenericListViewArray::try_new, returning an ArrowError when child nullability is invalid.
Add regression coverage for both ListView and LargeListView.
Are these changes tested?
Yes:
cargo test -p arrow-json reader::tests::test_read_list_view_rejects_null_non_nullable_child -- --exact
🤖 Arrow criterion benchmark running (GKE) | trigger Instance:c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c5125507386-1297-fk7n8 6.12.85+ #1 SMP Mon May 11 08:17:35 UTC 2026 aarch64 GNU/Linux
CPU Details (lscpu)
Architecture: aarch64
CPU op-mode(s): 64-bit
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
Vendor ID: ARM
Model name: Neoverse-V2
Model: 1
Thread(s) per core: 1
Core(s) per cluster: 16
Socket(s): -
Cluster(s): 1
Stepping: r0p1
BogoMIPS: 2000.00
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache: 1 MiB (16 instances)
L1i cache: 1 MiB (16 instances)
L2 cache: 32 MiB (16 instances)
L3 cache: 80 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0-15
Vulnerability Gather data sampling: Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1: Mitigation; __user pointer sanitization
Vulnerability Spectre v2: Mitigation; CSV2, BHB
Vulnerability Srbds: Not affected
Vulnerability Tsa: Not affected
Vulnerability Tsx async abort: Not affected
Vulnerability Vmscape: Not affected
Comparing fix/10476-list-view-non-nullable-child (b0ba059) to 005a2fd (merge-base) diff
BENCH_NAME=json_reader
BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental,object_store --bench json_reader
BENCH_FILTER=list_view
Results will be posted here when complete
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Which issue does this PR close?
Rationale for this change
The JSON reader constructs
ListViewarrays without validating child nullability. As a result, JSON containingnullcan be accepted for a non-nullable child field.What changes are included in this PR?
ListViewconstruction withGenericListViewArray::try_new, returning anArrowErrorwhen child nullability is invalid.ListViewandLargeListView.Are these changes tested?
Yes:
cargo test -p arrow-json reader::tests::test_read_list_view_rejects_null_non_nullable_child -- --exactcargo test -p arrow-json --all-featurescargo clippy --workspace --all-targets --all-features -- -D warningscargo fmt --all -- --checkgit diff --checkAre there any user-facing changes?
Yes. Invalid JSON containing a null inside a non-nullable
ListVieworLargeListViewchild now returns an error. There is no public API change.