Commit 30091f2
authored
Add
## Rationale for this change
Tracking issue: #8769
This is the array layer of the Union stack. The compute integration has
been split into the stacked follow-up #8884.
## What changes are included in this PR?
- Adds the canonical sparse `UnionArray` encoding with nullable u8 type
IDs and row-aligned children.
- Adds construction and invariant validation, typed accessors, scalar
access, top-level validity, serialization, and session registration.
- Registers UnionArray as the canonical representation for Union dtypes.
- Leaves filter, take, slice, mask, cast, aggregate, constant/chunked
canonicalization, and compression support to #8884.
I think that this is a mostly straightforward implementation. The one
implementation thing I will shout out is that we do not validate that
the entire type IDs array has valid type IDs. If we come across an
invalid type ID, we just panic, and that is similar behavior to
`DictArray` validation.
## What APIs are changed? Are there any user-facing changes?
Adds the public Union, UnionArray, UnionArrayExt, and UnionDataParts
APIs.
---------
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>UnionArray (#8834)1 parent 57962f4 commit 30091f2
24 files changed
Lines changed: 861 additions & 8 deletions
File tree
- fuzz/src/array
- vortex-array/src
- aggregate_fn/fns
- is_constant
- min_max
- uncompressed_size_in_bytes
- arrays
- dict
- filter/execute
- masked
- union
- vtable
- dtype
- scalar_fn/fns/cast
- session
- vortex-compressor/src/compressor
- vortex-duckdb/src/exporter
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
49 | 49 | | |
50 | 50 | | |
51 | 51 | | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
52 | 55 | | |
53 | 56 | | |
54 | 57 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
149 | 149 | | |
150 | 150 | | |
151 | 151 | | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
152 | 155 | | |
153 | 156 | | |
154 | 157 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
104 | 104 | | |
105 | 105 | | |
106 | 106 | | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
107 | 110 | | |
108 | 111 | | |
109 | 112 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
404 | 404 | | |
405 | 405 | | |
406 | 406 | | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
407 | 410 | | |
408 | 411 | | |
409 | 412 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
417 | 417 | | |
418 | 418 | | |
419 | 419 | | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
420 | 423 | | |
421 | 424 | | |
422 | 425 | | |
| |||
Lines changed: 3 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
199 | 199 | | |
200 | 200 | | |
201 | 201 | | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
202 | 205 | | |
203 | 206 | | |
204 | 207 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
53 | 53 | | |
54 | 54 | | |
55 | 55 | | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
56 | 59 | | |
57 | 60 | | |
58 | 61 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
95 | 95 | | |
96 | 96 | | |
97 | 97 | | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
98 | 101 | | |
99 | 102 | | |
100 | 103 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
50 | 50 | | |
51 | 51 | | |
52 | 52 | | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
53 | 56 | | |
54 | 57 | | |
55 | 58 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
9 | | - | |
| 8 | + | |
| 9 | + | |
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| |||
112 | 112 | | |
113 | 113 | | |
114 | 114 | | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
115 | 119 | | |
116 | 120 | | |
117 | 121 | | |
| |||
0 commit comments