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