This is an automated email from the ASF dual-hosted git repository. jakevin pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push: new 7952bce03f [compatibility](Nereids) process escape in string literal (#14294) 7952bce03f is described below commit 7952bce03fce89007419a1b87b9b8bd34549df16 Author: morrySnow <101034200+morrys...@users.noreply.github.com> AuthorDate: Fri Nov 18 11:24:00 2022 +0800 [compatibility](Nereids) process escape in string literal (#14294) --- .../doris/nereids/parser/LogicalPlanBuilder.java | 44 ++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java index a94fe8755e..97770735e5 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java @@ -687,10 +687,54 @@ public class LogicalPlanBuilder extends DorisParserBaseVisitor<Object> { .map(ParseTree::getText) .map(str -> str.substring(1, str.length() - 1)) .reduce((s1, s2) -> s1 + s2) + .map(this::escapeBackSlash) .orElse(""); return new VarcharLiteral(s); } + private String escapeBackSlash(String str) { + StringBuilder sb = new StringBuilder(); + int strLen = str.length(); + for (int i = 0; i < strLen; ++i) { + char c = str.charAt(i); + if (c == '\\' && (i + 1) < strLen) { + switch (str.charAt(i + 1)) { + case 'n': + sb.append('\n'); + break; + case 't': + sb.append('\t'); + break; + case 'r': + sb.append('\r'); + break; + case 'b': + sb.append('\b'); + break; + case '0': + sb.append('\0'); // Ascii null + break; + case 'Z': // ^Z must be escaped on Win32 + sb.append('\032'); + break; + case '_': + case '%': + sb.append('\\'); // remember prefix for wildcard + sb.append(str.charAt(i + 1)); + break; + default: + sb.append(str.charAt(i + 1)); + break; + } + i++; + } else { + sb.append(c); + } + } + + return sb.toString(); + } + @Override public Expression visitParenthesizedExpression(ParenthesizedExpressionContext ctx) { return getExpression(ctx.expression()); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org