mirror of
https://github.com/DependencyTrack/dependency-track.git
synced 2025-10-19 16:03:19 +00:00
Use datastore-native limiting in queries where only a single result is desired
Translates into `LIMIT 1`, `TOP 1` etc. depending on the datastore. Results in queries being executed faster in the datastore (at least when no index is used), reduces the amount of unnecessary data being loaded into RAM. Signed-off-by: nscuro <nscuro@protonmail.com>
This commit is contained in:
parent
c4d7a6a2cb
commit
d469ab6cfe
12 changed files with 26 additions and 0 deletions
|
@ -194,6 +194,7 @@ final class ProjectQueryManager extends QueryManager implements IQueryManager {
|
|||
|
||||
preprocessACLs(query, queryFilter, params, false);
|
||||
query.setFilter(queryFilter);
|
||||
query.setRange(0, 1);
|
||||
return singleResult(query.executeWithMap(params));
|
||||
}
|
||||
|
||||
|
@ -332,6 +333,7 @@ final class ProjectQueryManager extends QueryManager implements IQueryManager {
|
|||
public Tag getTagByName(final String name) {
|
||||
final String trimmedTag = StringUtils.trimToNull(name);
|
||||
final Query<Tag> query = pm.newQuery(Tag.class, "name == :name");
|
||||
query.setRange(0, 1);
|
||||
return singleResult(query.execute(trimmedTag));
|
||||
}
|
||||
|
||||
|
@ -641,6 +643,7 @@ final class ProjectQueryManager extends QueryManager implements IQueryManager {
|
|||
*/
|
||||
public ProjectProperty getProjectProperty(final Project project, final String groupName, final String propertyName) {
|
||||
final Query<ProjectProperty> query = this.pm.newQuery(ProjectProperty.class, "project == :project && groupName == :groupName && propertyName == :propertyName");
|
||||
query.setRange(0, 1);
|
||||
return singleResult(query.execute(project, groupName, propertyName));
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue