Resolve field name to index + type, validate literals, and build a leaf predicate.
(&self, field: &str, op: PredicateOperator, literals: Vec<Datum>)
| 654 | |
| 655 | /// Resolve field name to index + type, validate literals, and build a leaf predicate. |
| 656 | fn leaf(&self, field: &str, op: PredicateOperator, literals: Vec<Datum>) -> Result<Predicate> { |
| 657 | let (index, data_type) = self.resolve_field(field)?; |
| 658 | Self::validate_literal_count(op, &literals)?; |
| 659 | for lit in &literals { |
| 660 | validate_datum_matches_type(lit, &data_type)?; |
| 661 | } |
| 662 | Ok(Predicate::Leaf { |
| 663 | column: field.to_string(), |
| 664 | index, |
| 665 | data_type, |
| 666 | op, |
| 667 | literals, |
| 668 | }) |
| 669 | } |
| 670 | |
| 671 | /// Look up a field name, returning its (index, DataType) or an error. |
| 672 | fn resolve_field(&self, field: &str) -> Result<(usize, DataType)> { |
no test coverage detected