[ASTERIXDB-2633][FUN] Fix LIKE to regex translation
- user model changes: no
- storage format changes: no
- interface changes: no
Change-Id: I6138f62fdcd60bcc641f662d1fdb05b46dafbebf
Reviewed-on: https://asterix-gerrit.ics.uci.edu/3558
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Murtadha Hubail <mhubail@apache.org>
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/string/like_01/like_01.3.query.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/string/like_01/like_01.3.query.aql
index 2f6ccbd..608d184 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/string/like_01/like_01.3.query.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/string/like_01/like_01.3.query.aql
@@ -18,4 +18,4 @@
*/
use dataverse test;
-[like("A6BBB", "_6%"), like("A8BBB", "_6%")]
+[like("A6BBB", "_6%"), like("A8BBB", "_6%"), like("+0300", "+03%"), like("?0300", "?03%")]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/like_01/like_01.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/like_01/like_01.3.query.sqlpp
index fa4a4e0..c0994c1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/like_01/like_01.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/like_01/like_01.3.query.sqlpp
@@ -19,5 +19,9 @@
use test;
-
-select element ['A6BBB' LIKE '_6%', 'A8BBB' LIKE '_6%' ];
+select element [
+ 'A6BBB' LIKE '_6%',
+ 'A8BBB' LIKE '_6%',
+ '+0300' like "+03%",
+ "?0300" like '?03%'
+];
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/string/like_01/like_01.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/string/like_01/like_01.1.adm
index 984d066..95f3f50 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/string/like_01/like_01.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/string/like_01/like_01.1.adm
@@ -1 +1 @@
-[ true, false ]
+[ true, false, true, true ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/like_01/like_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/like_01/like_01.3.ast
index ee361dd..ac04a07 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/like_01/like_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/like_01/like_01.3.ast
@@ -12,5 +12,15 @@
like
LiteralExpr [STRING] [_6%]
]
+ OperatorExpr [
+ LiteralExpr [STRING] [+0300]
+ like
+ LiteralExpr [STRING] [+03%]
+ ]
+ OperatorExpr [
+ LiteralExpr [STRING] [?0300]
+ like
+ LiteralExpr [STRING] [?03%]
+ ]
]
]
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringEvaluatorUtils.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringEvaluatorUtils.java
index 7abc721..9c2076da 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringEvaluatorUtils.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringEvaluatorUtils.java
@@ -57,7 +57,8 @@
return destString;
}
- static char[] reservedRegexChars = new char[] { '\\', '(', ')', '[', ']', '{', '}', '.', '^', '$', '*', '|' };
+ static char[] reservedRegexChars =
+ new char[] { '\\', '(', ')', '[', ']', '{', '}', '.', '^', '$', '*', '|', '+', '?' };
static {
Arrays.sort(reservedRegexChars);