blob: 708b71d74850b6fa0b8c72955b96969829c7552c [file] [log] [blame]
package schema
import (
"time"
"go.skia.org/infra/perf/go/types"
)
// RegressionSchema is the SQL schema for storing regression.Regression's.
type Regression2Schema struct {
// The id for the regression.
ID string `sql:"id UUID PRIMARY KEY DEFAULT gen_random_uuid()"`
// The commit_number where the regression occurred.
CommitNumber types.CommitNumber `sql:"commit_number INT"`
// The commit_number before the commit where the regression occurred.
PrevCommitNumber types.CommitNumber `sql:"prev_commit_number INT"`
// The id of an Alert, i.e. the id from the Alerts table.
AlertID int `sql:"alert_id INT"`
// The timestamp when the anomaly group is created.
CreationTime time.Time `sql:"creation_time TIMESTAMPTZ DEFAULT now()"`
// Median of the data frame before the regression.
MedianBefore float32 `sql:"median_before REAL"`
// Median of the data frame after the regression.
MedianAfter float32 `sql:"median_after REAL"`
// Whether the regression represents an improvement in the metrics.
IsImprovement bool `sql:"is_improvement BOOL"`
// The cluster type for the regression.
ClusterType string `sql:"cluster_type TEXT"`
// A clustering2.ClusterSummary serialized as json.
ClusterSummary interface{} `sql:"cluster_summary JSONB"`
// A frame.FrameResponse serialized as json.
Frame interface{} `sql:"frame JSONB"`
// Triage status for the regression.
TriageStatus string `sql:"triage_status TEXT"`
// Triage message for the regression.
TriageMessage string `sql:"triage_message TEXT"`
// Index used to query regressions based on alert id
byAlertIdIndex struct{} `sql:"INDEX by_alert_id (alert_id)"`
// Index used to query regressions by commit and alert ids
byCommitAndAlertIndex struct{} `sql:"INDEX by_commit_alert (commit_number, alert_id)"`
}