Extract a field or expression result as raw msgpack bytes. Used by `count_distinct`, `approx_count_distinct`, `approx_topk`, etc.
(doc: &[u8], field: &str, expr: Option<&SqlExpr>)
| 63 | /// Extract a field or expression result as raw msgpack bytes. |
| 64 | /// Used by `count_distinct`, `approx_count_distinct`, `approx_topk`, etc. |
| 65 | pub fn extract_bytes(doc: &[u8], field: &str, expr: Option<&SqlExpr>) -> Option<Vec<u8>> { |
| 66 | if let Some(expr) = expr { |
| 67 | let val = eval_expr(doc, expr)?; |
| 68 | return nodedb_types::json_msgpack::value_to_msgpack(&val).ok(); |
| 69 | } |
| 70 | let (start, end) = extract_field(doc, 0, field)?; |
| 71 | Some(doc[start..end].to_vec()) |
| 72 | } |
| 73 | |
| 74 | /// Returns `Some(())` when the field is present and non-null. |
| 75 | /// Used by `count(field)` accumulator to count non-null values. |
no test coverage detected