Skip to content

Commit

Permalink
[MODFQMMGR-652] Fix null/empty queries for jsonbArrayTypes (#610)
Browse files Browse the repository at this point in the history
  • Loading branch information
bvsharp authored Feb 3, 2025
1 parent 1726187 commit 1fe3e2e
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,6 @@ public class FqlToSqlConverterService {
)
""";


private final FqlService fqlService;

/**
Expand Down Expand Up @@ -422,6 +421,14 @@ private static Condition handleEmpty(EmptyCondition emptyCondition, EntityType e
yield nullCondition.and(cardinality.ne(0)).and(NOT_ALL_NULLS.formatted(field));
}
}
case JSONB_ARRAY_TYPE -> {
var jsonbCardinality = DSL.field("jsonb_array_length({0})", Integer.class, field);
if (isEmpty) {
yield nullCondition.or(jsonbCardinality.eq(0));
} else {
yield nullCondition.and(jsonbCardinality.ne(0));
}
}
default -> nullCondition;
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -711,6 +711,18 @@ static List<Arguments> jooqConditionsSource() {
"""
{"arrayField": {"$empty": false}}""",
field("arrayField").isNotNull().and(cardinality(cast(field("arrayField"), String[].class)).ne(0)).and(NOT_ALL_NULLS.formatted("arrayField"))
),
Arguments.of(
"empty JSONB array",
"""
{"jsonbArrayField": {"$empty": true}}""",
field("jsonbArrayField").isNull().or(field("jsonb_array_length({0})", Integer.class, field("jsonbArrayField")).eq(0))
),
Arguments.of(
"not empty JSONB array",
"""
{"jsonbArrayField": {"$empty": false}}""",
field("jsonbArrayField").isNotNull().and(field("jsonb_array_length({0})", Integer.class, field("jsonbArrayField")).ne(0))
)
);
}
Expand Down

0 comments on commit 1fe3e2e

Please sign in to comment.