| buildInsertProjection(MergeNotMatchedClause) |   | 67% |   | 60% | 8 | 11 | 7 | 25 | 0 | 1 |
| buildUpdateProjection(MergeMatchedClause) |   | 75% |   | 80% | 2 | 6 | 3 | 17 | 0 | 1 |
| findTargetSlot(String) |   | 51% |   | 50% | 1 | 2 | 2 | 8 | 0 | 1 |
| validateNotMatchedPrimaryKeys(List) |   | 93% |   | 73% | 9 | 18 | 3 | 41 | 0 | 1 |
| generateBranchLabel(Expression) |   | 92% |   | 87% | 2 | 9 | 2 | 19 | 0 | 1 |
| buildBranchProjections() |   | 94% |   | 91% | 1 | 7 | 1 | 15 | 0 | 1 |
| lambda$validateNotMatchedPrimaryKeys$1() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| qualifierEndsWith(List, List) |   | 94% |   | 83% | 1 | 4 | 1 | 7 | 0 | 1 |
| addCardinalityChecks(LogicalProject) |  | 100% |  | 100% | 0 | 7 | 0 | 28 | 0 | 1 |
| build() |  | 100% |  | 100% | 0 | 2 | 0 | 13 | 0 | 1 |
| targetPrimaryKeyName(Expression, Map) |  | 100% |   | 91% | 1 | 7 | 0 | 14 | 0 | 1 |
| generateFinalExpression(int, List, Slot, DataType) |  | 100% |  | 100% | 0 | 2 | 0 | 5 | 0 | 1 |
| generateFinalProjections(List, Slot) |  | 100% |  | 100% | 0 | 2 | 0 | 6 | 0 | 1 |
| bindBranchLabel() |  | 100% | | n/a | 0 | 1 | 0 | 5 | 0 | 1 |
| buildDeleteProjection() |  | 100% |  | 100% | 0 | 2 | 0 | 6 | 0 | 1 |
| PaimonMergePlanner(PaimonWriteTarget, PaimonRowChangeSpec.Merge, LogicalPlan, CascadesContext) |  | 100% | | n/a | 0 | 1 | 0 | 8 | 0 | 1 |
| targetSlot(String) |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
| unwrap(NamedExpression) |  | 100% |  | 100% | 0 | 3 | 0 | 2 | 0 | 1 |
| build(PaimonWriteTarget, PaimonRowChangeSpec.Merge, LogicalPlan, CascadesContext) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$findTargetSlot$3(Slot) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| lambda$validateNotMatchedPrimaryKeys$0(Slot) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| invalidNotMatchedKeyCondition() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$findTargetSlot$2(String, Slot) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| normalizeKeyExpression(Expression, DataType) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |