@@ -218,12 +218,12 @@ object NullPropagation extends Rule[LogicalPlan] {
218218 def apply (plan : LogicalPlan ): LogicalPlan = plan transform {
219219 case q : LogicalPlan => q transformExpressionsUp {
220220 case e @ Count (Literal (null , _)) => Cast (Literal (0L ), e.dataType)
221- case e @ IsNull (c) if ! c.nullable => Literal (false , BooleanType )
222- case e @ IsNotNull (c) if ! c.nullable => Literal (true , BooleanType )
223- case e @ GetItem (Literal (null , _), _) => Literal (null , e.dataType)
224- case e @ GetItem (_, Literal (null , _)) => Literal (null , e.dataType)
225- case e @ StructGetField (Literal (null , _), _, _) => Literal (null , e.dataType)
226- case e @ ArrayGetField (Literal (null , _), _, _, _) => Literal (null , e.dataType)
221+ case e @ IsNull (c) if ! c.nullable => Literal .create (false , BooleanType )
222+ case e @ IsNotNull (c) if ! c.nullable => Literal .create (true , BooleanType )
223+ case e @ GetItem (Literal (null , _), _) => Literal .create (null , e.dataType)
224+ case e @ GetItem (_, Literal (null , _)) => Literal .create (null , e.dataType)
225+ case e @ StructGetField (Literal (null , _), _, _) => Literal .create (null , e.dataType)
226+ case e @ ArrayGetField (Literal (null , _), _, _, _) => Literal .create (null , e.dataType)
227227 case e @ EqualNullSafe (Literal (null , _), r) => IsNull (r)
228228 case e @ EqualNullSafe (l, Literal (null , _)) => IsNull (l)
229229 case e @ Count (expr) if ! expr.nullable => Count (Literal (1 ))
@@ -235,36 +235,36 @@ object NullPropagation extends Rule[LogicalPlan] {
235235 case _ => true
236236 }
237237 if (newChildren.length == 0 ) {
238- Literal (null , e.dataType)
238+ Literal .create (null , e.dataType)
239239 } else if (newChildren.length == 1 ) {
240240 newChildren(0 )
241241 } else {
242242 Coalesce (newChildren)
243243 }
244244
245- case e @ Substring (Literal (null , _), _, _) => Literal (null , e.dataType)
246- case e @ Substring (_, Literal (null , _), _) => Literal (null , e.dataType)
247- case e @ Substring (_, _, Literal (null , _)) => Literal (null , e.dataType)
245+ case e @ Substring (Literal (null , _), _, _) => Literal .create (null , e.dataType)
246+ case e @ Substring (_, Literal (null , _), _) => Literal .create (null , e.dataType)
247+ case e @ Substring (_, _, Literal (null , _)) => Literal .create (null , e.dataType)
248248
249249 // Put exceptional cases above if any
250250 case e : BinaryArithmetic => e.children match {
251- case Literal (null , _) :: right :: Nil => Literal (null , e.dataType)
252- case left :: Literal (null , _) :: Nil => Literal (null , e.dataType)
251+ case Literal (null , _) :: right :: Nil => Literal .create (null , e.dataType)
252+ case left :: Literal (null , _) :: Nil => Literal .create (null , e.dataType)
253253 case _ => e
254254 }
255255 case e : BinaryComparison => e.children match {
256- case Literal (null , _) :: right :: Nil => Literal (null , e.dataType)
257- case left :: Literal (null , _) :: Nil => Literal (null , e.dataType)
256+ case Literal (null , _) :: right :: Nil => Literal .create (null , e.dataType)
257+ case left :: Literal (null , _) :: Nil => Literal .create (null , e.dataType)
258258 case _ => e
259259 }
260260 case e : StringRegexExpression => e.children match {
261- case Literal (null , _) :: right :: Nil => Literal (null , e.dataType)
262- case left :: Literal (null , _) :: Nil => Literal (null , e.dataType)
261+ case Literal (null , _) :: right :: Nil => Literal .create (null , e.dataType)
262+ case left :: Literal (null , _) :: Nil => Literal .create (null , e.dataType)
263263 case _ => e
264264 }
265265 case e : StringComparison => e.children match {
266- case Literal (null , _) :: right :: Nil => Literal (null , e.dataType)
267- case left :: Literal (null , _) :: Nil => Literal (null , e.dataType)
266+ case Literal (null , _) :: right :: Nil => Literal .create (null , e.dataType)
267+ case left :: Literal (null , _) :: Nil => Literal .create (null , e.dataType)
268268 case _ => e
269269 }
270270 }
@@ -284,13 +284,13 @@ object ConstantFolding extends Rule[LogicalPlan] {
284284 case l : Literal => l
285285
286286 // Fold expressions that are foldable.
287- case e if e.foldable => Literal (e.eval(null ), e.dataType)
287+ case e if e.foldable => Literal .create (e.eval(null ), e.dataType)
288288
289289 // Fold "literal in (item1, item2, ..., literal, ...)" into true directly.
290290 case In (Literal (v, _), list) if list.exists {
291291 case Literal (candidate, _) if candidate == v => true
292292 case _ => false
293- } => Literal (true , BooleanType )
293+ } => Literal .create (true , BooleanType )
294294 }
295295 }
296296}
@@ -647,7 +647,7 @@ object DecimalAggregates extends Rule[LogicalPlan] {
647647
648648 case Average (e @ DecimalType .Expression (prec, scale)) if prec + 4 <= MAX_DOUBLE_DIGITS =>
649649 Cast (
650- Divide (Average (UnscaledValue (e)), Literal (math.pow(10.0 , scale), DoubleType )),
650+ Divide (Average (UnscaledValue (e)), Literal .create (math.pow(10.0 , scale), DoubleType )),
651651 DecimalType (prec + 4 , scale + 4 ))
652652 }
653653}
0 commit comments