This is an automated email from the ASF dual-hosted git repository.
dlych pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git
The following commit(s) were added to refs/heads/master by this push:
new 14cc098 [ASTERIXDB-2978][FUN] Fix substr1() handling of offset 0
14cc098 is described below
commit 14cc098dd02b35c62fe0da80cccf507274731e2a
Author: Dmitry Lychagin <[email protected]>
AuthorDate: Tue Oct 26 10:27:39 2021 -0700
[ASTERIXDB-2978][FUN] Fix substr1() handling of offset 0
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
- Fix substr1(x,0) to return input string instead of null
Change-Id: I5c313c163165f03b2c55d730438a2723f15dcc3d
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/13803
Integration-Tests: Jenkins <[email protected]>
Tested-by: Jenkins <[email protected]>
Reviewed-by: Dmitry Lychagin <[email protected]>
Reviewed-by: Ali Alsuliman <[email protected]>
---
.../runtimets/results/string/substr01/offset1/substr1/substr1.1.adm | 2 +-
.../results/string/substr01/offset1/substring1/substring1.1.adm | 2 +-
.../runtimets/results/string/substring2-1/offset1/substr1/substr1.1.adm | 2 +-
.../results/string/substring2-1/offset1/substring1/substring1.1.adm | 2 +-
.../org/apache/asterix/runtime/evaluators/functions/Substring2Eval.java | 2 +-
.../org/apache/asterix/runtime/evaluators/functions/SubstringEval.java | 2 +-
6 files changed, 6 insertions(+), 6 deletions(-)
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/string/substr01/offset1/substr1/substr1.1.adm
b/asterixdb/asterix-app/src/test/resources/runtimets/results/string/substr01/offset1/substr1/substr1.1.adm
index ba46923..f524208 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/results/string/substr01/offset1/substr1/substr1.1.adm
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results/string/substr01/offset1/substr1/substr1.1.adm
@@ -1 +1 @@
-[ "g", null, "ab", "bc", "cd" ]
\ No newline at end of file
+[ "g", "ab", "ab", "bc", "cd" ]
\ No newline at end of file
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/string/substr01/offset1/substring1/substring1.1.adm
b/asterixdb/asterix-app/src/test/resources/runtimets/results/string/substr01/offset1/substring1/substring1.1.adm
index ba46923..f524208 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/results/string/substr01/offset1/substring1/substring1.1.adm
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results/string/substr01/offset1/substring1/substring1.1.adm
@@ -1 +1 @@
-[ "g", null, "ab", "bc", "cd" ]
\ No newline at end of file
+[ "g", "ab", "ab", "bc", "cd" ]
\ No newline at end of file
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/string/substring2-1/offset1/substr1/substr1.1.adm
b/asterixdb/asterix-app/src/test/resources/runtimets/results/string/substring2-1/offset1/substr1/substr1.1.adm
index 772cf57..fb038ae 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/results/string/substring2-1/offset1/substr1/substr1.1.adm
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results/string/substring2-1/offset1/substr1/substr1.1.adm
@@ -1 +1 @@
-[ "g", null, "abcdefg", "bcdefg", "cdefg" ]
\ No newline at end of file
+[ "g", "abcdefg", "abcdefg", "bcdefg", "cdefg" ]
\ No newline at end of file
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/string/substring2-1/offset1/substring1/substring1.1.adm
b/asterixdb/asterix-app/src/test/resources/runtimets/results/string/substring2-1/offset1/substring1/substring1.1.adm
index 772cf57..fb038ae 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/results/string/substring2-1/offset1/substring1/substring1.1.adm
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results/string/substring2-1/offset1/substring1/substring1.1.adm
@@ -1 +1 @@
-[ "g", null, "abcdefg", "bcdefg", "cdefg" ]
\ No newline at end of file
+[ "g", "abcdefg", "abcdefg", "bcdefg", "cdefg" ]
\ No newline at end of file
diff --git
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/Substring2Eval.java
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/Substring2Eval.java
index 124ae40..e5a6853 100644
---
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/Substring2Eval.java
+++
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/Substring2Eval.java
@@ -96,7 +96,7 @@ class Substring2Eval extends AbstractScalarEval {
string.set(bytes, offset + 1, len - 1);
array.reset();
try {
- int actualStart = start >= 0 ? start - baseOffset :
string.getStringLength() + start;
+ int actualStart = start >= 0 ? Math.max(start - baseOffset, 0) :
string.getStringLength() + start;
boolean success = UTF8StringPointable.substr(string, actualStart,
Integer.MAX_VALUE, builder, array);
if (success) {
out.writeByte(ATypeTag.SERIALIZED_STRING_TYPE_TAG);
diff --git
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SubstringEval.java
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SubstringEval.java
index e8c2ff8..dec6cce 100644
---
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SubstringEval.java
+++
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SubstringEval.java
@@ -108,7 +108,7 @@ class SubstringEval extends AbstractScalarEval {
string.set(bytes, offset + 1, length - 1);
array.reset();
try {
- int actualStart = start >= 0 ? start - baseOffset :
string.getStringLength() + start;
+ int actualStart = start >= 0 ? Math.max(start - baseOffset, 0) :
string.getStringLength() + start;
boolean success = UTF8StringPointable.substr(string, actualStart,
len, builder, array);
if (success) {
out.writeByte(ATypeTag.SERIALIZED_STRING_TYPE_TAG);