limit and offset

main
Ziyang Hu 2 years ago
parent c74f0a4810
commit 8d41002711

@ -1148,7 +1148,8 @@ mod tests {
let s = r##"from (j:Job)<-[hj:HasJob]-(e:Employee)
where j.id == 16
select { eid: e.id, jid: j.id, fname: e.first_name, salary: hj.salary, job: j.title }"##;
select { eid: e.id, jid: j.id, fname: e.first_name, salary: hj.salary, job: j.title }
limit 2 offset 1"##;
let parsed = Parser::parse(Rule::relational_query, s)?.next().unwrap();
let plan = sess.query_to_plan(parsed)?;

@ -946,9 +946,18 @@ impl<'a> Session<'a> {
}
fn convert_select_data_to_plan<'b>(
&self,
plan: ExecPlan<'b>,
mut plan: ExecPlan<'b>,
select_data: Selection,
) -> Result<ExecPlan<'b>> {
if select_data.limit.is_some() || select_data.offset.is_some() {
let limit = select_data.limit.unwrap_or(0) as usize;
let offset = select_data.offset.unwrap_or(0) as usize;
plan = ExecPlan::LimiterIt {
source: plan.into(),
offset,
limit,
}
}
Ok(ExecPlan::EvalItPlan {
source: Box::new(plan),
keys: select_data.keys,

Loading…
Cancel
Save