From c84e05e5a6ea5d82886e09f689ebfe3937e4edb5 Mon Sep 17 00:00:00 2001 From: Haoyang Li Date: Fri, 13 Dec 2024 15:46:41 +0800 Subject: [PATCH] foldLeft again Signed-off-by: Haoyang Li --- .../spark/sql/rapids/stringFunctions.scala | 23 +++++-------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/sql-plugin/src/main/scala/org/apache/spark/sql/rapids/stringFunctions.scala b/sql-plugin/src/main/scala/org/apache/spark/sql/rapids/stringFunctions.scala index b026aa2ae9d..b27d30506f8 100644 --- a/sql-plugin/src/main/scala/org/apache/spark/sql/rapids/stringFunctions.scala +++ b/sql-plugin/src/main/scala/org/apache/spark/sql/rapids/stringFunctions.scala @@ -1247,26 +1247,15 @@ case class GpuContainsAny(input: Expression, targets: Seq[UTF8String]) val boolCvs = withResource(ColumnVector.fromUTF8Strings(targetsBytes: _*)) { targetsCv => input.getBase.stringContains(targetsCv) } - // withResource(boolCvs.tail) { _ => - // // boolCvs.head and intermediate values are closed within the withResource in the lambda - // boolCvs.tail.foldLeft(boolCvs.head)((l, r) => withResource(l) { _ => l.or(r)}) - // } - var ret: ColumnVector = null - closeOnExcept(boolCvs) { _ => - boolCvs.indices.foreach { i => - if (ret == null) { - ret = boolCvs(i) - boolCvs(i) = null - } else { - val tmp = ret.or(boolCvs(i)) - ret.close() - ret = tmp - boolCvs(i).close() - boolCvs(i) = null + closeOnExcept(boolCvs.tail) { _ => + boolCvs.tail.foldLeft(boolCvs.head) { + (l, r) => withResource(l) { _ => + withResource(r) { _ => + l.or(r) + } } } } - ret } }