(
&self,
node: &PhysicalNode,
context: &mut ExecutionContext,
graph: &Arc<GraphCache>,
)
| 3447 | } |
| 3448 | |
| 3449 | fn execute_node_with_graph( |
| 3450 | &self, |
| 3451 | node: &PhysicalNode, |
| 3452 | context: &mut ExecutionContext, |
| 3453 | graph: &Arc<GraphCache>, |
| 3454 | ) -> Result<Vec<Row>, ExecutionError> { |
| 3455 | match node { |
| 3456 | PhysicalNode::NodeSeqScan { |
| 3457 | variable, |
| 3458 | labels, |
| 3459 | properties, |
| 3460 | .. |
| 3461 | } => self.execute_node_seq_scan_with_graph( |
| 3462 | variable, |
| 3463 | labels, |
| 3464 | properties.as_ref(), |
| 3465 | context, |
| 3466 | graph, |
| 3467 | ), |
| 3468 | |
| 3469 | PhysicalNode::Filter { |
| 3470 | condition, input, .. |
| 3471 | } => { |
| 3472 | let input_rows = self.execute_node_with_graph(input, context, graph)?; |
| 3473 | self.execute_filter(condition, input_rows, context) |
| 3474 | } |
| 3475 | |
| 3476 | PhysicalNode::Having { |
| 3477 | condition, input, .. |
| 3478 | } => { |
| 3479 | let input_rows = self.execute_node_with_graph(input, context, graph)?; |
| 3480 | self.execute_having(condition, input_rows, context) |
| 3481 | } |
| 3482 | |
| 3483 | PhysicalNode::Project { |
| 3484 | expressions, input, .. |
| 3485 | } => { |
| 3486 | let input_rows = self.execute_node_with_graph(input, context, graph)?; |
| 3487 | self.execute_project(expressions, input_rows, context) |
| 3488 | } |
| 3489 | |
| 3490 | PhysicalNode::GenericFunction { |
| 3491 | function_name, |
| 3492 | arguments, |
| 3493 | input, |
| 3494 | .. |
| 3495 | } => { |
| 3496 | let input_rows = self.execute_node_with_graph(input, context, graph)?; |
| 3497 | self.execute_generic_function(function_name, arguments, input_rows, context) |
| 3498 | } |
| 3499 | |
| 3500 | PhysicalNode::HashAggregate { |
| 3501 | group_by, |
| 3502 | aggregates, |
| 3503 | input, |
| 3504 | .. |
| 3505 | } => { |
| 3506 | log::debug!("EXECUTING HashAggregate NODE"); |
no test coverage detected