From 3e5f737ef534dfc87454fe289816ef118909154e Mon Sep 17 00:00:00 2001 From: Gabe Ruttner Date: Wed, 26 Nov 2025 08:56:20 -0800 Subject: [PATCH] fix: query optimization get latest workflow version (#2576) --- pkg/repository/postgres/dbsqlc/workflows.sql | 33 +++++-------------- .../postgres/dbsqlc/workflows.sql.go | 33 +++++-------------- 2 files changed, 18 insertions(+), 48 deletions(-) diff --git a/pkg/repository/postgres/dbsqlc/workflows.sql b/pkg/repository/postgres/dbsqlc/workflows.sql index f075f9740..72187e4cb 100644 --- a/pkg/repository/postgres/dbsqlc/workflows.sql +++ b/pkg/repository/postgres/dbsqlc/workflows.sql @@ -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 diff --git a/pkg/repository/postgres/dbsqlc/workflows.sql.go b/pkg/repository/postgres/dbsqlc/workflows.sql.go index c161743ed..1a04e7dbb 100644 --- a/pkg/repository/postgres/dbsqlc/workflows.sql.go +++ b/pkg/repository/postgres/dbsqlc/workflows.sql.go @@ -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 {