diff options
author | Jakob Odersky <jakob@odersky.com> | 2016-10-24 17:07:14 -0700 |
---|---|---|
committer | Jakob Odersky <jakob@odersky.com> | 2016-12-09 11:34:53 -0800 |
commit | dbd305c195ba1c1661f82e3e19085778b8783794 (patch) | |
tree | 2601fc24126f5ddbbae3f2d6e1510b08cf3d8327 /sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/StringUtils.scala | |
parent | ba6d0584e4a6417cd9e130d831219cccc194f791 (diff) | |
download | spark-dbd305c195ba1c1661f82e3e19085778b8783794.tar.gz spark-dbd305c195ba1c1661f82e3e19085778b8783794.tar.bz2 spark-dbd305c195ba1c1661f82e3e19085778b8783794.zip |
Refactor tests and add documentationSPARK-17647
Diffstat (limited to 'sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/StringUtils.scala')
-rw-r--r-- | sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/StringUtils.scala | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/StringUtils.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/StringUtils.scala index b760b994f2..ca22ea2420 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/StringUtils.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/StringUtils.scala @@ -24,13 +24,23 @@ import org.apache.spark.unsafe.types.UTF8String object StringUtils { - /** Convert 'like' pattern to Java regex. */ - def escapeLikeRegex(str: String): String = { - val in = str.toIterator + /** + * Validate and convert SQL 'like' pattern to a Java regular expression. + * + * Underscores (_) are converted to '.' and percent signs (%) are converted to '.*', other + * characters are quoted literally. Escaping is done according to the rules specified in + * [[org.apache.spark.sql.catalyst.expressions.Like]] usage documentation. An invalid pattern will + * throw an [[AnalysisException]]. + * + * @param pattern the SQL pattern to convert + * @return the equivalent Java regular expression of the pattern + */ + def escapeLikeRegex(pattern: String): String = { + val in = pattern.toIterator val out = new StringBuilder() def fail(message: String) = throw new AnalysisException( - s"the pattern '$str' is invalid, $message") + s"the pattern '$pattern' is invalid, $message") while (in.hasNext) { in.next match { |