| getQuery(RelDataType, Filter, Project, ImmutableBitSet, List, List, List, List, ImmutableBitSet, Integer, Project, Filter) |  | 0% |  | 0% | 26 | 26 | 90 | 90 | 1 | 1 |
| static {...} |  | 0% |  | 0% | 2 | 2 | 53 | 53 | 1 | 1 |
| deriveQuerySpec() |  | 0% |  | 0% | 17 | 17 | 43 | 43 | 1 | 1 |
| getJsonAggregation(String, AggregateCall, RexNode, String, String, DruidQuery) |  | 0% |  | 0% | 25 | 25 | 56 | 56 | 1 | 1 |
| planAsTimeSeries(List, DruidJsonFilter, List, List, List, DruidQuery.JsonLimit, DruidJsonFilter) |  | 0% |  | 0% | 21 | 21 | 54 | 54 | 1 | 1 |
| computeProjectGroupSet(Project, ImmutableBitSet, RelDataType, DruidQuery) |  | 0% |  | 0% | 10 | 10 | 45 | 45 | 1 | 1 |
| explainTerms(RelWriter) |  | 0% |  | 0% | 12 | 12 | 30 | 30 | 1 | 1 |
| toDruidColumn(RexNode, RelDataType, DruidQuery) |  | 0% |  | 0% | 17 | 17 | 54 | 54 | 1 | 1 |
| computeDruidJsonAgg(List, List, Project, DruidQuery) |  | 0% |  | 0% | 19 | 19 | 44 | 44 | 1 | 1 |
| isValid(Litmus, RelNode.Context) |  | 0% |  | 0% | 17 | 17 | 34 | 34 | 1 | 1 |
| computeProjectAsScan(Project, RelDataType, DruidQuery) |  | 0% |  | 0% | 10 | 10 | 42 | 42 | 1 | 1 |
| planAsTopN(List, DruidJsonFilter, List, List, List, DruidQuery.JsonLimit, DruidJsonFilter) |  | 0% |  | 0% | 11 | 11 | 33 | 33 | 1 | 1 |
| planAsGroupBy(List, DruidJsonFilter, List, List, List, DruidQuery.JsonLimit, DruidJsonFilter) |  | 0% |  | 0% | 4 | 4 | 24 | 24 | 1 | 1 |
| signature() |  | 0% |  | 0% | 13 | 13 | 14 | 14 | 1 | 1 |
| computeSort(Integer, List, List, ImmutableBitSet, List) |  | 0% |  | 0% | 5 | 5 | 15 | 15 | 1 | 1 |
| isValidLeafCast(RexNode) |  | 0% |  | 0% | 9 | 9 | 15 | 15 | 1 | 1 |
| writeObject(JsonGenerator, Object) |  | 0% |  | 0% | 6 | 6 | 14 | 14 | 1 | 1 |
| metadataQuery(String, List) |  | 0% | | n/a | 1 | 1 | 18 | 18 | 1 | 1 |
| computeSelfCost(RelOptPlanner, RelMetadataQuery) |  | 0% |  | 0% | 4 | 4 | 10 | 10 | 1 | 1 |
| DruidQuery(RelOptCluster, RelTraitSet, RelOptTable, DruidTable, List, List, Map) |  | 0% |  | 0% | 3 | 3 | 9 | 9 | 1 | 1 |
| register(RelOptPlanner) |  | 0% |  | 0% | 3 | 3 | 7 | 7 | 1 | 1 |
| create(RelOptCluster, RelTraitSet, RelOptTable, DruidTable, List) |  | 0% |  | 0% | 2 | 2 | 6 | 6 | 1 | 1 |
| extractColumnName(RexNode, RelDataType, DruidQuery) |  | 0% |  | 0% | 4 | 4 | 9 | 9 | 1 | 1 |
| getIntervalCostMultiplier() |  | 0% |  | 0% | 2 | 2 | 5 | 5 | 1 | 1 |
| extendQuery(DruidQuery, RelNode) |  | 0% | | n/a | 1 | 1 | 4 | 4 | 1 | 1 |
| computeFilter(Filter) |  | 0% |  | 0% | 3 | 3 | 8 | 8 | 1 | 1 |
| needUtcTimeExtract(RexNode) |  | 0% |  | 0% | 4 | 4 | 3 | 3 | 1 | 1 |
| writeArray(JsonGenerator, List) |  | 0% |  | 0% | 2 | 2 | 6 | 6 | 1 | 1 |
| getQueryTypeCostMultiplier() |  | 0% |  | 0% | 5 | 5 | 6 | 6 | 1 | 1 |
| extendQuery(DruidQuery, List) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| deriveRowType() |  | 0% | | n/a | 1 | 1 | 3 | 3 | 1 | 1 |
| getQuerySpec() |  | 0% |  | 0% | 2 | 2 | 4 | 4 | 1 | 1 |
| create(RelOptCluster, RelTraitSet, RelOptTable, DruidTable, List, List, Map) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| copy(RelTraitSet, List) |  | 0% |  | 0% | 3 | 3 | 2 | 2 | 1 | 1 |
| create(RelOptCluster, RelTraitSet, RelOptTable, DruidTable, List, Map) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| bind(DataContext) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getConnectionConfig() |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| lambda$getQuery$0(String, String) |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| implement(InterpretableRel.InterpreterImplementor) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| writeField(JsonGenerator, String, Object) |  | 0% | | n/a | 1 | 1 | 3 | 3 | 1 | 1 |
| writeFieldIf(JsonGenerator, String, Object) |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| getTimestampFieldIndex() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$getTimestampFieldIndex$1(RelDataTypeField) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getTableScan() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| isValidSignature(String) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| format(String, Object[]) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getTopNode() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getQueryType() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getQueryString() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getOperatorConversionMap() | | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getTable() | | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getDruidTable() | | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getElementType() | | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |