fix and/or expressions generating incorrect sql
This commit is contained in:
parent
8c60a617a2
commit
1a05157a9d
2 changed files with 17 additions and 16 deletions
|
@ -1,6 +1,7 @@
|
|||
use crate::addressing::Address;
|
||||
use crate::database::entry::EntryValue;
|
||||
use crate::database::inner::schema::data;
|
||||
use diesel::expression::grouped::Grouped;
|
||||
use diesel::expression::operators::{And, Not, Or};
|
||||
use diesel::sql_types::Bool;
|
||||
use diesel::sqlite::Sqlite;
|
||||
|
@ -433,15 +434,15 @@ impl Query {
|
|||
while !subqueries.is_empty() {
|
||||
result = Box::new(And::new(result, subqueries.remove(0)));
|
||||
}
|
||||
Ok(Box::new(result))
|
||||
Ok(Box::new(Grouped(result)))
|
||||
}
|
||||
QueryQualifier::Or => {
|
||||
let mut result: Box<Or<Box<Predicate>, Box<Predicate>>> =
|
||||
let mut result =
|
||||
Box::new(Or::new(subqueries.remove(0), subqueries.remove(0)));
|
||||
while !subqueries.is_empty() {
|
||||
result = Box::new(Or::new(result, subqueries.remove(0)));
|
||||
}
|
||||
Ok(Box::new(result))
|
||||
Ok(Box::new(Grouped(result)))
|
||||
}
|
||||
QueryQualifier::Not => {
|
||||
Err(QueryParseError("NOT only takes one subquery.".into()))
|
||||
|
|
|
@ -503,18 +503,18 @@ mod test {
|
|||
let result = connection.query(query).unwrap();
|
||||
assert_eq!(result.len(), 1);
|
||||
|
||||
// let query = format!(
|
||||
// r#"(and
|
||||
// (or
|
||||
// (matches ? ? (contains "OOBA"))
|
||||
// (matches ? (contains "HARGE") ?)
|
||||
// )
|
||||
// (not (matches ? "{LABEL_ATTR}" ?))
|
||||
// )"#
|
||||
// )
|
||||
// .parse()
|
||||
// .unwrap();
|
||||
// let result = connection.query(query).unwrap();
|
||||
// assert_eq!(result.len(), 1);
|
||||
let query = format!(
|
||||
r#"(and
|
||||
(or
|
||||
(matches ? ? (contains "OOBA"))
|
||||
(matches ? (contains "HARGE") ?)
|
||||
)
|
||||
(not (matches ? "{LABEL_ATTR}" ?))
|
||||
)"#
|
||||
)
|
||||
.parse()
|
||||
.unwrap();
|
||||
let result = connection.query(query).unwrap();
|
||||
assert_eq!(result.len(), 1);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue