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:
		
						commit
						ac7d1dd2c3
					
				@ -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()) {
 | 
				
			||||||
                    joinPart.append("on ea.entity_id = e.id");
 | 
					                    if (textSearchQuery.isEmpty()) {
 | 
				
			||||||
 | 
					                        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();
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user