Skip to content

Commit c276b0d

Browse files
authored
Change partiql-eval type visibilities (#342)
1 parent e63267a commit c276b0d

File tree

5 files changed

+277
-271
lines changed

5 files changed

+277
-271
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99
### Changed
10+
- *BREAKING:* partiql-eval: modifies visibility of types implementing `EvalExpr` and `Evaluable`
1011
### Added
1112
- Implements built-in function `EXTRACT`
1213
### Fixes
1314
- Fix parsing of `EXTRACT` datetime parts `YEAR`, `TIMEZONE_HOUR`, and `TIMEZONE_MINUTE`
15+
- Fix logical plan to eval plan conversion for `EvalOrderBySortSpec` with arguments `DESC` and `NULLS LAST`
1416

1517
## [0.3.0] - 2023-04-11
1618
### Changed

partiql-eval/benches/bench_eval.rs

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,10 @@ use std::time::Duration;
44
use criterion::{black_box, criterion_group, criterion_main, Criterion};
55

66
use partiql_eval::env::basic::MapBindings;
7-
use partiql_eval::eval::evaluable::{EvalScan, Evaluable};
8-
use partiql_eval::eval::expr::{EvalPath, EvalPathComponent, EvalVarRef};
9-
use partiql_eval::eval::{BasicContext, EvalPlan};
7+
use partiql_eval::eval::EvalPlan;
108
use partiql_eval::plan;
119
use partiql_logical as logical;
12-
use partiql_logical::BindingsOp::Project;
10+
use partiql_logical::BindingsOp::{Project, ProjectAll};
1311
use partiql_logical::{BinaryOp, BindingsOp, JoinKind, LogicalPlan, PathComponent, ValueExpr};
1412
use partiql_value::{
1513
partiql_bag, partiql_list, partiql_tuple, Bag, BindingsName, List, Tuple, Value,
@@ -149,22 +147,30 @@ fn eval_bench(c: &mut Criterion) {
149147
});
150148

151149
fn eval(eval: bool) {
152-
// eval plan for SELECT * FROM hr.employeesNestScalars
153-
let mut from = EvalScan::new(
154-
Box::new(EvalPath {
155-
expr: Box::new(EvalVarRef {
156-
name: BindingsName::CaseInsensitive("hr".to_string()),
157-
}),
158-
components: vec![EvalPathComponent::Key(BindingsName::CaseInsensitive(
150+
// logical plan for SELECT * FROM hr.employeesNestScalars
151+
let mut logical_plan = LogicalPlan::new();
152+
153+
let from = logical_plan.add_operator(BindingsOp::Scan(logical::Scan {
154+
expr: ValueExpr::Path(
155+
Box::new(ValueExpr::VarRef(BindingsName::CaseInsensitive(
156+
"hr".to_string(),
157+
))),
158+
vec![PathComponent::Key(BindingsName::CaseInsensitive(
159159
"employeesNestScalars".to_string(),
160160
))],
161-
}),
162-
"x",
163-
);
161+
),
162+
as_key: "x".to_string(),
163+
at_key: None,
164+
}));
165+
let project_all = logical_plan.add_operator(ProjectAll);
166+
let sink = logical_plan.add_operator(BindingsOp::Sink);
164167

165-
let ctx = BasicContext::new(data());
168+
logical_plan.add_flow(from, project_all);
169+
logical_plan.add_flow(project_all, sink);
170+
171+
let eval_plan = eval_plan(black_box(&logical_plan));
166172
if eval {
167-
from.evaluate(&ctx);
173+
evaluate(eval_plan, data());
168174
}
169175
}
170176

0 commit comments

Comments
 (0)