Vladimir Sitnikov created CALCITE-4327: ------------------------------------------
Summary: RelBuilder#scan(...) should work when used in RelRule#onMatch as call.builder() Key: CALCITE-4327 URL: https://issues.apache.org/jira/browse/CALCITE-4327 Project: Calcite Issue Type: Sub-task Components: core Affects Versions: 1.26.0 Reporter: Vladimir Sitnikov It turns out {{RelBuilder#relOptSchema}} is often null. For instance, {code:java} public abstract class RelOptRuleCall { public RelBuilder builder() { return rule.relBuilderFactory.create(rel(0).getCluster(), /* schema= */ null); } {code} It leads to NPE in user code. I suggest either populate {{relOptSchema}} with root schema by default or remove the field to avoid confusion for those who would try {{scan(...)}} method. It might make sense to add RelOptSchema parameter to {{scan(Iterable<String>)}} method as well. Sample use case: {code:java} @Override public void onMatch(RelOptRuleCall call) { List<String> indexName = ...; RelBuilder relBuilder = call.builder() .scan(indexName); {code} {noformat} Caused by: java.lang.NullPointerException at org.apache.calcite.tools.RelBuilder.scan(RelBuilder.java:1094) at com.github.vlsi.mat.calcite.schema.objects.InstanceAccessByClassIdRule.onMatch(InstanceAccessByClassIdRule.java:44) at org.apache.calcite.plan.volcano.VolcanoRuleCall.onMatch(VolcanoRuleCall.java:229) ... 75 more {noformat} -- This message was sent by Atlassian Jira (v8.3.4#803005)