2GNJU4VFSYWUXS3JG3XZZFM3QSN3ILOIJVJFA75TKBIFS2WFNXBQC 6JYDU2DMPSG7OXOASKM5HKAQVVNM2KX37P737WSVS4NSNMZETEBAC Y6AHH4THYQA43V77L43YM42DYRPCMDSWLUV4NKWAQYMPL4NTUIPQC RFE6T5LGBFFNEPHZOPF4UNMFC2L4CGD5TPAMOXDLRPH3TZJ43UBAC J5UVLXOK6EDIL5I7VKWH4V2QDS4DPD7FHRK6XBWSXFRQS4JKXFZQC FTPCV25MOLQUNR5CAR453W7T7QTUZRLPLEOSDZ5HSDFAXQZVHOYQC L2E6EVE2RVFVDCUNRJ4CZYSQNS2DZUA5DTBETHBDUQUV2KQQRAOQC WQ3QMV3DU3PVQ3FEKB3YDYV2SFHRNWBRZSRHAOGZSKPUKEMZ33SQC RYTQLATYOZ6ODIKYVJ63TC4OIQBXHSCV3NA2YD4NFP7443GQVSRQC N22GPKYTOLZLBGTGDATQDVZ4R5APZEAOIA7L32X4UXBH4XNI7MWAC OZ2XXTT4IQBKWZ6THVTKKQK7CKLWY2FEFYOJBWI2SLFIXU4NKK5AC 4S5JF5JPKWTDYHFJMTXOFTDAMYHD5ON2UBTLMGVYPJCP6QYIM2EAC # Created by DBIx::Class::Schema::Loader v0.07049 @ 2021-08-26 12:02:36# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:WHdSVHhQykmUz0tR/TExVg
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2021-11-17 12:42:34# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:ylttv/NTMDcSZumBXRCOCw
use utf8;package Hydra::Schema::Result::RunCommandLogs;# Created by DBIx::Class::Schema::Loader# DO NOT MODIFY THE FIRST PART OF THIS FILE=head1 NAMEHydra::Schema::Result::RunCommandLogs=cutuse strict;use warnings;use base 'DBIx::Class::Core';=head1 COMPONENTS LOADED=over 4=item * L<Hydra::Component::ToJSON>=back=cut__PACKAGE__->load_components("+Hydra::Component::ToJSON");=head1 TABLE: C<runcommandlogs>=cut__PACKAGE__->table("runcommandlogs");=head1 ACCESSORS=head2 iddata_type: 'integer'is_auto_increment: 1is_nullable: 0sequence: 'runcommandlogs_id_seq'=head2 job_matcherdata_type: 'text'is_nullable: 0=head2 build_iddata_type: 'integer'is_foreign_key: 1is_nullable: 0=head2 commanddata_type: 'text'is_nullable: 0=head2 start_timedata_type: 'integer'is_nullable: 1=head2 end_timedata_type: 'integer'is_nullable: 1=head2 error_numberdata_type: 'integer'is_nullable: 1=head2 exit_codedata_type: 'integer'is_nullable: 1=head2 signaldata_type: 'integer'is_nullable: 1=head2 core_dumpeddata_type: 'boolean'is_nullable: 1=cut__PACKAGE__->add_columns("id",{data_type => "integer",is_auto_increment => 1,is_nullable => 0,sequence => "runcommandlogs_id_seq",},"job_matcher",{ data_type => "text", is_nullable => 0 },"build_id",{ data_type => "integer", is_foreign_key => 1, is_nullable => 0 },"command",{ data_type => "text", is_nullable => 0 },"start_time",{ data_type => "integer", is_nullable => 1 },"end_time",{ data_type => "integer", is_nullable => 1 },"error_number",{ data_type => "integer", is_nullable => 1 },"exit_code",{ data_type => "integer", is_nullable => 1 },"signal",{ data_type => "integer", is_nullable => 1 },"core_dumped",{ data_type => "boolean", is_nullable => 1 },);=head1 PRIMARY KEY=over 4=item * L</id>=back=cut__PACKAGE__->set_primary_key("id");=head1 RELATIONS=head2 buildType: belongs_toRelated object: L<Hydra::Schema::Result::Builds>=cut__PACKAGE__->belongs_to("build","Hydra::Schema::Result::Builds",{ id => "build_id" },{ is_deferrable => 0, on_delete => "CASCADE", on_update => "NO ACTION" },);# Created by DBIx::Class::Schema::Loader v0.07049 @ 2021-11-18 12:35:52# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:N0G71diB8DNDgkYgaSQrFA# You can replace this text with custom code or comments, and it will be preserved on regeneration1;
-- 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.);