fix: query optimization get latest workflow version (#2576)

This commit is contained in:
Gabe Ruttner
2025-11-26 08:56:20 -08:00
committed by GitHub
parent 9a6d2b5e8f
commit 3e5f737ef5
2 changed files with 18 additions and 48 deletions

View File

@@ -517,33 +517,18 @@ WHERE
workflowVersions."deletedAt" IS NULL;
-- name: GetLatestWorkflowVersionForWorkflows :many
WITH latest_versions AS (
SELECT DISTINCT ON (workflowVersions."workflowId")
workflowVersions."id" AS workflowVersionId,
workflowVersions."workflowId",
workflowVersions."order"
FROM
"WorkflowVersion" as workflowVersions
WHERE
workflowVersions."workflowId" = ANY(@workflowIds::uuid[]) AND
workflowVersions."deletedAt" IS NULL
ORDER BY
workflowVersions."workflowId", workflowVersions."order" DESC
)
SELECT
workflowVersions."id"
FROM
latest_versions
JOIN
"WorkflowVersion" as workflowVersions ON workflowVersions."id" = latest_versions.workflowVersionId
JOIN
"Workflow" as w ON w."id" = workflowVersions."workflowId"
LEFT JOIN
"WorkflowConcurrency" as wc ON wc."workflowVersionId" = workflowVersions."id"
SELECT DISTINCT ON (wv."workflowId")
wv."id"
FROM "WorkflowVersion" wv
INNER JOIN "Workflow" w ON w."id" = wv."workflowId"
WHERE
w."tenantId" = @tenantId::uuid AND
wv."workflowId" = ANY(@workflowIds::uuid[]) AND
w."deletedAt" IS NULL AND
workflowVersions."deletedAt" IS NULL;
wv."deletedAt" IS NULL
ORDER BY
wv."workflowId",
wv."order" DESC;
-- name: GetWorkflowByName :one
SELECT

View File

@@ -1049,33 +1049,18 @@ func (q *Queries) DeleteWorkflowTriggerCronRef(ctx context.Context, db DBTX, id
}
const getLatestWorkflowVersionForWorkflows = `-- name: GetLatestWorkflowVersionForWorkflows :many
WITH latest_versions AS (
SELECT DISTINCT ON (workflowVersions."workflowId")
workflowVersions."id" AS workflowVersionId,
workflowVersions."workflowId",
workflowVersions."order"
FROM
"WorkflowVersion" as workflowVersions
WHERE
workflowVersions."workflowId" = ANY($2::uuid[]) AND
workflowVersions."deletedAt" IS NULL
ORDER BY
workflowVersions."workflowId", workflowVersions."order" DESC
)
SELECT
workflowVersions."id"
FROM
latest_versions
JOIN
"WorkflowVersion" as workflowVersions ON workflowVersions."id" = latest_versions.workflowVersionId
JOIN
"Workflow" as w ON w."id" = workflowVersions."workflowId"
LEFT JOIN
"WorkflowConcurrency" as wc ON wc."workflowVersionId" = workflowVersions."id"
SELECT DISTINCT ON (wv."workflowId")
wv."id"
FROM "WorkflowVersion" wv
INNER JOIN "Workflow" w ON w."id" = wv."workflowId"
WHERE
w."tenantId" = $1::uuid AND
wv."workflowId" = ANY($2::uuid[]) AND
w."deletedAt" IS NULL AND
workflowVersions."deletedAt" IS NULL
wv."deletedAt" IS NULL
ORDER BY
wv."workflowId",
wv."order" DESC
`
type GetLatestWorkflowVersionForWorkflowsParams struct {