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 <[email protected]>
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 <[email protected]>
Signed-off-by: Sean Owen <[email protected]>
---
.../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: [email protected]
For additional commands, e-mail: [email protected]