Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

chore(coderd/database): optimize GetRunningPrebuiltWorkspaces#18588

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Draft
johnstcn wants to merge1 commit intomain
base:main
Choose a base branch
Loading
fromcj/optimize/GetRunningPrebuiltWorkspaces
Draft
Show file tree
Hide file tree
Changes fromall commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 75 additions & 11 deletionscoderd/database/queries.sql.go
View file
Open in desktop

Some generated files are not rendered by default. Learn more abouthow customized files appear on GitHub.

87 changes: 76 additions & 11 deletionscoderd/database/queries/prebuilds.sql
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -49,18 +49,83 @@ WHERE tvp.desired_instances IS NOT NULL -- Consider only presets that have a pre
AND (t.id = sqlc.narg('template_id')::uuid OR sqlc.narg('template_id') IS NULL);

-- name: GetRunningPrebuiltWorkspaces :many
WITH
latest_prebuilds
AS (
SELECT
workspaces.name,
workspaces.template_id,
latest_build.id,
latest_build.workspace_id,
latest_build.template_version_id,
latest_build.job_id,
latest_build.template_version_preset_id,
latest_build.created_at
FROM
workspaces
LEFT JOIN LATERAL (
SELECT
workspace_builds.id,
workspace_builds.workspace_id,
workspace_builds.template_version_id,
workspace_builds.job_id,
workspace_builds.template_version_preset_id,
workspace_builds.transition,
workspace_builds.created_at,
provisioner_jobs.job_status
FROM
workspace_builds
JOIN provisioner_jobs ON
provisioner_jobs.id
= workspace_builds.job_id
WHERE
workspace_builds.workspace_id
= workspaces.id
ORDER BY
workspace_builds.build_number
DESC
LIMIT
1
)
AS latest_build ON true
WHERE
workspaces.deleted = false
AND workspaces.owner_id
= 'c42fdf75-3097-471c-8c33-fb52454d81c0'::UUID
AND latest_build.transition
= 'start'::workspace_transition
AND latest_build.job_status
= 'succeeded'::provisioner_job_status
),
agent_readiness
AS (
SELECT
latest_prebuilds.workspace_id AS workspace_id,
BOOL_AND(workspace_agents.lifecycle_state = 'ready'::workspace_agent_lifecycle_state)::boolean AS ready
FROM
latest_prebuilds
LEFT JOIN workspace_resources ON
workspace_resources.job_id = latest_prebuilds.job_id
LEFT JOIN workspace_agents ON
workspace_agents.resource_id = workspace_resources.id
GROUP BY
latest_prebuilds.workspace_id
)
SELECT
p.id,
p.name,
p.template_id,
b.template_version_id,
p.current_preset_id AS current_preset_id,
p.ready,
p.created_at
FROM workspace_prebuilds p
INNER JOIN workspace_latest_builds b ON b.workspace_id = p.id
WHERE (b.transition = 'start'::workspace_transition
AND b.job_status = 'succeeded'::provisioner_job_status);
latest_prebuilds.id,
latest_prebuilds.name,
latest_prebuilds.template_id,
latest_prebuilds.template_version_id,
latest_prebuilds.template_version_preset_id AS current_preset_id,
agent_readiness.ready,
latest_prebuilds.created_at
FROM
latest_prebuilds
JOIN agent_readiness ON
agent_readiness.workspace_id = latest_prebuilds.workspace_id
WHERE
agent_readiness.ready
;

-- name: CountInProgressPrebuilds :many
-- CountInProgressPrebuilds returns the number of in-progress prebuilds, grouped by preset ID and transition.
Expand Down
Loading

[8]ページ先頭

©2009-2025 Movatter.jp