This is an automated email from the ASF dual-hosted git repository. kxiao pushed a commit to branch branch-2.0 in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0 by this push: new d297c7cb71f [fix](Nereids): Preserve `""` in single quote strings and `''` in double quote strings. (#27959) (#28313) d297c7cb71f is described below commit d297c7cb71f8a3cbf57ced781ffb7f3920ba68dd Author: 谢健 <jianx...@gmail.com> AuthorDate: Sat Dec 16 21:26:12 2023 +0800 [fix](Nereids): Preserve `""` in single quote strings and `''` in double quote strings. (#27959) (#28313) --- .../apache/doris/nereids/parser/LogicalPlanBuilder.java | 8 +++++++- .../org/apache/doris/statistics/util/StatisticsUtil.java | 3 +-- .../apache/doris/statistics/util/StatisticsUtilTest.java | 14 +++++++------- 3 files changed, 15 insertions(+), 10 deletions(-) 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 38ebb65c354..23cb6c572e2 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 @@ -1360,7 +1360,13 @@ public class LogicalPlanBuilder extends DorisParserBaseVisitor<Object> { public Literal visitStringLiteral(StringLiteralContext ctx) { String txt = ctx.STRING_LITERAL().getText(); String s = txt.substring(1, txt.length() - 1); - s = s.replace("''", "'").replace("\"\"", "\""); + if (txt.charAt(0) == '\'') { + // for single quote string, '' should be converted to ' + s = s.replace("''", "'"); + } else if (txt.charAt(0) == '"') { + // for double quote string, "" should be converted to " + s = s.replace("\"\"", "\""); + } if (!SqlModeHelper.hasNoBackSlashEscapes()) { s = escapeBackSlash(s); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/util/StatisticsUtil.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/util/StatisticsUtil.java index 3f9abcad5f9..d6f61aa9ebc 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/util/StatisticsUtil.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/util/StatisticsUtil.java @@ -787,8 +787,7 @@ public class StatisticsUtil { return null; } return str.replace("'", "''") - .replace("\\", "\\\\") - .replace("\"", "\"\""); + .replace("\\", "\\\\"); } public static boolean isExternalTable(String catalogName, String dbName, String tblName) { diff --git a/fe/fe-core/src/test/java/org/apache/doris/statistics/util/StatisticsUtilTest.java b/fe/fe-core/src/test/java/org/apache/doris/statistics/util/StatisticsUtilTest.java index c827a7d1690..724e0363833 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/statistics/util/StatisticsUtilTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/statistics/util/StatisticsUtilTest.java @@ -34,9 +34,9 @@ import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Base64; -public class StatisticsUtilTest { +class StatisticsUtilTest { @Test - public void testConvertToDouble() { + void testConvertToDouble() { try { //test DATE double date1 = StatisticsUtil.convertToDouble(Type.DATE, "1990-01-01"); @@ -80,7 +80,7 @@ public class StatisticsUtilTest { } @Test - public void testInAnalyzeTime1() { + void testInAnalyzeTime1() { new MockUp<StatisticsUtil>() { @Mock @@ -99,7 +99,7 @@ public class StatisticsUtilTest { } @Test - public void testInAnalyzeTime2() { + void testInAnalyzeTime2() { new MockUp<StatisticsUtil>() { @Mock @@ -119,7 +119,7 @@ public class StatisticsUtilTest { @Test - public void testEncodeValue() throws Exception { + void testEncodeValue() throws Exception { Assertions.assertEquals("NULL", StatisticsUtil.encodeValue(null, 0)); ResultRow row = new ResultRow(null); @@ -144,10 +144,10 @@ public class StatisticsUtilTest { } @Test - public void testEscape() { + void testEscape() { // \'" String origin = "\\'\""; // \\''"" - Assertions.assertEquals("\\\\''\"\"", StatisticsUtil.escapeSQL(origin)); + Assertions.assertEquals("\\\\''\"", StatisticsUtil.escapeSQL(origin)); } } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org