diff --git a/core/src/test/scala/org/apache/spark/sql/IssueTestSuite.scala b/core/src/test/scala/org/apache/spark/sql/IssueTestSuite.scala index 2b6eb22adb..2109adb532 100644 --- a/core/src/test/scala/org/apache/spark/sql/IssueTestSuite.scala +++ b/core/src/test/scala/org/apache/spark/sql/IssueTestSuite.scala @@ -22,6 +22,16 @@ import org.apache.spark.sql.functions.{col, sum} class IssueTestSuite extends BaseTiSparkTest { + test("test like escape") { + val dbTable = "tispark_test.like_escape" + tidbStmt.execute(s"drop table if exists $dbTable") + tidbStmt.execute(s"CREATE TABLE $dbTable (`name` varchar(64) NOT NULL)") + tidbStmt.execute(s"insert into $dbTable values('ab%H')") + val df = spark.sql(s"select count(*) from $dbTable where name like '%\\%H%'") + assert(df.collect().head.get(0) == 1) + + } + test("test tiflash overflow in unsigned bigint") { if (!enableTiFlashTest) { cancel("tiflash test not enabled") diff --git a/tikv-client/src/main/java/com/pingcap/tikv/expression/StringRegExpression.java b/tikv-client/src/main/java/com/pingcap/tikv/expression/StringRegExpression.java index 9672c4a406..eaeafebe42 100644 --- a/tikv-client/src/main/java/com/pingcap/tikv/expression/StringRegExpression.java +++ b/tikv-client/src/main/java/com/pingcap/tikv/expression/StringRegExpression.java @@ -86,10 +86,8 @@ public TypedKey getTypedLiteral(int prefixLength) { @Override public List getChildren() { - // For LIKE statement, an extra ESCAPE parameter is required as the third parameter for - // ScalarFunc. - // However in Spark ESCAPE is not supported so we simply set this value to zero. - return ImmutableList.of(left, reg, Constant.create(0, IntegerType.BIGINT)); + // LIKE statement use '\' as escape character because Spark use it as escape character too. + return ImmutableList.of(left, reg, Constant.create(92, IntegerType.BIGINT)); } @Override