This is an automated email from the ASF dual-hosted git repository. srowen pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/spark.git
The following commit(s) were added to refs/heads/master by this push: new b99f58a [SPARK-38267][CORE][SQL][SS] Replace pattern matches on boolean expressions with conditional statements b99f58a is described below commit b99f58a57c880ed9cdec3d37ac8683c31daa4c10 Author: yangjie01 <yangji...@baidu.com> AuthorDate: Sun Mar 6 19:26:45 2022 -0600 [SPARK-38267][CORE][SQL][SS] Replace pattern matches on boolean expressions with conditional statements ### What changes were proposed in this pull request? This pr uses `conditional statements` to simplify `pattern matches on boolean`: **Before** ```scala val bool: Boolean bool match { case true => do something when bool is true case false => do something when bool is false } ``` **After** ```scala val bool: Boolean if (bool) { do something when bool is true } else { do something when bool is false } ``` ### Why are the changes needed? Simplify unnecessary pattern match. ### Does this PR introduce _any_ user-facing change? No ### How was this patch tested? Pass GA Closes #35589 from LuciferYang/trivial-match. Authored-by: yangjie01 <yangji...@baidu.com> Signed-off-by: Sean Owen <sro...@gmail.com> --- .../BlockManagerDecommissionIntegrationSuite.scala | 7 +-- .../catalyst/expressions/datetimeExpressions.scala | 50 +++++++++++----------- .../spark/sql/catalyst/parser/AstBuilder.scala | 14 +++--- .../sql/internal/ExecutorSideSQLConfSuite.scala | 7 +-- .../streaming/FlatMapGroupsWithStateSuite.scala | 7 +-- 5 files changed, 43 insertions(+), 42 deletions(-) diff --git a/core/src/test/scala/org/apache/spark/storage/BlockManagerDecommissionIntegrationSuite.scala b/core/src/test/scala/org/apache/spark/storage/BlockManagerDecommissionIntegrationSuite.scala index 8999a12..e004c33 100644 --- a/core/src/test/scala/org/apache/spark/storage/BlockManagerDecommissionIntegrationSuite.scala +++ b/core/src/test/scala/org/apache/spark/storage/BlockManagerDecommissionIntegrationSuite.scala @@ -165,9 +165,10 @@ class BlockManagerDecommissionIntegrationSuite extends SparkFunSuite with LocalS } x.map(y => (y, y)) } - val testRdd = shuffle match { - case true => baseRdd.reduceByKey(_ + _) - case false => baseRdd + val testRdd = if (shuffle) { + baseRdd.reduceByKey(_ + _) + } else { + baseRdd } // Listen for the job & block updates diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/datetimeExpressions.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/datetimeExpressions.scala index 8b5a387..d8cf474 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/datetimeExpressions.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/datetimeExpressions.scala @@ -2903,25 +2903,25 @@ case class SubtractTimestamps( @transient private lazy val zoneIdInEval: ZoneId = zoneIdForType(left.dataType) @transient - private lazy val evalFunc: (Long, Long) => Any = legacyInterval match { - case false => (leftMicros, rightMicros) => - subtractTimestamps(leftMicros, rightMicros, zoneIdInEval) - case true => (leftMicros, rightMicros) => + private lazy val evalFunc: (Long, Long) => Any = if (legacyInterval) { + (leftMicros, rightMicros) => new CalendarInterval(0, 0, leftMicros - rightMicros) + } else { + (leftMicros, rightMicros) => + subtractTimestamps(leftMicros, rightMicros, zoneIdInEval) } override def nullSafeEval(leftMicros: Any, rightMicros: Any): Any = { evalFunc(leftMicros.asInstanceOf[Long], rightMicros.asInstanceOf[Long]) } - override def doGenCode(ctx: CodegenContext, ev: ExprCode): ExprCode = legacyInterval match { - case false => - val zid = ctx.addReferenceObj("zoneId", zoneIdInEval, classOf[ZoneId].getName) - val dtu = DateTimeUtils.getClass.getName.stripSuffix("$") - defineCodeGen(ctx, ev, (l, r) => s"""$dtu.subtractTimestamps($l, $r, $zid)""") - case true => - defineCodeGen(ctx, ev, (end, start) => - s"new org.apache.spark.unsafe.types.CalendarInterval(0, 0, $end - $start)") + override def doGenCode(ctx: CodegenContext, ev: ExprCode): ExprCode = if (legacyInterval) { + defineCodeGen(ctx, ev, (end, start) => + s"new org.apache.spark.unsafe.types.CalendarInterval(0, 0, $end - $start)") + } else { + val zid = ctx.addReferenceObj("zoneId", zoneIdInEval, classOf[ZoneId].getName) + val dtu = DateTimeUtils.getClass.getName.stripSuffix("$") + defineCodeGen(ctx, ev, (l, r) => s"""$dtu.subtractTimestamps($l, $r, $zid)""") } override def toString: String = s"($left - $right)" @@ -2961,26 +2961,26 @@ case class SubtractDates( } @transient - private lazy val evalFunc: (Int, Int) => Any = legacyInterval match { - case false => (leftDays: Int, rightDays: Int) => + private lazy val evalFunc: (Int, Int) => Any = if (legacyInterval) { + (leftDays: Int, rightDays: Int) => subtractDates(leftDays, rightDays) + } else { + (leftDays: Int, rightDays: Int) => Math.multiplyExact(Math.subtractExact(leftDays, rightDays), MICROS_PER_DAY) - case true => (leftDays: Int, rightDays: Int) => subtractDates(leftDays, rightDays) } override def nullSafeEval(leftDays: Any, rightDays: Any): Any = { evalFunc(leftDays.asInstanceOf[Int], rightDays.asInstanceOf[Int]) } - override def doGenCode(ctx: CodegenContext, ev: ExprCode): ExprCode = legacyInterval match { - case false => - val m = classOf[Math].getName - defineCodeGen(ctx, ev, (leftDays, rightDays) => - s"$m.multiplyExact($m.subtractExact($leftDays, $rightDays), ${MICROS_PER_DAY}L)") - case true => - defineCodeGen(ctx, ev, (leftDays, rightDays) => { - val dtu = DateTimeUtils.getClass.getName.stripSuffix("$") - s"$dtu.subtractDates($leftDays, $rightDays)" - }) + override def doGenCode(ctx: CodegenContext, ev: ExprCode): ExprCode = if (legacyInterval) { + defineCodeGen(ctx, ev, (leftDays, rightDays) => { + val dtu = DateTimeUtils.getClass.getName.stripSuffix("$") + s"$dtu.subtractDates($leftDays, $rightDays)" + }) + } else { + val m = classOf[Math].getName + defineCodeGen(ctx, ev, (leftDays, rightDays) => + s"$m.multiplyExact($m.subtractExact($leftDays, $rightDays), ${MICROS_PER_DAY}L)") } override def toString: String = s"($left - $right)" diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/parser/AstBuilder.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/parser/AstBuilder.scala index 2e56df7..64d5486 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/parser/AstBuilder.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/parser/AstBuilder.scala @@ -2580,11 +2580,10 @@ class AstBuilder extends SqlBaseParserBaseVisitor[AnyRef] with SQLConfHelper wit } if (values(i).MINUS() == null) { value + } else if (value.startsWith("-")) { + value.replaceFirst("-", "") } else { - value.startsWith("-") match { - case true => value.replaceFirst("-", "") - case false => s"-$value" - } + s"-$value" } } else { values(i).getText @@ -2609,11 +2608,10 @@ class AstBuilder extends SqlBaseParserBaseVisitor[AnyRef] with SQLConfHelper wit val value = Option(ctx.intervalValue.STRING).map(string).map { interval => if (ctx.intervalValue().MINUS() == null) { interval + } else if (interval.startsWith("-")) { + interval.replaceFirst("-", "") } else { - interval.startsWith("-") match { - case true => interval.replaceFirst("-", "") - case false => s"-$interval" - } + s"-$interval" } }.getOrElse { throw QueryParsingErrors.invalidFromToUnitValueError(ctx.intervalValue) diff --git a/sql/core/src/test/scala/org/apache/spark/sql/internal/ExecutorSideSQLConfSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/internal/ExecutorSideSQLConfSuite.scala index 057bb34..0d1ab5e 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/internal/ExecutorSideSQLConfSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/internal/ExecutorSideSQLConfSuite.scala @@ -139,9 +139,10 @@ class ExecutorSideSQLConfSuite extends SparkFunSuite with SQLTestUtils { Seq(true) .toDF() .mapPartitions { _ => - TaskContext.get.getLocalProperty(confKey) == confValue match { - case true => Iterator(true) - case false => Iterator.empty + if (TaskContext.get.getLocalProperty(confKey) == confValue) { + Iterator(true) + } else { + Iterator.empty } } } diff --git a/sql/core/src/test/scala/org/apache/spark/sql/streaming/FlatMapGroupsWithStateSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/streaming/FlatMapGroupsWithStateSuite.scala index d34b2b8..5d3fcd5 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/streaming/FlatMapGroupsWithStateSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/streaming/FlatMapGroupsWithStateSuite.scala @@ -427,9 +427,10 @@ class FlatMapGroupsWithStateSuite extends StateStoreMetricsTest { timeoutConf: GroupStateTimeout, procTime: Long, watermarkPresent: Boolean): GroupState[Int] = { - val eventTimeWatermarkMs = watermarkPresent match { - case true => Optional.of(1000L) - case false => Optional.empty[Long] + val eventTimeWatermarkMs = if (watermarkPresent) { + Optional.of(1000L) + } else { + Optional.empty[Long] } TestGroupState.create[Int]( Optional.of(1000), timeoutConf, procTime, eventTimeWatermarkMs, hasTimedOut = false) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@spark.apache.org For additional commands, e-mail: commits-h...@spark.apache.org