| numDistinctVals(Double, Double) |  | 0% |  | 0% | 13 | 13 | 46 | 46 | 1 | 1 |
| getJoinRowCount(RelMetadataQuery, Join, RexNode) |  | 0% |  | 0% | 17 | 17 | 30 | 30 | 1 | 1 |
| getJoinDistinctRowCount(RelMetadataQuery, RelNode, JoinRelType, ImmutableBitSet, RexNode, boolean) |  | 0% |  | 0% | 7 | 7 | 38 | 38 | 1 | 1 |
| computeSemiJoinSelectivity(RelMetadataQuery, RelNode, RelNode, List, List) |  | 0% |  | 0% | 9 | 9 | 26 | 26 | 1 | 1 |
| guessSelectivity(RexNode, boolean) |  | 0% |  | 0% | 10 | 10 | 19 | 19 | 1 | 1 |
| setAggChildKeys(ImmutableBitSet, Aggregate, ImmutableBitSet.Builder) |  | 0% |  | 0% | 4 | 4 | 11 | 11 | 1 | 1 |
| splitCols(List, ImmutableBitSet, ImmutableBitSet.Builder, ImmutableBitSet.Builder) |  | 0% |  | 0% | 5 | 5 | 10 | 10 | 1 | 1 |
| getJoinPopulationSize(RelMetadataQuery, RelNode, ImmutableBitSet) |  | 0% |  | 0% | 2 | 2 | 14 | 14 | 1 | 1 |
| addEpsilon(double) |  | 0% |  | 0% | 6 | 6 | 11 | 11 | 1 | 1 |
| getSemiJoinDistinctRowCount(Join, RelMetadataQuery, ImmutableBitSet, RexNode) |  | 0% |  | 0% | 5 | 5 | 9 | 9 | 1 | 1 |
| linear(int, int, int, double, double) |  | 0% |  | 0% | 5 | 5 | 7 | 7 | 1 | 1 |
| alreadySmaller(RelMetadataQuery, RelNode, RexNode, RexNode) |  | 0% |  | 0% | 7 | 7 | 8 | 8 | 1 | 1 |
| getMinusRowCount(RelMetadataQuery, Minus) |  | 0% |  | 0% | 3 | 3 | 7 | 7 | 1 | 1 |
| isPercentage(Double, boolean) |  | 0% |  | 0% | 8 | 8 | 9 | 9 | 1 | 1 |
| alreadySorted(RelMetadataQuery, RelNode, RelCollation) |  | 0% |  | 0% | 5 | 5 | 10 | 10 | 1 | 1 |
| getSelectivityValue(RexNode) |  | 0% |  | 0% | 5 | 5 | 5 | 5 | 1 | 1 |
| validateResult(Double) |  | 0% |  | 0% | 6 | 6 | 8 | 8 | 1 | 1 |
| makeSemiJoinSelectivityRexNode(RelMetadataQuery, Join) |  | 0% | | n/a | 1 | 1 | 5 | 5 | 1 | 1 |
| setLeftRightBitmaps(ImmutableBitSet, ImmutableBitSet.Builder, ImmutableBitSet.Builder, int) |  | 0% |  | 0% | 3 | 3 | 6 | 6 | 1 | 1 |
| areColumnsUniqueWhenNullsFiltered(RelMetadataQuery, RelNode, List) |  | 0% |  | 0% | 2 | 2 | 5 | 5 | 1 | 1 |
| areColumnsUnique(RelMetadataQuery, RelNode, List) |  | 0% |  | 0% | 2 | 2 | 5 | 5 | 1 | 1 |
| getUnionAllRowCount(RelMetadataQuery, Union) |  | 0% |  | 0% | 2 | 2 | 5 | 5 | 1 | 1 |
| isNonNegative(Double, boolean) |  | 0% |  | 0% | 5 | 5 | 6 | 6 | 1 | 1 |
| unionPreds(RexBuilder, RexNode, RexNode) |  | 0% | | n/a | 1 | 1 | 4 | 4 | 1 | 1 |
| estimateFilteredRows(RelNode, RexProgram, RelMetadataQuery) |  | 0% |  | 0% | 2 | 2 | 5 | 5 | 1 | 1 |
| minusPreds(RexBuilder, RexNode, RexNode) |  | 0% | | n/a | 1 | 1 | 4 | 4 | 1 | 1 |
| areColumnsDefinitelyUnique(RelMetadataQuery, RelNode, ImmutableBitSet) |  | 0% |  | 0% | 3 | 3 | 2 | 2 | 1 | 1 |
| areColumnsDefinitelyUniqueWhenNullsFiltered(RelMetadataQuery, RelNode, ImmutableBitSet) |  | 0% |  | 0% | 3 | 3 | 2 | 2 | 1 | 1 |
| checkInputForCollationAndLimit(RelMetadataQuery, RelNode, RelCollation, RexNode, RexNode) |  | 0% |  | 0% | 3 | 3 | 1 | 1 | 1 | 1 |
| areColumnsDefinitelyUnique(RelMetadataQuery, RelNode, List) |  | 0% |  | 0% | 3 | 3 | 2 | 2 | 1 | 1 |
| areColumnsDefinitelyUniqueWhenNullsFiltered(RelMetadataQuery, RelNode, List) |  | 0% |  | 0% | 3 | 3 | 2 | 2 | 1 | 1 |
| static {...} |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| isRelDefinitelyEmpty(RelMetadataQuery, RelNode) |  | 0% |  | 0% | 3 | 3 | 2 | 2 | 1 | 1 |
| isRelDefinitelyNotEmpty(RelMetadataQuery, RelNode) |  | 0% |  | 0% | 3 | 3 | 2 | 2 | 1 | 1 |
| estimateFilteredRows(RelNode, RexNode, RelMetadataQuery) |  | 0% | | n/a | 1 | 1 | 3 | 3 | 1 | 1 |
| validatePercentage(Double) |  | 0% |  | 0% | 3 | 3 | 2 | 2 | 1 | 1 |
| computeSemiJoinSelectivity(RelMetadataQuery, RelNode, RelNode, Join) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| cardOfProjExpr(RelMetadataQuery, Project, RexNode) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| capInfinity(Double) |  | 0% |  | 0% | 2 | 2 | 1 | 1 | 1 | 1 |
| clearCache(RelNode) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| guessSelectivity(RexNode) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |