Files
query-orchestration/database/migrations/00000000000101_collector_views.up.sql
T
Michael McGuinness 71f9802e1a Merged in feature/splitqueryrunning (pull request #57)
Split Query Running + Debugging Full Flow

* completedquerysyncrunner

* spliitinglogic

* synccomplete

* informdependents

* only push same collector

* deps

* livetesting

* foundissue

* some issues resolved

* activeupdate

* collectorupdatefixes

* fix dbquesries

* tests

* tests

* pollingdebug
2025-02-11 15:22:59 +00:00

34 lines
1.7 KiB
SQL

CREATE VIEW fullActiveCollectors AS
SELECT DISTINCT c.id, c.jobId, coalesce(cv.minCleanVersion, 0) as minCleanVersion, coalesce(cv.minTextVersion, 0) as minTextVersion, c.activeVersion, c.latestVersion,
jsonb_object_agg(q.name, q.queryId) FILTER (WHERE q.name is not null) AS fields
FROM collectors AS c
LEFT JOIN collectorCodeVersions AS cv ON c.id = cv.collectorId
AND c.activeVersion >= cv.addedVersion
and c.activeVersion < COALESCE(cv.removedVersion, c.activeVersion + 1)
LEFT JOIN collectorQueries AS q ON c.id = q.collectorId
AND c.activeVersion >= q.addedVersion
and c.activeVersion < COALESCE(q.removedVersion, c.activeVersion + 1)
GROUP BY c.id, c.jobId, cv.minCleanVersion, cv.minTextVersion;
CREATE VIEW collectorQueryDependencyTree AS
WITH RECURSIVE
coll as (
SELECT DISTINCT c.id, c.jobId, q.queryId
FROM collectors as c
LEFT JOIN collectorQueries as q ON c.id = q.collectorId
AND c.activeVersion >= q.addedVersion
and c.activeVersion < COALESCE(q.removedVersion, c.activeVersion + 1)
),
collectorQueryDependencyTree AS (
SELECT cq.id as collectorId, cq.jobId, aqc.id as queryId, aqc.type, aqc.requiredIds, aqc.activeVersion
FROM coll as cq
JOIN fullActiveQueries as aqc on cq.queryId = aqc.id
UNION ALL
SELECT acq.collectorId, acq.jobId, q.id as queryId, q.type, q.requiredIds, q.activeVersion
FROM fullActiveQueries as q
JOIN collectorQueryDependencyTree as acq on q.id = ANY(acq.requiredIds)
)
SELECT DISTINCT collectorId, jobId, queryId, type, activeVersion as queryVersion, requiredIds
FROM collectorQueryDependencyTree;