siddharthteotia commented on a change in pull request #7210: URL: https://github.com/apache/pinot/pull/7210#discussion_r677624261
########## File path: pinot-core/src/main/java/org/apache/pinot/core/query/explain/ExplainPlanUtils.java ########## @@ -0,0 +1,90 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.pinot.core.query.explain; + +import java.util.HashSet; +import java.util.List; +import org.apache.pinot.common.request.context.predicate.Predicate; +import org.apache.pinot.spi.config.table.FieldConfig; +import org.apache.pinot.spi.config.table.IndexingConfig; + + +/** + * Helper methods for processing EXPLAIN PLAN queries + */ +public class ExplainPlanUtils { + + private ExplainPlanUtils() { + } + + public static String getIndexUsed(String column, Predicate.Type predicateType, IndexingConfig indexingConfig, Review comment: @kishoreg As outlined in the design doc, the first phase focuses on building the plan at the broker from PinotQuery -> QueryContext. Since we walk the QueryContext (which is the same thing what server does), there shouldn't be any difference there. Coming to indexes used etc, at this point there is hardly any optimization today - Server builds the same plan for all segments (sorted index eval is done before inv index before scan etc) - The only thing that can change is the ordering of children under AND which should not matter to the output of EXPLAIN PLAN since the parent-child relationship does not change. So the indexes that are configured today in table config are used - which is what we have done in Phase 1 implementation phase mentioned in the design doc. Now if in future things change and more smarts are added to the server where it can potentially come up with drastically different plan for each segment, we had planned for phase 2 (not yet implemented). As part of that phase, the idea is to talk to one/few of the servers (and one/few segments to get an approximation plan) and get that information as part of response from server to broker and use the already implemented plan builder (in this PR) on the broker to put together final plan tree which will be sent to the user. We are still in the process of implementing that. But what we have here in the PR is full functional, well-tested phase 1 implementation. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
