(If there's a better target for an issue request, please let me know!) While trying to understand the details Calcite rule execution, I turned on the Calcite tracing per https://calcite.incubator.apache.org/docs/howto.html#tracing . At that point (running a query from the web UI) I get the error
Query Failed: An Error Occurred org.apache.drill.common.exceptions.UserRemoteException: SYSTEM ERROR: AssertionError: Internal error: should never get here ... The query is pretty straightforward: select Person, sum(Qty1) from mongo.mine.test group by Person A simple trial with the same settings against the Apache Calcite example/csv doesn't show the same behavior. (Calcite query: SELECT DEPTNO, SUM(EMPNO) FROM emps GROUP BY DEPTNO ; ) In Drill, I'm querying against a Mongo db but the code path in the exception trace doesn't immediately appear to be relevant for that. It seems to happen the very first time dumpGraph is called. The innermost cause (in all its glory) is due to the method: @Override public RelOptCost computeSelfCost(RelOptPlanner planner) { // HepRelMetadataProvider is supposed to intercept this // and redirect to the real rels. throw Util.newInternal("should never get here"); } and the trace is: cause { exception_class: "java.lang.AssertionError" message: "Internal error: should never get here" stack_trace { class_name: "org.apache.calcite.util.Util" file_name: "Util.java" line_number: 775 method_name: "newInternal" is_native_method: false } stack_trace { class_name: "org.apache.calcite.plan.hep.HepRelVertex" file_name: "HepRelVertex.java" line_number: 68 method_name: "computeSelfCost" is_native_method: false } stack_trace { class_name: "org.apache.calcite.rel.metadata.RelMdPercentageOriginalRows" file_name: "RelMdPercentageOriginalRows.java" line_number: 165 method_name: "getNonCumulativeCost" is_native_method: false } stack_trace { class_name: "..." line_number: 0 method_name: "..." is_native_method: false } stack_trace { class_name: "org.apache.calcite.rel.metadata.ReflectiveRelMetadataProvider$2$1" file_name: "ReflectiveRelMetadataProvider.java" line_number: 194 method_name: "invoke" is_native_method: false } stack_trace { class_name: "..." line_number: 0 method_name: "..." is_native_method: false } stack_trace { class_name: "org.apache.calcite.rel.metadata.RelMetadataQuery" file_name: "RelMetadataQuery.java" line_number: 115 method_name: "getNonCumulativeCost" is_native_method: false } stack_trace { class_name: "org.apache.calcite.rel.metadata.RelMdPercentageOriginalRows" file_name: "RelMdPercentageOriginalRows.java" line_number: 151 method_name: "getCumulativeCost" is_native_method: false } stack_trace { class_name: "..." line_number: 0 method_name: "..." is_native_method: false } stack_trace { class_name: "org.apache.calcite.rel.metadata.ReflectiveRelMetadataProvider$2$1" file_name: "ReflectiveRelMetadataProvider.java" line_number: 194 method_name: "invoke" is_native_method: false } stack_trace { class_name: "..." line_number: 0 method_name: "..." is_native_method: false } stack_trace { class_name: "org.apache.calcite.rel.metadata.RelMetadataQuery" file_name: "RelMetadataQuery.java" line_number: 101 method_name: "getCumulativeCost" is_native_method: false } stack_trace { class_name: "org.apache.calcite.rel.metadata.RelMdPercentageOriginalRows" file_name: "RelMdPercentageOriginalRows.java" line_number: 154 method_name: "getCumulativeCost" is_native_method: false } stack_trace { class_name: "..." line_number: 0 method_name: "..." is_native_method: false } stack_trace { class_name: "org.apache.calcite.rel.metadata.ReflectiveRelMetadataProvider$2$1" file_name: "ReflectiveRelMetadataProvider.java" line_number: 194 method_name: "invoke" is_native_method: false } stack_trace { class_name: "..." line_number: 0 method_name: "..." is_native_method: false } stack_trace { class_name: "org.apache.calcite.rel.metadata.RelMetadataQuery" file_name: "RelMetadataQuery.java" line_number: 101 method_name: "getCumulativeCost" is_native_method: false } stack_trace { class_name: "org.apache.calcite.plan.AbstractRelOptPlanner" file_name: "AbstractRelOptPlanner.java" line_number: 251 method_name: "getCost" is_native_method: false } stack_trace { class_name: "org.apache.calcite.plan.hep.HepPlanner" file_name: "HepPlanner.java" line_number: 962 method_name: "dumpGraph" is_native_method: false } stack_trace { class_name: "org.apache.calcite.plan.hep.HepPlanner" file_name: "HepPlanner.java" line_number: 151 method_name: "setRoot" is_native_method: false } stack_trace { class_name: "org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler" file_name: "DefaultSqlHandler.java" line_number: 449 method_name: "convertToRel" is_native_method: false } stack_trace { class_name: "org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler" file_name: "DefaultSqlHandler.java" line_number: 191 method_name: "validateAndConvert" is_native_method: false } stack_trace { class_name: "org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler" file_name: "DefaultSqlHandler.java" line_number: 157 method_name: "getPlan" is_native_method: false } stack_trace { class_name: "org.apache.drill.exec.planner.sql.DrillSqlWorker" file_name: "DrillSqlWorker.java" line_number: 178 method_name: "getPlan" is_native_method: false } stack_trace { class_name: "org.apache.drill.exec.work.foreman.Foreman" file_name: "Foreman.java" line_number: 903 method_name: "runSQL" is_native_method: false } stack_trace { class_name: "org.apache.drill.exec.work.foreman.Foreman" file_name: "Foreman.java" line_number: 242 method_name: "run" is_native_method: false } stack_trace { class_name: "..." line_number: 0 method_name: "..." is_native_method: false } } The mongo database is simplicity itself, for repro purposes: { "Date" : "4/4/2014", "Person" : "Bob", "Qty1" : 45, "Qty2" : 52 } { "Date" : "4/12/2014", "Person" : "Sarah", "Qty1" : 10, "Qty2" : 14 } { "Date" : "4/12/2014", "Person" : "Bob", "Qty1" : 72, "Qty2" : 33 } { "Date" : "5/1/2014", "Person" : "Agnes", "Qty1" : 24, "Qty2" : 25 } { "Date" : "5/2/2014", "Person" : "Sarah", "Qty1" : 86, "Qty2" : 4 } { "Date" : "5/6/2014", "Person" : "Bob", "Qty1" : 17, "Qty2" : 4 } loaded with `mongoimport --db mine --collection test --drop --file c:/tmp/work1a.json` Thank you for any pointers.