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)