| executeMergePlan(ConnectContext, StmtExecutor, IcebergExternalTable, LogicalPlan) |  | 0% |  | 0% | 3 | 3 | 23 | 23 | 1 | 1 |
| buildMergeProjectPlan(ConnectContext, LogicalPlan, List, List, String) |  | 0% |  | 0% | 2 | 2 | 15 | 15 | 1 | 1 |
| buildUpdateSelectItems(Map, List, String) |  | 0% |  | 0% | 6 | 6 | 17 | 17 | 1 | 1 |
| buildMergePlan(ConnectContext, LogicalPlan, List, IcebergExternalTable) |  | 0% |  | 0% | 4 | 4 | 17 | 17 | 1 | 1 |
| run(ConnectContext, StmtExecutor) |  | 0% |  | 0% | 2 | 2 | 12 | 12 | 1 | 1 |
| getExplainPlan(ConnectContext) |  | 0% |  | 0% | 2 | 2 | 8 | 8 | 1 | 1 |
| getPhysicalMergeSink(NereidsPlanner) |  | 0% |  | 0% | 3 | 3 | 8 | 8 | 1 | 1 |
| IcebergUpdateCommand(List, String, List, LogicalPlan, DeleteCommandContext) |  | 0% |  | 0% | 2 | 2 | 7 | 7 | 1 | 1 |
| getRowIdColumn(IcebergExternalTable) |  | 0% |  | 0% | 4 | 4 | 7 | 7 | 1 | 1 |
| hasRowIdProject(List) |  | 0% |  | 0% | 4 | 4 | 6 | 6 | 1 | 1 |
| getRowIdColumnExpr(LogicalPlan) |  | 0% |  | 0% | 3 | 3 | 5 | 5 | 1 | 1 |
| findRowIdSlot(List) |  | 0% |  | 0% | 3 | 3 | 5 | 5 | 1 | 1 |
| childIsEmptyRelation(PhysicalSink) |  | 0% |  | 0% | 4 | 4 | 2 | 2 | 1 | 1 |
| injectRowIdColumn(LogicalPlan) |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| lambda$hasUnboundPlan$0(TreeNode) |  | 0% |  | 0% | 3 | 3 | 1 | 1 | 1 | 1 |
| accept(PlanVisitor, Object) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| hasUnboundPlan(Plan) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| hasRowIdSlot(List) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getDeleteCtx() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| stmtType() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |