Skip to content

Commit 52d7c72

Browse files
authored
fix: optimised FetchLatestDeploymentWithChartRefs query (#5393)
1 parent 814ce60 commit 52d7c72

File tree

1 file changed

+33
-36
lines changed

1 file changed

+33
-36
lines changed

internal/sql/repository/DeploymentTemplateRepository.go

Lines changed: 33 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -89,42 +89,39 @@ func (impl DeploymentTemplateRepositoryImpl) FetchLatestDeploymentWithChartRefs(
8989
var result []*DeploymentTemplateComparisonMetadata
9090

9191
query := `
92-
WITH ranked_rows AS (
93-
SELECT
94-
p.id as pipeline_id,
95-
p.environment_id,
96-
dth.id as deployment_template_history_id,
97-
c.chart_ref_id,
98-
c.chart_version,
99-
ROW_NUMBER() OVER (PARTITION BY p.environment_id ORDER BY pco.id DESC) AS row_num
100-
FROM
101-
pipeline p
102-
JOIN deployment_template_history dth ON dth.pipeline_id = p.id
103-
JOIN
104-
pipeline_config_override pco ON pco.pipeline_id = p.id
105-
JOIN
106-
chart_env_config_override ceco ON ceco.id = pco.env_config_override_id
107-
JOIN
108-
charts c ON c.id = ceco.chart_id
109-
WHERE
110-
p.app_id = ?
111-
AND p.deleted = false
112-
AND p.environment_id NOT IN (?)
113-
AND dth.deployed = true
114-
)
115-
SELECT
116-
rr.pipeline_id,
117-
rr.environment_id,
118-
rr.deployment_template_history_id,
119-
rr.chart_ref_id,
120-
rr.chart_version,
121-
e.environment_name
122-
FROM
123-
ranked_rows rr
124-
JOIN
125-
environment e ON rr.environment_id = e.id
126-
WHERE
127-
rr.row_num = 1;
92+
WITH pip AS (
93+
SELECT
94+
p.id AS pipeline_id,
95+
MAX(dth.id) AS deployment_template_history_id,
96+
p.environment_id,
97+
e.environment_name
98+
FROM pipeline AS p
99+
INNER JOIN deployment_template_history dth ON dth.pipeline_id = p.id
100+
INNER JOIN environment e ON e.id = p.environment_id
101+
WHERE p.deleted = false
102+
AND p.app_id = ?
103+
AND p.environment_id != ?
104+
AND dth.deployed = true
105+
GROUP BY p.id, e.environment_name
106+
)
107+
108+
SELECT
109+
pip.pipeline_id,
110+
pip.environment_id,
111+
pip.environment_name,
112+
pip.deployment_template_history_id,
113+
c.chart_ref_id,
114+
c.chart_version
115+
FROM pip
116+
INNER JOIN pipeline_config_override pco ON pco.pipeline_id = pip.pipeline_id
117+
INNER JOIN chart_env_config_override ceco ON ceco.id = pco.env_config_override_id
118+
INNER JOIN charts c ON c.id = ceco.chart_id
119+
WHERE pco.id IN (
120+
SELECT max(pco.id)
121+
FROM pipeline_config_override AS pco
122+
WHERE pipeline_id IN (SELECT pipeline_id FROM pip)
123+
GROUP BY pipeline_id
124+
);
128125
`
129126

130127
_, err := impl.dbConnection.Query(&result, query, appId, envId)

0 commit comments

Comments
 (0)