Sounds great! Thanks for your effort. Does it require installing something in the developer's machine?
Best, Liya Fan On Sun, Sep 27, 2020 at 7:10 PM Vladimir Sitnikov < [email protected]> wrote: > Here's a sample issue: > > core/src/main/java/org/apache/calcite/sql/SqlBinaryOperator.java:161: > error: [dereference.of.nullable] dereference of possibly-null reference > call.getOperandLiteralValue(1, BigDecimal.class) > switch (call.getOperandLiteralValue(1, > BigDecimal.class).signum()) { > ^ > The code in question is > > @Override public SqlMonotonicity getMonotonicity(SqlOperatorBinding call) { > if (getName().equals("/")) { > final SqlMonotonicity mono0 = call.getOperandMonotonicity(0); > final SqlMonotonicity mono1 = call.getOperandMonotonicity(1); > if (mono1 == SqlMonotonicity.CONSTANT) { > if (call.isOperandLiteral(1, false)) { > switch (call.getOperandLiteralValue(1, BigDecimal.class).signum()) > { > case -1: > > > The error message suggests that the test for 1/null is missing, and it > turns out it is a true bug: > > @Test void testMonotonic() { > sql("select stream 1/null from orders") > .monotonic(SqlMonotonicity.CONSTANT); > > > java.lang.NullPointerException > at > > org.apache.calcite.sql.SqlBinaryOperator.getMonotonicity(SqlBinaryOperator.java:161) > at org.apache.calcite.sql.SqlCall.getMonotonicity(SqlCall.java:193) > at > > org.apache.calcite.sql.validate.SelectScope.getMonotonicity(SelectScope.java:159) > at > > org.apache.calcite.sql.validate.SelectNamespace.getMonotonicity(SelectNamespace.java:76) > at > > org.apache.calcite.sql.test.AbstractSqlTester.checkMonotonic(AbstractSqlTester.java:497) > at > > org.apache.calcite.test.SqlValidatorTestCase$Sql.monotonic(SqlValidatorTestCase.java:373) > > Vladimir >
