fa zheng created FLINK-19101: -------------------------------- Summary: The SelectivityEstimator throw an NullPointerException when convertValueInterval with string type Key: FLINK-19101 URL: https://issues.apache.org/jira/browse/FLINK-19101 Project: Flink Issue Type: Bug Components: Table SQL / Planner Affects Versions: 1.11.1, 1.10.2 Reporter: fa zheng Fix For: 1.12.0
For a SQL : select t1.a, t2.b from t1 join t2 on t1.b=t2.b and t1.b<'2' It will throw java.lang.NullPointerException because SelectivityEstimator convert character value interval to string without considering null situation. {code:scala} def convertValueInterval( interval: ValueInterval, typeFamily: RelDataTypeFamily): ValueInterval = { require(interval != null && typeFamily != null) interval match { case ValueInterval.empty | ValueInterval.infinite => interval case _ => val (lower, includeLower) = interval match { case li: WithLower => (li.lower, li.includeLower) case _ => (null, false) } val (upper, includeUpper) = interval match { case ui: WithUpper => (ui.upper, ui.includeUpper) case _ => (null, false) } typeFamily match { case SqlTypeFamily.NUMERIC | SqlTypeFamily.BOOLEAN | SqlTypeFamily.DATE | SqlTypeFamily.TIME | SqlTypeFamily.TIMESTAMP => ValueInterval( comparableToDouble(lower), comparableToDouble(upper), includeLower, includeUpper) case SqlTypeFamily.CHARACTER => ValueInterval( {color:red} lower.toString, upper.toString,{color} includeLower, includeUpper) case _ => throw new UnsupportedOperationException(s"Unsupported typeFamily: $typeFamily") } } } {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)