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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]