(&self)
| 69 | |
| 70 | impl CacheValue for SubqueryResult { |
| 71 | fn size_bytes(&self) -> usize { |
| 72 | match self { |
| 73 | SubqueryResult::Boolean(_) => std::mem::size_of::<bool>(), |
| 74 | SubqueryResult::Scalar(Some(value)) => { |
| 75 | std::mem::size_of::<Value>() |
| 76 | + match value { |
| 77 | Value::String(s) => s.len(), |
| 78 | _ => 0, |
| 79 | } |
| 80 | } |
| 81 | SubqueryResult::Scalar(None) => std::mem::size_of::<Option<Value>>(), |
| 82 | SubqueryResult::Set(values) => { |
| 83 | values.len() * std::mem::size_of::<Value>() |
| 84 | + values |
| 85 | .iter() |
| 86 | .map(|v| match v { |
| 87 | Value::String(s) => s.len(), |
| 88 | _ => 0, |
| 89 | }) |
| 90 | .sum::<usize>() |
| 91 | } |
| 92 | SubqueryResult::FullResult(result) => { |
| 93 | let base_size = std::mem::size_of::<QueryResult>(); |
| 94 | let rows_size = result.rows.len() * std::mem::size_of::<Row>(); |
| 95 | let variables_size = result.variables.iter().map(|var| var.len()).sum::<usize>(); |
| 96 | base_size + rows_size + variables_size |
| 97 | } |
| 98 | } |
| 99 | } |
| 100 | |
| 101 | fn is_valid(&self) -> bool { |
| 102 | // All subquery results are valid by default |
no test coverage detected