This is an automated email from the ASF dual-hosted git repository.
vjasani pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/phoenix.git
The following commit(s) were added to refs/heads/master by this push:
new 0a65109a89 PHOENIX-7585 ADDENDUM for
BsonConditionInvalidArgumentException
0a65109a89 is described below
commit 0a65109a89eccfe736887e2e3007dabc3dac7ea6
Author: Viraj Jasani <[email protected]>
AuthorDate: Tue Jul 8 15:07:54 2025 -0700
PHOENIX-7585 ADDENDUM for BsonConditionInvalidArgumentException
---
.../expression/util/bson/SQLComparisonExpressionUtils.java | 7 +++++--
.../phoenix/util/bson/ComparisonExpressionUtilsTest.java | 13 ++++---------
2 files changed, 9 insertions(+), 11 deletions(-)
diff --git
a/phoenix-core-client/src/main/java/org/apache/phoenix/expression/util/bson/SQLComparisonExpressionUtils.java
b/phoenix-core-client/src/main/java/org/apache/phoenix/expression/util/bson/SQLComparisonExpressionUtils.java
index 8a9ac9bd72..92c22fc6ff 100644
---
a/phoenix-core-client/src/main/java/org/apache/phoenix/expression/util/bson/SQLComparisonExpressionUtils.java
+++
b/phoenix-core-client/src/main/java/org/apache/phoenix/expression/util/bson/SQLComparisonExpressionUtils.java
@@ -555,6 +555,10 @@ public final class SQLComparisonExpressionUtils {
if (prefixBsonValue == null) {
return false;
}
+ if (!prefixBsonValue.isString() && !prefixBsonValue.isBinary()) {
+ throw new BsonConditionInvalidArgumentException(
+ "begins_with function only supports String and Binary data
types.");
+ }
if (fieldValue.isString() && prefixBsonValue.isString()) {
String fieldStr = ((BsonString) fieldValue).getValue();
String prefixStr = ((BsonString) prefixBsonValue).getValue();
@@ -568,8 +572,7 @@ public final class SQLComparisonExpressionUtils {
return IntStream.range(0, prefixBytes.length)
.noneMatch(i -> fieldBytes[i] != prefixBytes[i]);
} else {
- throw new BsonConditionInvalidArgumentException(
- "begins_with function only supports String and Binary data
types.");
+ return false;
}
}
diff --git
a/phoenix-core/src/test/java/org/apache/phoenix/util/bson/ComparisonExpressionUtilsTest.java
b/phoenix-core/src/test/java/org/apache/phoenix/util/bson/ComparisonExpressionUtilsTest.java
index af68fcbf97..a6eafb6be7 100644
---
a/phoenix-core/src/test/java/org/apache/phoenix/util/bson/ComparisonExpressionUtilsTest.java
+++
b/phoenix-core/src/test/java/org/apache/phoenix/util/bson/ComparisonExpressionUtilsTest.java
@@ -1607,17 +1607,12 @@ public class ComparisonExpressionUtilsTest {
assertFalse(SQLComparisonExpressionUtils.evaluateConditionExpression(
"begins_with(NonExistentField, #Title)", rawBsonDocument,
compareValues));
- try {
- SQLComparisonExpressionUtils.evaluateConditionExpression(
- "begins_with(Id, #Title)", rawBsonDocument, compareValues);
- fail("Expected BsonConditionInvalidArgumentException");
- } catch (BsonConditionInvalidArgumentException e) {
- // expected
- }
+ assertFalse(SQLComparisonExpressionUtils.evaluateConditionExpression(
+ "begins_with(Id, #Title)", rawBsonDocument, compareValues));
try {
SQLComparisonExpressionUtils.evaluateConditionExpression(
- "begins_with(Title, #NestedMap1_NList1_3)", rawBsonDocument,
compareValues);
+ "begins_with(Title, :1)", rawBsonDocument, compareValues);
fail("Expected BsonConditionInvalidArgumentException");
} catch (BsonConditionInvalidArgumentException e) {
// expected
@@ -1677,7 +1672,7 @@ public class ComparisonExpressionUtilsTest {
" \"#NestedList1_10\" : \"1234abce\",\n" +
" \"$Id1\" : 120,\n" +
" \"$Id10\" : 101,\n" +
- " \":>\" : 100,\n " +
+ " \":1\" : 100,\n " +
" \"$Ids1\" : \"12\",\n" +
" \":ISBN\" : \"111-1111111111\",\n" +
" \"#NestedList1_xyz0123\" : \"xyz0123\",\n" +