Merge pull request #7589 from ShvaykaD/bugfix/7588

[3.4.2] Bugfix of alarm count query with null sortOrder and textSearch specified.
This commit is contained in:
Andrew Shvayka 2022-11-14 17:24:29 +02:00 committed by GitHub
commit ac7d1dd2c3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -140,6 +140,7 @@ public class DefaultAlarmQueryRepository implements AlarmQueryRepository {
selectPart.append(" a.originator_id as entity_id "); selectPart.append(" a.originator_id as entity_id ");
} }
EntityDataSortOrder sortOrder = pageLink.getSortOrder(); EntityDataSortOrder sortOrder = pageLink.getSortOrder();
String textSearchQuery = buildTextSearchQuery(ctx, query.getAlarmFields(), pageLink.getTextSearch());
if (sortOrder != null && sortOrder.getKey().getType().equals(EntityKeyType.ALARM_FIELD)) { if (sortOrder != null && sortOrder.getKey().getType().equals(EntityKeyType.ALARM_FIELD)) {
String sortOrderKey = sortOrder.getKey().getKey(); String sortOrderKey = sortOrder.getKey().getKey();
sortPart.append(alarmFieldColumnMap.getOrDefault(sortOrderKey, sortOrderKey)) sortPart.append(alarmFieldColumnMap.getOrDefault(sortOrderKey, sortOrderKey))
@ -166,7 +167,11 @@ public class DefaultAlarmQueryRepository implements AlarmQueryRepository {
} }
joinPart.append(" as e(id, priority)) e "); joinPart.append(" as e(id, priority)) e ");
if (pageLink.isSearchPropagatedAlarms()) { if (pageLink.isSearchPropagatedAlarms()) {
if (textSearchQuery.isEmpty()) {
joinPart.append("on ea.entity_id = e.id"); joinPart.append("on ea.entity_id = e.id");
} else {
joinPart.append("on a.entity_id = e.id");
}
} else { } else {
joinPart.append("on a.originator_id = e.id"); joinPart.append("on a.originator_id = e.id");
} }
@ -230,13 +235,11 @@ public class DefaultAlarmQueryRepository implements AlarmQueryRepository {
} }
} }
String textSearchQuery = buildTextSearchQuery(ctx, query.getAlarmFields(), pageLink.getTextSearch()); String mainQuery = String.format("%s%s", selectPart, fromPart);
String mainQuery; if (textSearchQuery.isEmpty()) {
if (!textSearchQuery.isEmpty()) { mainQuery = String.format("%s%s%s", mainQuery, joinPart, wherePart);
mainQuery = selectPart.toString() + fromPart.toString() + wherePart.toString();
mainQuery = String.format("select * from (%s) a %s WHERE %s", mainQuery, joinPart, textSearchQuery);
} else { } else {
mainQuery = selectPart.toString() + fromPart.toString() + joinPart.toString() + wherePart.toString(); mainQuery = String.format("select * from (%s%s) a %s WHERE %s", mainQuery, wherePart, joinPart, textSearchQuery);
} }
String countQuery = String.format("select count(*) from (%s) result", mainQuery); String countQuery = String.format("select count(*) from (%s) result", mainQuery);
long queryTs = System.currentTimeMillis(); long queryTs = System.currentTimeMillis();