Skip to content

Commit 9a78dd4

Browse files
authored
Variants VTable (#1501)
1 parent 61e838e commit 9a78dd4

File tree

38 files changed

+586
-494
lines changed

38 files changed

+586
-494
lines changed

encodings/alp/src/alp/array.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use vortex_array::array::PrimitiveArray;
55
use vortex_array::encoding::ids;
66
use vortex_array::stats::StatisticsVTable;
77
use vortex_array::validity::{ArrayValidity, LogicalValidity, ValidityVTable};
8-
use vortex_array::variants::{ArrayVariants, PrimitiveArrayTrait};
8+
use vortex_array::variants::{PrimitiveArrayTrait, VariantsVTable};
99
use vortex_array::visitor::{ArrayVisitor, VisitorVTable};
1010
use vortex_array::{
1111
impl_encoding, ArrayDType, ArrayData, ArrayLen, ArrayTrait, Canonical, IntoArrayData,
@@ -124,9 +124,9 @@ impl ALPArray {
124124

125125
impl ArrayTrait for ALPArray {}
126126

127-
impl ArrayVariants for ALPArray {
128-
fn as_primitive_array(&self) -> Option<&dyn PrimitiveArrayTrait> {
129-
Some(self)
127+
impl VariantsVTable<ALPArray> for ALPEncoding {
128+
fn as_primitive_array<'a>(&self, array: &'a ALPArray) -> Option<&'a dyn PrimitiveArrayTrait> {
129+
Some(array)
130130
}
131131
}
132132

encodings/alp/src/alp_rd/variants.rs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
1-
use vortex_array::variants::{ArrayVariants, PrimitiveArrayTrait};
1+
use vortex_array::variants::{PrimitiveArrayTrait, VariantsVTable};
22

3-
use crate::ALPRDArray;
3+
use crate::{ALPRDArray, ALPRDEncoding};
44

5-
impl ArrayVariants for ALPRDArray {
6-
fn as_primitive_array(&self) -> Option<&dyn PrimitiveArrayTrait> {
7-
Some(self)
8-
}
9-
10-
fn as_primitive_array_unchecked(&self) -> &dyn PrimitiveArrayTrait {
11-
self
5+
impl VariantsVTable<ALPRDArray> for ALPRDEncoding {
6+
fn as_primitive_array<'a>(&self, array: &'a ALPRDArray) -> Option<&'a dyn PrimitiveArrayTrait> {
7+
Some(array)
128
}
139
}
1410

encodings/bytebool/src/array.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use vortex_array::array::BoolArray;
88
use vortex_array::encoding::ids;
99
use vortex_array::stats::StatsSet;
1010
use vortex_array::validity::{LogicalValidity, Validity, ValidityMetadata, ValidityVTable};
11-
use vortex_array::variants::{ArrayVariants, BoolArrayTrait};
11+
use vortex_array::variants::{BoolArrayTrait, VariantsVTable};
1212
use vortex_array::visitor::{ArrayVisitor, VisitorVTable};
1313
use vortex_array::{impl_encoding, ArrayData, ArrayLen, ArrayTrait, Canonical, IntoCanonical};
1414
use vortex_buffer::Buffer;
@@ -84,9 +84,9 @@ impl ByteBoolArray {
8484

8585
impl ArrayTrait for ByteBoolArray {}
8686

87-
impl ArrayVariants for ByteBoolArray {
88-
fn as_bool_array(&self) -> Option<&dyn BoolArrayTrait> {
89-
Some(self)
87+
impl VariantsVTable<ByteBoolArray> for ByteBoolEncoding {
88+
fn as_bool_array<'a>(&self, array: &'a ByteBoolArray) -> Option<&'a dyn BoolArrayTrait> {
89+
Some(array)
9090
}
9191
}
9292

encodings/datetime-parts/src/array.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use vortex_array::compute::try_cast;
66
use vortex_array::encoding::ids;
77
use vortex_array::stats::{Stat, StatisticsVTable, StatsSet};
88
use vortex_array::validity::{ArrayValidity, LogicalValidity, Validity, ValidityVTable};
9-
use vortex_array::variants::{ArrayVariants, ExtensionArrayTrait};
9+
use vortex_array::variants::{ExtensionArrayTrait, VariantsVTable};
1010
use vortex_array::visitor::{ArrayVisitor, VisitorVTable};
1111
use vortex_array::{
1212
impl_encoding, ArrayDType, ArrayData, ArrayLen, ArrayTrait, Canonical, IntoArrayData,
@@ -114,9 +114,12 @@ impl DateTimePartsArray {
114114

115115
impl ArrayTrait for DateTimePartsArray {}
116116

117-
impl ArrayVariants for DateTimePartsArray {
118-
fn as_extension_array(&self) -> Option<&dyn ExtensionArrayTrait> {
119-
Some(self)
117+
impl VariantsVTable<DateTimePartsArray> for DateTimePartsEncoding {
118+
fn as_extension_array<'a>(
119+
&self,
120+
array: &'a DateTimePartsArray,
121+
) -> Option<&'a dyn ExtensionArrayTrait> {
122+
Some(array)
120123
}
121124
}
122125

encodings/dict/src/variants.rs

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,24 @@
11
use vortex_array::variants::{
2-
ArrayVariants, BinaryArrayTrait, BoolArrayTrait, PrimitiveArrayTrait, Utf8ArrayTrait,
2+
BinaryArrayTrait, BoolArrayTrait, PrimitiveArrayTrait, Utf8ArrayTrait, VariantsVTable,
33
};
4-
use vortex_array::ArrayDType;
5-
use vortex_dtype::DType;
64

7-
use crate::DictArray;
5+
use crate::{DictArray, DictEncoding};
86

9-
impl ArrayVariants for DictArray {
10-
fn as_bool_array(&self) -> Option<&dyn BoolArrayTrait> {
11-
matches!(self.dtype(), DType::Bool(..)).then_some(self)
7+
impl VariantsVTable<DictArray> for DictEncoding {
8+
fn as_bool_array<'a>(&self, array: &'a DictArray) -> Option<&'a dyn BoolArrayTrait> {
9+
Some(array)
1210
}
1311

14-
fn as_primitive_array(&self) -> Option<&dyn PrimitiveArrayTrait> {
15-
matches!(self.dtype(), DType::Primitive(..)).then_some(self)
12+
fn as_primitive_array<'a>(&self, array: &'a DictArray) -> Option<&'a dyn PrimitiveArrayTrait> {
13+
Some(array)
1614
}
1715

18-
fn as_utf8_array(&self) -> Option<&dyn Utf8ArrayTrait> {
19-
matches!(self.dtype(), DType::Utf8(..)).then_some(self)
16+
fn as_utf8_array<'a>(&self, array: &'a DictArray) -> Option<&'a dyn Utf8ArrayTrait> {
17+
Some(array)
2018
}
2119

22-
fn as_binary_array(&self) -> Option<&dyn BinaryArrayTrait> {
23-
matches!(self.dtype(), DType::Binary(..)).then_some(self)
20+
fn as_binary_array<'a>(&self, array: &'a DictArray) -> Option<&'a dyn BinaryArrayTrait> {
21+
Some(array)
2422
}
2523
}
2624

encodings/fastlanes/src/bitpacking/mod.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use vortex_array::array::{PrimitiveArray, SparseArray};
88
use vortex_array::encoding::ids;
99
use vortex_array::stats::{StatisticsVTable, StatsSet};
1010
use vortex_array::validity::{LogicalValidity, Validity, ValidityMetadata, ValidityVTable};
11-
use vortex_array::variants::{ArrayVariants, PrimitiveArrayTrait};
11+
use vortex_array::variants::{PrimitiveArrayTrait, VariantsVTable};
1212
use vortex_array::visitor::{ArrayVisitor, VisitorVTable};
1313
use vortex_array::{
1414
impl_encoding, ArrayDType, ArrayData, ArrayLen, ArrayTrait, Canonical, IntoCanonical,
@@ -232,9 +232,12 @@ impl StatisticsVTable<BitPackedArray> for BitPackedEncoding {}
232232

233233
impl ArrayTrait for BitPackedArray {}
234234

235-
impl ArrayVariants for BitPackedArray {
236-
fn as_primitive_array(&self) -> Option<&dyn PrimitiveArrayTrait> {
237-
Some(self)
235+
impl VariantsVTable<BitPackedArray> for BitPackedEncoding {
236+
fn as_primitive_array<'a>(
237+
&self,
238+
array: &'a BitPackedArray,
239+
) -> Option<&'a dyn PrimitiveArrayTrait> {
240+
Some(array)
238241
}
239242
}
240243

encodings/fastlanes/src/delta/mod.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use vortex_array::array::PrimitiveArray;
66
use vortex_array::encoding::ids;
77
use vortex_array::stats::{StatisticsVTable, StatsSet};
88
use vortex_array::validity::{LogicalValidity, Validity, ValidityMetadata, ValidityVTable};
9-
use vortex_array::variants::{ArrayVariants, PrimitiveArrayTrait};
9+
use vortex_array::variants::{PrimitiveArrayTrait, VariantsVTable};
1010
use vortex_array::visitor::{ArrayVisitor, VisitorVTable};
1111
use vortex_array::{
1212
impl_encoding, ArrayDType, ArrayData, ArrayLen, ArrayTrait, Canonical, IntoArrayData,
@@ -218,9 +218,9 @@ impl DeltaArray {
218218

219219
impl ArrayTrait for DeltaArray {}
220220

221-
impl ArrayVariants for DeltaArray {
222-
fn as_primitive_array(&self) -> Option<&dyn PrimitiveArrayTrait> {
223-
Some(self)
221+
impl VariantsVTable<DeltaArray> for DeltaEncoding {
222+
fn as_primitive_array<'a>(&self, array: &'a DeltaArray) -> Option<&'a dyn PrimitiveArrayTrait> {
223+
Some(array)
224224
}
225225
}
226226

encodings/fastlanes/src/for/mod.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use serde::{Deserialize, Serialize};
55
use vortex_array::encoding::ids;
66
use vortex_array::stats::{StatisticsVTable, StatsSet};
77
use vortex_array::validity::{ArrayValidity, LogicalValidity, ValidityVTable};
8-
use vortex_array::variants::{ArrayVariants, PrimitiveArrayTrait};
8+
use vortex_array::variants::{PrimitiveArrayTrait, VariantsVTable};
99
use vortex_array::visitor::{ArrayVisitor, VisitorVTable};
1010
use vortex_array::{
1111
impl_encoding, ArrayDType, ArrayData, ArrayLen, ArrayTrait, Canonical, IntoCanonical,
@@ -104,9 +104,9 @@ impl StatisticsVTable<FoRArray> for FoREncoding {}
104104

105105
impl ArrayTrait for FoRArray {}
106106

107-
impl ArrayVariants for FoRArray {
108-
fn as_primitive_array(&self) -> Option<&dyn PrimitiveArrayTrait> {
109-
Some(self)
107+
impl VariantsVTable<FoRArray> for FoREncoding {
108+
fn as_primitive_array<'a>(&self, array: &'a FoRArray) -> Option<&'a dyn PrimitiveArrayTrait> {
109+
Some(array)
110110
}
111111
}
112112

encodings/fsst/src/array.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use vortex_array::array::{VarBin, VarBinArray};
77
use vortex_array::encoding::ids;
88
use vortex_array::stats::{StatisticsVTable, StatsSet};
99
use vortex_array::validity::{ArrayValidity, LogicalValidity, Validity, ValidityVTable};
10-
use vortex_array::variants::{ArrayVariants, BinaryArrayTrait, Utf8ArrayTrait};
10+
use vortex_array::variants::{BinaryArrayTrait, Utf8ArrayTrait, VariantsVTable};
1111
use vortex_array::visitor::{ArrayVisitor, VisitorVTable};
1212
use vortex_array::{
1313
impl_encoding, ArrayDType, ArrayData, ArrayDef, ArrayLen, ArrayTrait, IntoCanonical,
@@ -212,13 +212,13 @@ impl ValidityVTable<FSSTArray> for FSSTEncoding {
212212
}
213213
}
214214

215-
impl ArrayVariants for FSSTArray {
216-
fn as_utf8_array(&self) -> Option<&dyn Utf8ArrayTrait> {
217-
Some(self)
215+
impl VariantsVTable<FSSTArray> for FSSTEncoding {
216+
fn as_utf8_array<'a>(&self, array: &'a FSSTArray) -> Option<&'a dyn Utf8ArrayTrait> {
217+
Some(array)
218218
}
219219

220-
fn as_binary_array(&self) -> Option<&dyn BinaryArrayTrait> {
221-
Some(self)
220+
fn as_binary_array<'a>(&self, array: &'a FSSTArray) -> Option<&'a dyn BinaryArrayTrait> {
221+
Some(array)
222222
}
223223
}
224224

encodings/roaring/src/boolean/mod.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use vortex_array::array::BoolArray;
1010
use vortex_array::encoding::ids;
1111
use vortex_array::stats::StatsSet;
1212
use vortex_array::validity::{LogicalValidity, ValidityVTable};
13-
use vortex_array::variants::{ArrayVariants, BoolArrayTrait};
13+
use vortex_array::variants::{BoolArrayTrait, VariantsVTable};
1414
use vortex_array::visitor::{ArrayVisitor, VisitorVTable};
1515
use vortex_array::{
1616
impl_encoding, ArrayData, ArrayLen, ArrayTrait, Canonical, IntoArrayData, IntoCanonical,
@@ -84,9 +84,9 @@ impl RoaringBoolArray {
8484

8585
impl ArrayTrait for RoaringBoolArray {}
8686

87-
impl ArrayVariants for RoaringBoolArray {
88-
fn as_bool_array(&self) -> Option<&dyn BoolArrayTrait> {
89-
Some(self)
87+
impl VariantsVTable<RoaringBoolArray> for RoaringBoolEncoding {
88+
fn as_bool_array<'a>(&self, array: &'a RoaringBoolArray) -> Option<&'a dyn BoolArrayTrait> {
89+
Some(array)
9090
}
9191
}
9292

0 commit comments

Comments
 (0)