Skip to content

Commit 9187a06

Browse files
committed
Fix calc_dataset_view join with label values
Signed-off-by: Andrea Lamparelli <[email protected]>
1 parent 26ea978 commit 9187a06

File tree

2 files changed

+25
-4
lines changed

2 files changed

+25
-4
lines changed

horreum-backend/src/main/java/io/hyperfoil/tools/horreum/svc/TestServiceImpl.java

+2-4
Original file line numberDiff line numberDiff line change
@@ -636,9 +636,6 @@ public void recalculateDatasets(int testId) {
636636
RecalculationStatus status = new RecalculationStatus(RunDAO.count("testid = ?1 AND trashed = false", testId));
637637
// we don't have to care about races with new runs
638638
RecalculationStatus prev = recalculations.putIfAbsent(testId, status);
639-
// ensure the recalculation is removed, with this approach we should guarantee
640-
// it gets removed even if transaction-level exception occurs, e.g., timeout
641-
Util.registerTxSynchronization(tm, txStatus -> recalculations.remove(testId, status));
642639
if (prev != null) {
643640
log.infof("Recalculation for test %d (%s) already in progress", testId, test.name);
644641
return;
@@ -652,7 +649,8 @@ public void recalculateDatasets(int testId) {
652649
log.debugf("Deleted %d datasets for trashed runs in test %s (%d)", deleted, test.name, (Object) testId);
653650
}
654651

655-
try (ScrollableResults results = em
652+
log.infof("Recalculating datasets for test %d (%s)", testId, test.name);
653+
try (ScrollableResults<Integer> results = em
656654
.createNativeQuery("SELECT id FROM run WHERE testid = ?1 AND NOT trashed ORDER BY start")
657655
.setParameter(1, testId)
658656
.unwrap(NativeQuery.class).setReadOnly(true).setFetchSize(100)

horreum-backend/src/main/resources/db/changeLog.xml

+23
Original file line numberDiff line numberDiff line change
@@ -4665,4 +4665,27 @@
46654665
<dropColumn tableName="schema" columnName="token" />
46664666
<dropTable tableName="test_token" />
46674667
</changeSet>
4668+
<changeSet id="125" author="lampajr">
4669+
<validCheckSum>ANY</validCheckSum>
4670+
<sql>
4671+
-- still need db procedure until https://hibernate.atlassian.net/browse/HHH-17314 is fixed in quarkus
4672+
CREATE OR REPLACE PROCEDURE calc_dataset_view(datasetId bigint) AS $$
4673+
BEGIN
4674+
WITH view_agg AS (
4675+
SELECT
4676+
vc.view_id, vc.id as vcid, array_agg(DISTINCT label.id) as label_ids, jsonb_object_agg(label.name, lv.value) as value FROM dataset_schemas ds
4677+
JOIN label ON label.schema_id = ds.schema_id
4678+
JOIN viewcomponent vc ON vc.labels ? label.name
4679+
JOIN label_values lv ON lv.label_id = label.id AND lv.dataset_id = ds.dataset_id
4680+
WHERE ds.dataset_id = datasetId
4681+
AND vc.view_id IN (SELECT view.id FROM view JOIN dataset ON view.test_id = dataset.testid WHERE dataset.id = datasetId)
4682+
GROUP BY vc.view_id, vcid
4683+
)
4684+
INSERT INTO dataset_view (dataset_id, view_id, label_ids, value)
4685+
SELECT datasetId, view_id, array_agg(DISTINCT label_id), jsonb_object_agg(vcid, value) FROM view_agg, unnest(label_ids) as label_id
4686+
GROUP BY view_id;
4687+
END
4688+
$$ LANGUAGE plpgsql;
4689+
</sql>
4690+
</changeSet>
46684691
</databaseChangeLog>

0 commit comments

Comments
 (0)