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 38ebb65c3541f1..23cb6c572e2a26 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 Literal visitIntegerLiteral(IntegerLiteralContext ctx) { 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 3f9abcad5f98d6..d6f61aa9ebcf2b 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 static String escapeSQL(String str) { 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 c827a7d1690900..724e0363833305 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.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 void testConvertToDouble() { } @Test - public void testInAnalyzeTime1() { + void testInAnalyzeTime1() { new MockUp() { @Mock @@ -99,7 +99,7 @@ protected SessionVariable findConfigFromGlobalSessionVar(String varName) throws } @Test - public void testInAnalyzeTime2() { + void testInAnalyzeTime2() { new MockUp() { @Mock @@ -119,7 +119,7 @@ protected SessionVariable findConfigFromGlobalSessionVar(String varName) throws @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 void testEncodeValue() throws Exception { } @Test - public void testEscape() { + void testEscape() { // \'" String origin = "\\'\""; // \\''"" - Assertions.assertEquals("\\\\''\"\"", StatisticsUtil.escapeSQL(origin)); + Assertions.assertEquals("\\\\''\"", StatisticsUtil.escapeSQL(origin)); } }