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]

Reply via email to