[IOTDB-4292] Make semantic of like and regexp expressions the same as 0.13
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java
index 8e37b8d..37bd56d 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java
@@ -163,8 +163,6 @@
import org.apache.iotdb.tsfile.read.common.TimeRange;
import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.commons.lang.StringEscapeUtils;
-
import java.net.URI;
import java.net.URISyntaxException;
import java.time.ZoneId;
@@ -1655,23 +1653,6 @@
return src;
}
- private String parseStringLiteralInLikeOrRegular(String src) {
- if (2 <= src.length()) {
- String unescapeString = StringEscapeUtils.unescapeJava(src.substring(1, src.length() - 1));
- if (src.charAt(0) == '\"' && src.charAt(src.length() - 1) == '\"') {
- // replace "" with "
- String replaced = unescapeString.replace("\"\"", "\"");
- return replaced.length() == 0 ? "" : replaced;
- }
- if ((src.charAt(0) == '\'' && src.charAt(src.length() - 1) == '\'')) {
- // replace '' with '
- String replaced = unescapeString.replace("''", "'");
- return replaced.length() == 0 ? "" : replaced;
- }
- }
- return src;
- }
-
private String parseIdentifier(String src) {
if (src.startsWith(TsFileConstant.BACK_QUOTE_STRING)
&& src.endsWith(TsFileConstant.BACK_QUOTE_STRING)) {
@@ -2266,13 +2247,13 @@
private Expression parseRegularExpression(ExpressionContext context, boolean inWithoutNull) {
return new RegularExpression(
parseExpression(context.unaryBeforeRegularOrLikeExpression, inWithoutNull),
- parseStringLiteralInLikeOrRegular(context.STRING_LITERAL().getText()));
+ parseStringLiteral(context.STRING_LITERAL().getText()));
}
private Expression parseLikeExpression(ExpressionContext context, boolean inWithoutNull) {
return new LikeExpression(
parseExpression(context.unaryBeforeRegularOrLikeExpression, inWithoutNull),
- parseStringLiteralInLikeOrRegular(context.STRING_LITERAL().getText()));
+ parseStringLiteral(context.STRING_LITERAL().getText()));
}
private Expression parseIsNullExpression(ExpressionContext context, boolean inWithoutNull) {
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java b/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java
index f3765ed..23da9af 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java
@@ -2964,26 +2964,16 @@
private Expression parseRegularExpression(
ExpressionContext context, boolean inWithoutNull, boolean isQueryFilter) {
- if (isQueryFilter) {
- return new RegularExpression(
- parseExpression(context.unaryBeforeRegularOrLikeExpression, inWithoutNull),
- context.STRING_LITERAL().getText());
- }
return new RegularExpression(
parseExpression(context.unaryBeforeRegularOrLikeExpression, inWithoutNull),
- parseStringLiteralInLikeOrRegular(context.STRING_LITERAL().getText()));
+ parseStringLiteral(context.STRING_LITERAL().getText()));
}
private Expression parseLikeExpression(
ExpressionContext context, boolean inWithoutNull, boolean isQueryFilter) {
- if (isQueryFilter) {
- return new LikeExpression(
- parseExpression(context.unaryBeforeRegularOrLikeExpression, inWithoutNull),
- context.STRING_LITERAL().getText());
- }
return new LikeExpression(
parseExpression(context.unaryBeforeRegularOrLikeExpression, inWithoutNull),
- parseStringLiteralInLikeOrRegular(context.STRING_LITERAL().getText()));
+ parseStringLiteral(context.STRING_LITERAL().getText()));
}
private Expression parseInExpression(ExpressionContext context, boolean inWithoutNull) {
@@ -3320,23 +3310,6 @@
return src;
}
- private String parseStringLiteralInLikeOrRegular(String src) {
- if (2 <= src.length()) {
- String unescapeString = StringEscapeUtils.unescapeJava(src.substring(1, src.length() - 1));
- if (src.charAt(0) == '\"' && src.charAt(src.length() - 1) == '\"') {
- // replace "" with "
- String replaced = unescapeString.replace("\"\"", "\"");
- return replaced.length() == 0 ? "" : replaced;
- }
- if ((src.charAt(0) == '\'' && src.charAt(src.length() - 1) == '\'')) {
- // replace '' with '
- String replaced = unescapeString.replace("''", "'");
- return replaced.length() == 0 ? "" : replaced;
- }
- }
- return src;
- }
-
private String parseIdentifier(String src) {
if (src.startsWith(TsFileConstant.BACK_QUOTE_STRING)
&& src.endsWith(TsFileConstant.BACK_QUOTE_STRING)) {