[SPARK-2093] [SQL] NullPropagation should use exact type value.
`NullPropagation` should use exact type value when transform `Count` or `Sum`. Author: Takuya UESHIN <ueshin@happy-camper.st> Closes #1034 from ueshin/issues/SPARK-2093 and squashes the following commits: 65b6ff1 [Takuya UESHIN] Modify the literal value of the result of transformation from Sum to long value. 830c20b [Takuya UESHIN] Add Cast to the result of transformation from Count. 9314806 [Takuya UESHIN] Fix NullPropagation to use exact type value.
This commit is contained in:
parent
601032f5bf
commit
0402bd77ec
|
@ -104,8 +104,8 @@ object ColumnPruning extends Rule[LogicalPlan] {
|
|||
object NullPropagation extends Rule[LogicalPlan] {
|
||||
def apply(plan: LogicalPlan): LogicalPlan = plan transform {
|
||||
case q: LogicalPlan => q transformExpressionsUp {
|
||||
case e @ Count(Literal(null, _)) => Literal(0, e.dataType)
|
||||
case e @ Sum(Literal(c, _)) if c == 0 => Literal(0, e.dataType)
|
||||
case e @ Count(Literal(null, _)) => Cast(Literal(0L), e.dataType)
|
||||
case e @ Sum(Literal(c, _)) if c == 0 => Cast(Literal(0L), e.dataType)
|
||||
case e @ Average(Literal(c, _)) if c == 0 => Literal(0.0, e.dataType)
|
||||
case e @ IsNull(c) if c.nullable == false => Literal(false, BooleanType)
|
||||
case e @ IsNotNull(c) if c.nullable == false => Literal(true, BooleanType)
|
||||
|
|
Loading…
Reference in a new issue