Skip to content
Snippets Groups Projects
Commit 1759cf69 authored by Herman van Hovell's avatar Herman van Hovell Committed by Reynold Xin
Browse files

[SPARK-18058][SQL][TRIVIAL] Use dataType.sameResult(...) instead equality on asNullable datatypes

## What changes were proposed in this pull request?
This is absolutely minor. PR https://github.com/apache/spark/pull/15595

 uses `dt1.asNullable == dt2.asNullable` expressions in a few places. It is however more efficient to call `dt1.sameType(dt2)`. I have replaced every instance of the first pattern with the second pattern (3/5 were introduced by #15595).

## How was this patch tested?
Existing tests.

Author: Herman van Hovell <hvanhovell@databricks.com>

Closes #16041 from hvanhovell/SPARK-18058.

(cherry picked from commit d449988b)
Signed-off-by: default avatarReynold Xin <rxin@databricks.com>
parent c4cbdc86
No related branches found
No related tags found
No related merge requests found
...@@ -306,7 +306,7 @@ trait CheckAnalysis extends PredicateHelper { ...@@ -306,7 +306,7 @@ trait CheckAnalysis extends PredicateHelper {
// Check if the data types match. // Check if the data types match.
dataTypes(child).zip(ref).zipWithIndex.foreach { case ((dt1, dt2), ci) => dataTypes(child).zip(ref).zipWithIndex.foreach { case ((dt1, dt2), ci) =>
// SPARK-18058: we shall not care about the nullability of columns // SPARK-18058: we shall not care about the nullability of columns
if (dt1.asNullable != dt2.asNullable) { if (!dt1.sameType(dt2)) {
failAnalysis( failAnalysis(
s""" s"""
|${operator.nodeName} can only be performed on tables with the compatible |${operator.nodeName} can only be performed on tables with the compatible
......
...@@ -41,7 +41,7 @@ case class If(predicate: Expression, trueValue: Expression, falseValue: Expressi ...@@ -41,7 +41,7 @@ case class If(predicate: Expression, trueValue: Expression, falseValue: Expressi
if (predicate.dataType != BooleanType) { if (predicate.dataType != BooleanType) {
TypeCheckResult.TypeCheckFailure( TypeCheckResult.TypeCheckFailure(
s"type of predicate expression in If should be boolean, not ${predicate.dataType}") s"type of predicate expression in If should be boolean, not ${predicate.dataType}")
} else if (trueValue.dataType.asNullable != falseValue.dataType.asNullable) { } else if (!trueValue.dataType.sameType(falseValue.dataType)) {
TypeCheckResult.TypeCheckFailure(s"differing types in '$sql' " + TypeCheckResult.TypeCheckFailure(s"differing types in '$sql' " +
s"(${trueValue.dataType.simpleString} and ${falseValue.dataType.simpleString}).") s"(${trueValue.dataType.simpleString} and ${falseValue.dataType.simpleString}).")
} else { } else {
......
...@@ -135,7 +135,7 @@ abstract class SetOperation(left: LogicalPlan, right: LogicalPlan) extends Binar ...@@ -135,7 +135,7 @@ abstract class SetOperation(left: LogicalPlan, right: LogicalPlan) extends Binar
childrenResolved && childrenResolved &&
left.output.length == right.output.length && left.output.length == right.output.length &&
left.output.zip(right.output).forall { case (l, r) => left.output.zip(right.output).forall { case (l, r) =>
l.dataType.asNullable == r.dataType.asNullable l.dataType.sameType(r.dataType)
} && duplicateResolved } && duplicateResolved
} }
...@@ -212,8 +212,8 @@ case class Union(children: Seq[LogicalPlan]) extends LogicalPlan { ...@@ -212,8 +212,8 @@ case class Union(children: Seq[LogicalPlan]) extends LogicalPlan {
child.output.length == children.head.output.length && child.output.length == children.head.output.length &&
// compare the data types with the first child // compare the data types with the first child
child.output.zip(children.head.output).forall { child.output.zip(children.head.output).forall {
case (l, r) => l.dataType.asNullable == r.dataType.asNullable } case (l, r) => l.dataType.sameType(r.dataType)
) })
children.length > 1 && childrenResolved && allChildrenCompatible children.length > 1 && childrenResolved && allChildrenCompatible
} }
......
...@@ -163,7 +163,7 @@ case class DataSourceAnalysis(conf: CatalystConf) extends Rule[LogicalPlan] { ...@@ -163,7 +163,7 @@ case class DataSourceAnalysis(conf: CatalystConf) extends Rule[LogicalPlan] {
case i @ logical.InsertIntoTable( case i @ logical.InsertIntoTable(
l @ LogicalRelation(t: HadoopFsRelation, _, table), part, query, overwrite, false) l @ LogicalRelation(t: HadoopFsRelation, _, table), part, query, overwrite, false)
if query.resolved && t.schema.asNullable == query.schema.asNullable => if query.resolved && t.schema.sameType(query.schema) =>
// Sanity checks // Sanity checks
if (t.location.rootPaths.size != 1) { if (t.location.rootPaths.size != 1) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment