diff --git a/sql-plugin/src/main/scala/com/nvidia/spark/rapids/GpuOverrides.scala b/sql-plugin/src/main/scala/com/nvidia/spark/rapids/GpuOverrides.scala index fef7bea85dd..573c22e3312 100644 --- a/sql-plugin/src/main/scala/com/nvidia/spark/rapids/GpuOverrides.scala +++ b/sql-plugin/src/main/scala/com/nvidia/spark/rapids/GpuOverrides.scala @@ -3501,6 +3501,34 @@ object GpuOverrides extends Logging { ("src", TypeSig.STRING, TypeSig.STRING), ("search", TypeSig.lit(TypeEnum.STRING), TypeSig.STRING)), (a, conf, p, r) => new BinaryExprMeta[Like](a, conf, p, r) { + override def tagExprForGpu(): Unit = { + a.right match { + case Literal(v: UTF8String, _) => + val pattern = v.toString + val esc = a.escapeChar + var i = 0 + while (i < pattern.length) { + if (pattern.charAt(i) == esc) { + val j = i + 1 + if (j >= pattern.length) { + willNotWorkOnGpu( + "invalid LIKE escape pattern") + return + } + val c = pattern.charAt(j) + if (c != '_' && c != '%' && c != esc) { + willNotWorkOnGpu( + "invalid LIKE escape pattern") + return + } + i = j + 1 + } else { + i += 1 + } + } + case _ => + } + } override def convertToGpu(lhs: Expression, rhs: Expression): GpuExpression = GpuLike(lhs, rhs, a.escapeChar) }), diff --git a/tests/src/test/spark330/scala/org/apache/spark/sql/rapids/utils/RapidsTestSettings.scala b/tests/src/test/spark330/scala/org/apache/spark/sql/rapids/utils/RapidsTestSettings.scala index 085d823d383..72d17d3b4da 100644 --- a/tests/src/test/spark330/scala/org/apache/spark/sql/rapids/utils/RapidsTestSettings.scala +++ b/tests/src/test/spark330/scala/org/apache/spark/sql/rapids/utils/RapidsTestSettings.scala @@ -227,7 +227,6 @@ class RapidsTestSettings extends BackendTestSettings { .exclude("SPARK-19650: An action on a Command should not trigger a Spark job", KNOWN_ISSUE("https://github.com/NVIDIA/spark-rapids/issues/14110")) .exclude("SPARK-31594: Do not display the seed of rand/randn with no argument in output schema", ADJUST_UT("Replaced by testRapids version with a correct regex expression to match the projectExplainOutput, randn isn't supported now. See https://github.com/NVIDIA/spark-rapids/issues/11613")) .exclude("normalize special floating numbers in subquery", KNOWN_ISSUE("https://github.com/NVIDIA/spark-rapids/issues/14116")) - .exclude("SPARK-33677: LikeSimplification should be skipped if pattern contains any escapeChar", KNOWN_ISSUE("https://github.com/NVIDIA/spark-rapids/issues/14117")) .exclude("SPARK-33593: Vector reader got incorrect data with binary partition value", KNOWN_ISSUE("https://github.com/NVIDIA/spark-rapids/issues/14118")) .exclude("SPARK-33084: Add jar support Ivy URI in SQL -- jar contains udf class", ADJUST_UT("Replaced by testRapids version that uses testFile() to access Spark test resources instead of getContextClassLoader")) .exclude("SPARK-33482: Fix FileScan canonicalization", KNOWN_ISSUE("https://github.com/NVIDIA/spark-rapids/issues/14122"))