• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

vortex-data / vortex / 16935267080

13 Aug 2025 11:00AM UTC coverage: 24.312% (-63.3%) from 87.658%
16935267080

Pull #4226

github

web-flow
Merge 81b48c7fb into baa6ea202
Pull Request #4226: Support converting TimestampTZ to and from duckdb

0 of 2 new or added lines in 1 file covered. (0.0%)

20666 existing lines in 469 files now uncovered.

8726 of 35892 relevant lines covered (24.31%)

147.74 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

85.71
/vortex-expr/src/transform/simplify.rs
1
// SPDX-License-Identifier: Apache-2.0
2
// SPDX-FileCopyrightText: Copyright the Vortex contributors
3

4
use vortex_error::VortexResult;
5

6
use crate::transform::match_between::find_between;
7
// use crate::transform::match_between::find_between;
8
use crate::traversal::{Node, Transformed};
9
use crate::{ExprRef, GetItemVTable, PackVTable};
10

11
/// Simplifies an expression into an equivalent expression which is faster and easier to analyze.
12
///
13
/// If the scope dtype is known, see `simplify_typed` for a simplifier which uses dtype.
14
pub fn simplify(e: ExprRef) -> VortexResult<ExprRef> {
28✔
15
    let e = e
28✔
16
        .transform_up(simplify_transformer)
28✔
17
        .map(|e| e.into_inner())?;
28✔
18
    Ok(find_between(e.clone()))
28✔
19
}
28✔
20

21
fn simplify_transformer(node: ExprRef) -> VortexResult<Transformed<ExprRef>> {
96✔
22
    // pack(l_1: e_1, ..., l_i: e_i, ..., l_n: e_n).get_item(l_i) = e_i where 0 <= i <= n
23
    if let Some(get_item) = node.as_opt::<GetItemVTable>()
96✔
24
        && let Some(pack) = get_item.child().as_opt::<PackVTable>()
40✔
25
    {
UNCOV
26
        let expr = pack.field(get_item.field())?;
×
UNCOV
27
        return Ok(Transformed::yes(expr));
×
28
    }
96✔
29
    Ok(Transformed::no(node))
96✔
30
}
96✔
31

32
#[cfg(test)]
33
mod tests {
34
    use vortex_dtype::Nullability::NonNullable;
35

36
    use crate::transform::simplify::simplify;
37
    use crate::{get_item, lit, pack};
38

39
    #[test]
40
    fn test_simplify() {
41
        let e = get_item("b", pack([("a", lit(1)), ("b", lit(2))], NonNullable));
42
        let e = simplify(e).unwrap();
43
        assert_eq!(&e, &lit(2));
44
    }
45
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc