wip: extended matches engine impl
parent
68740399e7
commit
0a67c3c5e7
|
@ -319,6 +319,36 @@ fn to_sqlite_predicates(query: Query) -> Result<SqlResult, QueryExecutionError>
|
|||
PatternQueryComponent::Variable(_) | PatternQueryComponent::Discard => {}
|
||||
};
|
||||
|
||||
if let Some(provenance) = &eq.provenance {
|
||||
match provenance {
|
||||
PatternQueryComponent::Exact(q_provenance) => {
|
||||
subqueries.push(Box::new(data::provenance.eq(q_provenance.0.clone())))
|
||||
}
|
||||
PatternQueryComponent::In(q_provenances) => subqueries.push(Box::new(
|
||||
data::provenance.eq_any(q_provenances.iter().map(|a| &a.0).cloned()),
|
||||
)),
|
||||
PatternQueryComponent::Contains(q_provenance) => subqueries.push(Box::new(
|
||||
data::provenance.like(format!("%{}%", q_provenance)),
|
||||
)),
|
||||
PatternQueryComponent::Variable(_) | PatternQueryComponent::Discard => {}
|
||||
}
|
||||
}
|
||||
|
||||
if let Some(timestamp) = &eq.timestamp {
|
||||
match timestamp {
|
||||
PatternQueryComponent::Exact(q_timestamp) => {
|
||||
subqueries.push(Box::new(data::timestamp.eq(q_timestamp.0.clone())))
|
||||
}
|
||||
PatternQueryComponent::In(q_timestamps) => subqueries.push(Box::new(
|
||||
data::timestamp.eq_any(q_timestamps.iter().map(|a| &a.0).cloned()),
|
||||
)),
|
||||
PatternQueryComponent::Contains(_) => Err(QueryExecutionError(
|
||||
"Cannot like-compare timestamps.".into(),
|
||||
))?,
|
||||
PatternQueryComponent::Variable(_) | PatternQueryComponent::Discard => {}
|
||||
}
|
||||
}
|
||||
|
||||
match subqueries.len() {
|
||||
0 => Ok(Some(Box::new(true.into_sql::<Bool>()))),
|
||||
1 => Ok(Some(subqueries.remove(0))),
|
||||
|
|
Loading…
Reference in New Issue