| getNodeExplainString(String, TExplainLevel) |  | 0% |  | 0% | 9 | 9 | 34 | 34 | 1 | 1 |
| getFileAttributes() |  | 0% |  | 0% | 14 | 14 | 41 | 41 | 1 | 1 |
| pruneConjunctsFromNodeProperties() |   | 12% |   | 18% | 10 | 12 | 20 | 25 | 0 | 1 |
| startSplit(int) |  | 0% |  | 0% | 3 | 3 | 19 | 19 | 1 | 1 |
| lambda$startSplit$2(ConnectorScanPlanProvider, ConnectorTableHandle, List, Optional, List, AtomicReference, AtomicInteger, int, List) |  | 0% |  | 0% | 5 | 5 | 14 | 14 | 1 | 1 |
| lambda$startSplit$3(List, int, AtomicReference, ConnectorScanPlanProvider, ConnectorTableHandle, List, Optional, AtomicInteger, Executor) |  | 0% |  | 0% | 5 | 5 | 13 | 13 | 1 | 1 |
| buildRemainingFilter() |   | 40% |   | 35% | 6 | 8 | 9 | 18 | 0 | 1 |
| tryPushDownLimit() |   | 15% |   | 25% | 2 | 3 | 7 | 9 | 0 | 1 |
| createScanRangeLocations() |   | 48% |   | 20% | 5 | 6 | 2 | 10 | 0 | 1 |
| convertPredicate() |   | 62% |   | 50% | 3 | 5 | 7 | 18 | 0 | 1 |
| mapFileFormatType(String) |  | 0% |  | 0% | 7 | 7 | 8 | 8 | 1 | 1 |
| getSplits(int) |   | 77% |   | 50% | 5 | 7 | 5 | 22 | 0 | 1 |
| shouldUseBatchMode(LogicalFileScan.SelectedPartitions, boolean, boolean, int) |   | 26% |   | 16% | 6 | 7 | 6 | 8 | 0 | 1 |
| lambda$create$0(String, String) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| displayPartitionCounts(LogicalFileScan.SelectedPartitions) |   | 31% |   | 50% | 2 | 3 | 2 | 4 | 0 | 1 |
| containsCastExpr(Expr) |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| getLocationProperties() |   | 65% |   | 75% | 1 | 3 | 2 | 8 | 0 | 1 |
| lambda$getNodeExplainString$1(SortNode) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| tryPushDownProjection(List) |   | 68% |   | 75% | 1 | 3 | 2 | 9 | 0 | 1 |
| numApproximateSplits() |  | 0% |  | 0% | 2 | 2 | 1 | 1 | 1 | 1 |
| getPathPartitionKeys() |   | 60% |   | 25% | 2 | 3 | 1 | 5 | 0 | 1 |
| resolveRequiredPartitions(LogicalFileScan.SelectedPartitions) |   | 50% |   | 50% | 2 | 3 | 1 | 3 | 0 | 1 |
| getOrLoadPropertiesResult() |   | 83% |   | 66% | 2 | 4 | 1 | 9 | 0 | 1 |
| computeBatchMode() |   | 90% |   | 50% | 3 | 4 | 0 | 5 | 0 | 1 |
| getSerializedTable() |   | 85% |   | 50% | 2 | 3 | 1 | 7 | 0 | 1 |
| getOrLoadScanNodeProperties() |   | 82% |   | 75% | 1 | 3 | 1 | 5 | 0 | 1 |
| getFileFormatType() |   | 80% |   | 50% | 1 | 2 | 1 | 5 | 0 | 1 |
| effectiveSourceLimit(long, boolean) |   | 66% |   | 50% | 1 | 2 | 0 | 1 | 0 | 1 |
| create(PlanNodeId, TupleDescriptor, boolean, SessionVariable, ScanContext, PluginDrivenExternalCatalog, PluginDrivenExternalTable) |  | 97% |   | 50% | 1 | 2 | 0 | 8 | 0 | 1 |
| setScanParams(TFileRangeDesc, Split) |  | 96% |   | 50% | 1 | 2 | 1 | 9 | 0 | 1 |
| buildColumnHandles() |  | 100% |   | 75% | 2 | 5 | 0 | 13 | 0 | 1 |
| PluginDrivenScanNode(PlanNodeId, TupleDescriptor, boolean, SessionVariable, ScanContext, Connector, ConnectorSession, ConnectorTableHandle) |  | 100% | | n/a | 0 | 1 | 0 | 6 | 0 | 1 |
| isBatchMode() |  | 100% |   | 50% | 1 | 2 | 0 | 3 | 0 | 1 |
| buildFilterConstraint(List) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| setSelectedPartitions(LogicalFileScan.SelectedPartitions) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| getTargetTable() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| static {...} |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |