use inline literals in simple queries, add downgrade optimize

This commit is contained in:
Christoph Kluge
2026-03-13 15:16:13 +01:00
parent f15f1452cc
commit ba366d0d72
3 changed files with 8 additions and 2 deletions

View File

@@ -211,7 +211,8 @@ func BuildWhereClause(filter *model.JobFilter, query sq.SelectBuilder) sq.Select
} }
} }
if filter.Shared != nil { if filter.Shared != nil {
query = query.Where("job.shared = ?", *filter.Shared) // Inline literal value so SQLite can match partial indexes (see above).
query = query.Where(fmt.Sprintf("job.shared = '%s'", *filter.Shared))
} }
if filter.Project != nil { if filter.Project != nil {
query = buildStringCondition("job.project", filter.Project, query) query = buildStringCondition("job.project", filter.Project, query)
@@ -229,7 +230,8 @@ func BuildWhereClause(filter *model.JobFilter, query sq.SelectBuilder) sq.Select
query = buildIntCondition("job.num_hwthreads", filter.NumHWThreads, query) query = buildIntCondition("job.num_hwthreads", filter.NumHWThreads, query)
} }
if filter.ArrayJobID != nil { if filter.ArrayJobID != nil {
query = query.Where("job.array_job_id = ?", *filter.ArrayJobID) // Inline literal value so SQLite can match partial indexes (see above).
query = query.Where(fmt.Sprintf("job.array_job_id = %d", *filter.ArrayJobID))
} }
if filter.StartTime != nil { if filter.StartTime != nil {
query = buildTimeCondition("job.start_time", filter.StartTime, query) query = buildTimeCondition("job.start_time", filter.StartTime, query)

View File

@@ -10,3 +10,5 @@ CREATE INDEX IF NOT EXISTS jobs_cluster_jobstate_user
CREATE INDEX IF NOT EXISTS jobs_cluster_jobstate_project CREATE INDEX IF NOT EXISTS jobs_cluster_jobstate_project
ON job (cluster, job_state, project); ON job (cluster, job_state, project);
PRAGMA optimize;

View File

@@ -3,3 +3,5 @@
DROP INDEX IF EXISTS jobs_running_user_stats; DROP INDEX IF EXISTS jobs_running_user_stats;
DROP INDEX IF EXISTS jobs_running_project_stats; DROP INDEX IF EXISTS jobs_running_project_stats;
DROP INDEX IF EXISTS jobs_running_subcluster_stats; DROP INDEX IF EXISTS jobs_running_subcluster_stats;
PRAGMA optimize;