diff --git a/coderd/database/dump.sql b/coderd/database/dump.sql index 0eca61e961..6cf8c0d4bf 100644 --- a/coderd/database/dump.sql +++ b/coderd/database/dump.sql @@ -624,6 +624,8 @@ CREATE UNIQUE INDEX idx_users_email ON users USING btree (email) WHERE (deleted CREATE UNIQUE INDEX idx_users_username ON users USING btree (username) WHERE (deleted = false); +CREATE INDEX provisioner_job_logs_id_job_id_idx ON provisioner_job_logs USING btree (job_id, id); + CREATE UNIQUE INDEX templates_organization_id_name_idx ON templates USING btree (organization_id, lower((name)::text)) WHERE (deleted = false); CREATE UNIQUE INDEX users_email_lower_idx ON users USING btree (lower(email)) WHERE (deleted = false); diff --git a/coderd/database/migrations/000077_job_logs_job_id_id_index.down.sql b/coderd/database/migrations/000077_job_logs_job_id_id_index.down.sql new file mode 100644 index 0000000000..6d500e25e3 --- /dev/null +++ b/coderd/database/migrations/000077_job_logs_job_id_id_index.down.sql @@ -0,0 +1 @@ +DROP INDEX provisioner_job_logs_id_job_id_idx; diff --git a/coderd/database/migrations/000077_job_logs_job_id_id_index.up.sql b/coderd/database/migrations/000077_job_logs_job_id_id_index.up.sql new file mode 100644 index 0000000000..84cbd33b9b --- /dev/null +++ b/coderd/database/migrations/000077_job_logs_job_id_id_index.up.sql @@ -0,0 +1 @@ +CREATE INDEX provisioner_job_logs_id_job_id_idx ON provisioner_job_logs USING btree (job_id, id ASC); diff --git a/coderd/database/queries.sql.go b/coderd/database/queries.sql.go index 2519ddf227..608815fd33 100644 --- a/coderd/database/queries.sql.go +++ b/coderd/database/queries.sql.go @@ -2370,7 +2370,7 @@ WHERE AND ( id > $2 OR id < $3 - ) ORDER BY id + ) ORDER BY id ASC ` type GetProvisionerLogsByIDBetweenParams struct { @@ -2488,9 +2488,9 @@ WHERE AND nested.completed_at IS NULL AND nested.provisioner = ANY($3 :: provisioner_type [ ]) ORDER BY - nested.created_at FOR - UPDATE - SKIP LOCKED + nested.created_at + FOR UPDATE + SKIP LOCKED LIMIT 1 ) RETURNING id, created_at, updated_at, started_at, canceled_at, completed_at, error, organization_id, initiator_id, provisioner, storage_method, type, input, worker_id, file_id diff --git a/coderd/database/queries/provisionerjoblogs.sql b/coderd/database/queries/provisionerjoblogs.sql index 0034b8652d..7d6fece0d8 100644 --- a/coderd/database/queries/provisionerjoblogs.sql +++ b/coderd/database/queries/provisionerjoblogs.sql @@ -8,7 +8,7 @@ WHERE AND ( id > @created_after OR id < @created_before - ) ORDER BY id; + ) ORDER BY id ASC; -- name: InsertProvisionerJobLogs :many INSERT INTO diff --git a/coderd/database/queries/provisionerjobs.sql b/coderd/database/queries/provisionerjobs.sql index 027bd25bc9..6c4097b6b2 100644 --- a/coderd/database/queries/provisionerjobs.sql +++ b/coderd/database/queries/provisionerjobs.sql @@ -23,9 +23,9 @@ WHERE AND nested.completed_at IS NULL AND nested.provisioner = ANY(@types :: provisioner_type [ ]) ORDER BY - nested.created_at FOR - UPDATE - SKIP LOCKED + nested.created_at + FOR UPDATE + SKIP LOCKED LIMIT 1 ) RETURNING *;