Add migration 79: RunCommand logs
[?]
Dec 1, 2021, 8:01 PM
H2SPBT5AU6D4FNYRPTMLYI4EQEGC67ZDNWCRPXNZXLD7BFLDSBUACDependencies
- [2]
D5QIOJGP* Move everything up one directory.
Change contents
- file addition: upgrade-79.sql[2.3004]
-- Records of RunCommand executions---- The intended flow is:---- 1. Create a RunCommandLogs entry when the task is "queued" to run-- 2. Update the start_time when it begins-- 3. Update the end_time and exit_code when it completescreate table RunCommandLogs (id serial primary key not null,job_matcher text not null,build_id integer not null,-- TODO: evaluation_id integer not null,-- can we do this in a principled way? a build can be part of many evaluations-- but a "bug" of RunCommand, imho, is that it should probably run per evaluation?command text not null,start_time integer,end_time integer,error_number integer,exit_code integer,signal integer,core_dumped boolean,foreign key (build_id) references Builds(id) on delete cascade,-- foreign key (evaluation_id) references Builds(id) on delete cascade,constraint RunCommandLogs_not_started_no_exit_time_no_code check (-- If start time is null, then end_time, exit_code, signal, and core_dumped should be null.-- A logical implication operator would be nice :).(start_time is not null) or (end_time is nulland error_number is nulland exit_code is nulland signal is nulland core_dumped is null)),constraint RunCommandLogs_end_time_has_start_time check (-- If end time is not null, then end_time, exit_code, and core_dumped should not be null(end_time is null) or (start_time is not null))-- Note: if exit_code is not null then signal and core_dumped must be null.-- Similarly, if signal is not null then exit_code must be null and-- core_dumped must not be null. However, these semantics are tricky-- to encode as constraints and probably provide limited actual value.);