-
Notifications
You must be signed in to change notification settings - Fork 186
Expand file tree
/
Copy pathoperations.rs
More file actions
63 lines (52 loc) · 1.73 KB
/
Copy pathoperations.rs
File metadata and controls
63 lines (52 loc) · 1.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
// SPDX-License-Identifier: Apache-2.0
// SPDX-FileCopyrightText: Copyright the Vortex contributors
use vortex_error::VortexResult;
use crate::ExecutionCtx;
use crate::array::ArrayView;
use crate::array::OperationsVTable;
use crate::arrays::Constant;
use crate::scalar::Scalar;
impl OperationsVTable<Constant> for Constant {
fn scalar_at(
array: ArrayView<'_, Constant>,
_index: usize,
_ctx: &mut ExecutionCtx,
) -> VortexResult<Scalar> {
Ok(array.scalar.clone())
}
}
#[cfg(test)]
mod tests {
use vortex_error::VortexResult;
use crate::IntoArray;
use crate::VortexSessionExecute;
use crate::arrays::ConstantArray;
use crate::dtype::DType;
use crate::dtype::Nullability;
use crate::dtype::PType;
use crate::dtype::UnionVariants;
use crate::scalar::Scalar;
#[test]
fn scalar_at_preserves_union_scalar() -> VortexResult<()> {
let variants = UnionVariants::try_new(
["int", "string"].into(),
vec![
DType::Primitive(PType::I32, Nullability::Nullable),
DType::Utf8(Nullability::NonNullable),
],
vec![5, 9],
)?;
let scalar = Scalar::union(
variants.clone(),
5,
Scalar::primitive(42_i32, Nullability::Nullable),
)?;
let array = ConstantArray::new(scalar.clone(), 3).into_array();
let mut ctx = crate::array_session().create_execution_ctx();
assert_eq!(array.execute_scalar(1, &mut ctx)?, scalar);
let null = Scalar::null(DType::Union(variants));
let array = ConstantArray::new(null.clone(), 3).into_array();
assert_eq!(array.execute_scalar(1, &mut ctx)?, null);
Ok(())
}
}