Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions encodings/alp/src/alp/compute/filter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ mod test {
use rstest::rstest;
use vortex_array::ArrayRef;
use vortex_array::IntoArray;
use vortex_array::LEGACY_SESSION;
use vortex_array::VortexSessionExecute;
use vortex_array::array_session;
use vortex_array::arrays::PrimitiveArray;
use vortex_array::compute::conformance::filter::test_filter_conformance;
use vortex_buffer::buffer;
Expand All @@ -62,7 +62,7 @@ mod test {
11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0
].into_array())]
fn test_filter_alp_conformance(#[case] array: ArrayRef) {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let mut ctx = array_session().create_execution_ctx();
let array_primitive = array.execute::<PrimitiveArray>(&mut ctx).unwrap();
let alp = alp_encode(array_primitive.as_view(), None, &mut ctx).unwrap();
test_filter_conformance(&alp.into_array());
Expand Down
8 changes: 4 additions & 4 deletions encodings/alp/src/alp/compute/mask.rs
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,8 @@ impl MaskKernel for ALP {
mod test {
use rstest::rstest;
use vortex_array::IntoArray;
use vortex_array::LEGACY_SESSION;
use vortex_array::VortexSessionExecute;
use vortex_array::array_session;
use vortex_array::arrays::BoolArray;
use vortex_array::arrays::PrimitiveArray;
use vortex_array::compute::conformance::mask::test_mask_conformance;
Expand All @@ -78,7 +78,7 @@ mod test {
1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0
].into_array())]
fn test_mask_alp_conformance(#[case] array: vortex_array::ArrayRef) {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let mut ctx = array_session().create_execution_ctx();
let array_primitive = array.execute::<PrimitiveArray>(&mut ctx).unwrap();
let alp = alp_encode(array_primitive.as_view(), None, &mut ctx).unwrap();
test_mask_conformance(&alp.into_array());
Expand All @@ -87,7 +87,7 @@ mod test {
#[test]
fn test_mask_alp_with_patches() {
use std::f64::consts::PI;
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let mut ctx = array_session().create_execution_ctx();
// PI doesn't encode cleanly with ALP, so it creates patches.
let values: Vec<f64> = (0..100)
.map(|i| if i % 4 == 3 { PI } else { 1.0 })
Expand All @@ -100,7 +100,7 @@ mod test {

#[test]
fn test_mask_alp_with_patches_casts_surviving_patch_values_to_nullable() {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let mut ctx = array_session().create_execution_ctx();
let values = PrimitiveArray::from_iter([1.234f32, f32::NAN, 2.345, f32::INFINITY, 3.456]);
let alp = alp_encode(values.as_view(), None, &mut ctx).unwrap();
assert!(alp.patches().is_some(), "expected patches");
Expand Down
39 changes: 24 additions & 15 deletions encodings/alp/src/alp/compute/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,41 +12,50 @@ mod take;

#[cfg(test)]
mod tests {
use std::sync::LazyLock;

use rstest::rstest;
use vortex_array::IntoArray;
use vortex_array::LEGACY_SESSION;
use vortex_array::VortexSessionExecute;
use vortex_array::array_session;
use vortex_array::arrays::PrimitiveArray;
use vortex_array::compute::conformance::binary_numeric::test_binary_numeric_array;
use vortex_array::compute::conformance::consistency::test_array_consistency;
use vortex_session::VortexSession;

use crate::ALPArray;
use crate::alp_encode;

static SESSION: LazyLock<VortexSession> = LazyLock::new(|| {
let session = array_session();
crate::initialize(&session);
session
});

#[rstest]
// Basic float arrays
#[case::f32_array(alp_encode(PrimitiveArray::from_iter([1.23f32, 4.56, 7.89, 10.11, 12.13]).as_view(), None, &mut LEGACY_SESSION.create_execution_ctx()).unwrap())]
#[case::f64_array(alp_encode(PrimitiveArray::from_iter([100.1f64, 200.2, 300.3, 400.4, 500.5]).as_view(), None, &mut LEGACY_SESSION.create_execution_ctx()).unwrap())]
#[case::f32_array(alp_encode(PrimitiveArray::from_iter([1.23f32, 4.56, 7.89, 10.11, 12.13]).as_view(), None, &mut array_session().create_execution_ctx()).unwrap())]
#[case::f64_array(alp_encode(PrimitiveArray::from_iter([100.1f64, 200.2, 300.3, 400.4, 500.5]).as_view(), None, &mut array_session().create_execution_ctx()).unwrap())]
// Nullable arrays
#[case::nullable_f32(alp_encode(PrimitiveArray::from_option_iter([Some(1.1f32), None, Some(2.2), Some(3.3), None]).as_view(), None, &mut LEGACY_SESSION.create_execution_ctx()).unwrap())]
#[case::nullable_f64(alp_encode(PrimitiveArray::from_option_iter([Some(1.1f64), None, Some(2.2), Some(3.3), None]).as_view(), None, &mut LEGACY_SESSION.create_execution_ctx()).unwrap())]
#[case::nullable_f32(alp_encode(PrimitiveArray::from_option_iter([Some(1.1f32), None, Some(2.2), Some(3.3), None]).as_view(), None, &mut array_session().create_execution_ctx()).unwrap())]
#[case::nullable_f64(alp_encode(PrimitiveArray::from_option_iter([Some(1.1f64), None, Some(2.2), Some(3.3), None]).as_view(), None, &mut array_session().create_execution_ctx()).unwrap())]
// Edge cases
#[case::single_element(alp_encode(PrimitiveArray::from_iter([42.42f64]).as_view(), None, &mut LEGACY_SESSION.create_execution_ctx()).unwrap())]
#[case::single_element(alp_encode(PrimitiveArray::from_iter([42.42f64]).as_view(), None, &mut array_session().create_execution_ctx()).unwrap())]
// Large arrays
#[case::large_f32(alp_encode(PrimitiveArray::from_iter((0..1000).map(|i| i as f32 * 0.1)).as_view(), None, &mut LEGACY_SESSION.create_execution_ctx()).unwrap())]
#[case::large_f32(alp_encode(PrimitiveArray::from_iter((0..1000).map(|i| i as f32 * 0.1)).as_view(), None, &mut array_session().create_execution_ctx()).unwrap())]
// Arrays with patterns
#[case::repeating_pattern(alp_encode(PrimitiveArray::from_iter([1.1f32, 2.2, 3.3, 1.1, 2.2, 3.3, 1.1, 2.2, 3.3]).as_view(), None, &mut LEGACY_SESSION.create_execution_ctx()).unwrap())]
#[case::close_values(alp_encode(PrimitiveArray::from_iter([100.001f64, 100.002, 100.003, 100.004, 100.005]).as_view(), None, &mut LEGACY_SESSION.create_execution_ctx()).unwrap())]
#[case::repeating_pattern(alp_encode(PrimitiveArray::from_iter([1.1f32, 2.2, 3.3, 1.1, 2.2, 3.3, 1.1, 2.2, 3.3]).as_view(), None, &mut array_session().create_execution_ctx()).unwrap())]
#[case::close_values(alp_encode(PrimitiveArray::from_iter([100.001f64, 100.002, 100.003, 100.004, 100.005]).as_view(), None, &mut array_session().create_execution_ctx()).unwrap())]
fn test_alp_consistency(#[case] array: ALPArray) {
test_array_consistency(&array.into_array());
test_array_consistency(&array.into_array(), &mut SESSION.create_execution_ctx());
}

#[rstest]
#[case::f32_basic(alp_encode(PrimitiveArray::from_iter([1.23f32, 4.56, 7.89, 10.11, 12.13]).as_view(), None, &mut LEGACY_SESSION.create_execution_ctx()).unwrap())]
#[case::f64_basic(alp_encode(PrimitiveArray::from_iter([100.1f64, 200.2, 300.3, 400.4, 500.5]).as_view(), None, &mut LEGACY_SESSION.create_execution_ctx()).unwrap())]
#[case::f32_large(alp_encode(PrimitiveArray::from_iter((0..100).map(|i| i as f32 * 1.5)).as_view(), None, &mut LEGACY_SESSION.create_execution_ctx()).unwrap())]
#[case::f64_large(alp_encode(PrimitiveArray::from_iter((0..100).map(|i| i as f64 * 2.5)).as_view(), None, &mut LEGACY_SESSION.create_execution_ctx()).unwrap())]
#[case::f32_basic(alp_encode(PrimitiveArray::from_iter([1.23f32, 4.56, 7.89, 10.11, 12.13]).as_view(), None, &mut array_session().create_execution_ctx()).unwrap())]
#[case::f64_basic(alp_encode(PrimitiveArray::from_iter([100.1f64, 200.2, 300.3, 400.4, 500.5]).as_view(), None, &mut array_session().create_execution_ctx()).unwrap())]
#[case::f32_large(alp_encode(PrimitiveArray::from_iter((0..100).map(|i| i as f32 * 1.5)).as_view(), None, &mut array_session().create_execution_ctx()).unwrap())]
#[case::f64_large(alp_encode(PrimitiveArray::from_iter((0..100).map(|i| i as f64 * 2.5)).as_view(), None, &mut array_session().create_execution_ctx()).unwrap())]
fn test_alp_binary_numeric(#[case] array: ALPArray) {
test_binary_numeric_array(array.into_array());
test_binary_numeric_array(&array.into_array(), &mut SESSION.create_execution_ctx());
}
}
4 changes: 2 additions & 2 deletions encodings/alp/src/alp/compute/take.rs
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ impl TakeExecute for ALP {
mod test {
use rstest::rstest;
use vortex_array::IntoArray;
use vortex_array::LEGACY_SESSION;
use vortex_array::VortexSessionExecute;
use vortex_array::array_session;
use vortex_array::arrays::PrimitiveArray;
use vortex_array::compute::conformance::take::test_take_conformance;
use vortex_buffer::buffer;
Expand All @@ -56,7 +56,7 @@ mod test {
#[case(PrimitiveArray::from_option_iter([Some(1.1f32), None, Some(2.2), Some(3.3), None]).into_array())]
#[case(buffer![42.42f64].into_array())]
fn test_take_alp_conformance(#[case] array: vortex_array::ArrayRef) {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let mut ctx = array_session().create_execution_ctx();
let array_primitive = array.execute::<PrimitiveArray>(&mut ctx).unwrap();
let alp = alp_encode(array_primitive.as_view(), None, &mut ctx).unwrap();
test_take_conformance(&alp.into_array());
Expand Down
16 changes: 8 additions & 8 deletions encodings/alp/src/alp_rd/compute/cast.rs
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ impl CastReduce for ALPRD {
mod tests {
use rstest::rstest;
use vortex_array::IntoArray;
use vortex_array::LEGACY_SESSION;
use vortex_array::VortexSessionExecute;
use vortex_array::array_session;
use vortex_array::arrays::PrimitiveArray;
use vortex_array::builtins::ArrayBuiltins;
use vortex_array::compute::conformance::cast::test_cast_conformance;
Expand All @@ -63,7 +63,7 @@ mod tests {

#[test]
fn test_cast_alprd_f32_to_f64() {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let mut ctx = array_session().create_execution_ctx();
let values = vec![1.0f32, 1.1, 1.2, 1.3, 1.4];
let arr = PrimitiveArray::from_iter(values.clone());
let encoder = RDEncoder::new(&values);
Expand All @@ -87,7 +87,7 @@ mod tests {

#[test]
fn test_cast_alprd_nullable() {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let mut ctx = array_session().create_execution_ctx();
let arr =
PrimitiveArray::from_option_iter([Some(10.0f64), None, Some(10.1), Some(10.2), None]);
let values = vec![10.0f64, 10.1, 10.2];
Expand Down Expand Up @@ -122,31 +122,31 @@ mod tests {
let values = vec![1.23f32, 4.56, 7.89, 10.11, 12.13];
let arr = PrimitiveArray::from_iter(values.clone());
let encoder = RDEncoder::new(&values);
encoder.encode(arr.as_view(), &mut LEGACY_SESSION.create_execution_ctx())
encoder.encode(arr.as_view(), &mut array_session().create_execution_ctx())
})]
#[case::f64({
let values = vec![100.1f64, 200.2, 300.3, 400.4, 500.5];
let arr = PrimitiveArray::from_iter(values.clone());
let encoder = RDEncoder::new(&values);
encoder.encode(arr.as_view(), &mut LEGACY_SESSION.create_execution_ctx())
encoder.encode(arr.as_view(), &mut array_session().create_execution_ctx())
})]
#[case::single({
let values = vec![42.42f64];
let arr = PrimitiveArray::from_iter(values.clone());
let encoder = RDEncoder::new(&values);
encoder.encode(arr.as_view(), &mut LEGACY_SESSION.create_execution_ctx())
encoder.encode(arr.as_view(), &mut array_session().create_execution_ctx())
})]
#[case::negative({
let values = vec![0.0f32, -1.5, 2.5, -3.5, 4.5];
let arr = PrimitiveArray::from_iter(values.clone());
let encoder = RDEncoder::new(&values);
encoder.encode(arr.as_view(), &mut LEGACY_SESSION.create_execution_ctx())
encoder.encode(arr.as_view(), &mut array_session().create_execution_ctx())
})]
#[case::nullable({
let arr = PrimitiveArray::from_option_iter([Some(1.1f32), None, Some(2.2), Some(3.3), None]);
let values = vec![1.1f32, 2.2, 3.3];
let encoder = RDEncoder::new(&values);
encoder.encode(arr.as_view(), &mut LEGACY_SESSION.create_execution_ctx())
encoder.encode(arr.as_view(), &mut array_session().create_execution_ctx())
})]
fn test_cast_alprd_conformance(#[case] alprd: crate::alp_rd::ALPRDArray) {
test_cast_conformance(&alprd.into_array());
Expand Down
3 changes: 2 additions & 1 deletion encodings/alp/src/alp_rd/compute/filter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ mod test {
use rstest::rstest;
use vortex_array::IntoArray;
use vortex_array::VortexSessionExecute;
use vortex_array::array_session;
use vortex_array::arrays::PrimitiveArray;
use vortex_array::assert_arrays_eq;
use vortex_array::compute::conformance::filter::test_filter_conformance;
Expand All @@ -59,7 +60,7 @@ mod test {
use crate::RDEncoder;

static SESSION: LazyLock<VortexSession> = LazyLock::new(|| {
let session = vortex_array::array_session();
let session = array_session();
crate::initialize(&session);
session
});
Expand Down
6 changes: 3 additions & 3 deletions encodings/alp/src/alp_rd/compute/mask.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ impl MaskReduce for ALPRD {
mod tests {
use rstest::rstest;
use vortex_array::IntoArray;
use vortex_array::LEGACY_SESSION;
use vortex_array::VortexSessionExecute;
use vortex_array::array_session;
use vortex_array::arrays::PrimitiveArray;
use vortex_array::compute::conformance::mask::test_mask_conformance;

Expand All @@ -55,7 +55,7 @@ mod tests {
#[case(0.1f32, 0.2f32, 3e25f32)]
#[case(0.1f64, 0.2f64, 3e100f64)]
fn test_mask_simple<T: ALPRDFloat>(#[case] a: T, #[case] b: T, #[case] outlier: T) {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let mut ctx = array_session().create_execution_ctx();
test_mask_conformance(
&RDEncoder::new(&[a, b])
.encode(
Expand All @@ -70,7 +70,7 @@ mod tests {
#[case(0.1f32, 3e25f32)]
#[case(0.5f64, 1e100f64)]
fn test_mask_with_nulls<T: ALPRDFloat>(#[case] a: T, #[case] outlier: T) {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let mut ctx = array_session().create_execution_ctx();
test_mask_conformance(
&RDEncoder::new(&[a])
.encode(
Expand Down
38 changes: 24 additions & 14 deletions encodings/alp/src/alp_rd/compute/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,95 +8,105 @@ mod take;

#[cfg(test)]
mod tests {
use std::sync::LazyLock;

use rstest::rstest;
use vortex_array::IntoArray;
use vortex_array::LEGACY_SESSION;
use vortex_array::VortexSessionExecute;
use vortex_array::array_session;
use vortex_array::arrays::PrimitiveArray;
use vortex_array::compute::conformance::binary_numeric::test_binary_numeric_array;
use vortex_array::compute::conformance::consistency::test_array_consistency;
use vortex_session::VortexSession;

use crate::ALPRDArray;
use crate::RDEncoder;

static SESSION: LazyLock<VortexSession> = LazyLock::new(|| {
let session = array_session();
crate::initialize(&session);
session
});

#[rstest]
// Basic float arrays with RD (reference delta) encoding
#[case::f32_array({
let values = vec![1.0f32, 1.1, 1.2, 1.3, 1.4];
let arr = PrimitiveArray::from_iter(values.clone());
let encoder = RDEncoder::new(&values);
encoder.encode(arr.as_view(), &mut LEGACY_SESSION.create_execution_ctx())
encoder.encode(arr.as_view(), &mut SESSION.create_execution_ctx())
})]
#[case::f64_array({
let values = vec![100.0f64, 100.01, 100.02, 100.03, 100.04];
let arr = PrimitiveArray::from_iter(values.clone());
let encoder = RDEncoder::new(&values);
encoder.encode(arr.as_view(), &mut LEGACY_SESSION.create_execution_ctx())
encoder.encode(arr.as_view(), &mut SESSION.create_execution_ctx())
})]
// Nullable arrays
#[case::nullable_f32({
let values = vec![1.0f32, 1.2, 1.3];
let arr = PrimitiveArray::from_option_iter([Some(1.0f32), None, Some(1.2), Some(1.3), None]);
let encoder = RDEncoder::new(&values);
encoder.encode(arr.as_view(), &mut LEGACY_SESSION.create_execution_ctx())
encoder.encode(arr.as_view(), &mut SESSION.create_execution_ctx())
})]
#[case::nullable_f64({
let values = vec![10.0f64, 10.2, 10.3];
let arr = PrimitiveArray::from_option_iter([Some(10.0f64), None, Some(10.2), Some(10.3), None]);
let encoder = RDEncoder::new(&values);
encoder.encode(arr.as_view(), &mut LEGACY_SESSION.create_execution_ctx())
encoder.encode(arr.as_view(), &mut SESSION.create_execution_ctx())
})]
// Edge cases
#[case::single_element({
let values = vec![42.42f64];
let arr = PrimitiveArray::from_iter(values.clone());
let encoder = RDEncoder::new(&values);
encoder.encode(arr.as_view(), &mut LEGACY_SESSION.create_execution_ctx())
encoder.encode(arr.as_view(), &mut SESSION.create_execution_ctx())
})]
// Arrays with small deltas (good for RD encoding)
#[case::small_deltas({
let values = vec![1000.0f32, 1000.001, 1000.002, 1000.003, 1000.004];
let arr = PrimitiveArray::from_iter(values.clone());
let encoder = RDEncoder::new(&values);
encoder.encode(arr.as_view(), &mut LEGACY_SESSION.create_execution_ctx())
encoder.encode(arr.as_view(), &mut SESSION.create_execution_ctx())
})]
// Large arrays
#[case::large_f32({
let values: Vec<f32> = (0..1000).map(|i| 100.0 + i as f32 * 0.01).collect();
let arr = PrimitiveArray::from_iter(values.clone());
let encoder = RDEncoder::new(&values);
encoder.encode(arr.as_view(), &mut LEGACY_SESSION.create_execution_ctx())
encoder.encode(arr.as_view(), &mut SESSION.create_execution_ctx())
})]
fn test_alp_rd_consistency(#[case] array: ALPRDArray) {
test_array_consistency(&array.into_array());
let ctx = &mut SESSION.create_execution_ctx();
test_array_consistency(&array.into_array(), ctx);
}

#[rstest]
#[case::f32_basic({
let values = vec![1.0f32, 1.1, 1.2, 1.3, 1.4];
let arr = PrimitiveArray::from_iter(values.clone());
let encoder = RDEncoder::new(&values);
encoder.encode(arr.as_view(), &mut LEGACY_SESSION.create_execution_ctx())
encoder.encode(arr.as_view(), &mut SESSION.create_execution_ctx())
})]
#[case::f64_basic({
let values = vec![100.0f64, 100.01, 100.02, 100.03, 100.04];
let arr = PrimitiveArray::from_iter(values.clone());
let encoder = RDEncoder::new(&values);
encoder.encode(arr.as_view(), &mut LEGACY_SESSION.create_execution_ctx())
encoder.encode(arr.as_view(), &mut SESSION.create_execution_ctx())
})]
#[case::f32_large({
let values: Vec<f32> = (0..100).map(|i| 50.0 + i as f32 * 0.1).collect();
let arr = PrimitiveArray::from_iter(values.clone());
let encoder = RDEncoder::new(&values);
encoder.encode(arr.as_view(), &mut LEGACY_SESSION.create_execution_ctx())
encoder.encode(arr.as_view(), &mut SESSION.create_execution_ctx())
})]
#[case::f64_large({
let values: Vec<f64> = (0..100).map(|i| 1000.0 + i as f64 * 0.01).collect();
let arr = PrimitiveArray::from_iter(values.clone());
let encoder = RDEncoder::new(&values);
encoder.encode(arr.as_view(), &mut LEGACY_SESSION.create_execution_ctx())
encoder.encode(arr.as_view(), &mut SESSION.create_execution_ctx())
})]
fn test_alp_rd_binary_numeric(#[case] array: ALPRDArray) {
test_binary_numeric_array(array.into_array());
test_binary_numeric_array(&array.into_array(), &mut SESSION.create_execution_ctx());
}
}
3 changes: 2 additions & 1 deletion encodings/alp/src/alp_rd/compute/take.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ mod test {
use rstest::rstest;
use vortex_array::IntoArray;
use vortex_array::VortexSessionExecute;
use vortex_array::array_session;
use vortex_array::arrays::PrimitiveArray;
use vortex_array::assert_arrays_eq;
use vortex_array::compute::conformance::take::test_take_conformance;
Expand All @@ -72,7 +73,7 @@ mod test {
use crate::RDEncoder;

static SESSION: LazyLock<VortexSession> = LazyLock::new(|| {
let session = vortex_array::array_session();
let session = array_session();
crate::initialize(&session);
session
});
Expand Down
Loading
Loading