Check firebird.log [no messages found for interval when this test was running]
Jump to: output_first_mismatch    outcomes_full_history    elapsed_time_chart
Show cross-report outcomes.

Annotation type Annotation details
2 @message
assert   
  - Expected: data dispersion is low.
  + UNEXPECTED: standard deviation of elapsed time ratios is 1.1729631028124896 - greater than MAX_STD_DEV=0.8
  + Elapsed time ratios: [1.3529411764705883, 4.815217391304348, 1.3927765237020315, 2.4586709886547813, 2.09228740936058, 1.9514807813484563, 2.155150145301905]

LOG DETAILS:

2025-04-28 01:46:44.460
2025-04-28 01:46:44.468 act = <firebird.qa.plugin.Action object at [hex]>
2025-04-28 01:46:44.486 capsys = <_pytest.capture.CaptureFixture object at [hex]>
2025-04-28 01:46:44.494
2025-04-28 01:46:44.511 @pytest.mark.version('>=5.0.3')
2025-04-28 01:46:44.526 def test_1(act: Action, capsys):
2025-04-28 01:46:44.538
2025-04-28 01:46:44.546 #############################################
2025-04-28 01:46:44.566 MAX_STD_DEV = 0.5 if os.name == 'nt' else 0.8
2025-04-28 01:46:44.575 #############################################
2025-04-28 01:46:44.591
2025-04-28 01:46:44.606
2025-04-28 01:46:44.618 ddl_lst = []
2025-04-28 01:46:44.634 ddl_lst.extend(
2025-04-28 01:46:44.650 (
2025-04-28 01:46:44.668 """
2025-04-28 01:46:44.675 recreate table log_table(
2025-04-28 01:46:44.680 log_id bigint generated by default as identity constraint pk_log_table primary key
2025-04-28 01:46:44.685 ,field_name varchar(31) not null
2025-04-28 01:46:44.691 ,old_value blob
2025-04-28 01:46:44.696 )
2025-04-28 01:46:44.701 """
2025-04-28 01:46:44.706 ,"""
2025-04-28 01:46:44.713 recreate table test_table (
2025-04-28 01:46:44.719 id             bigint not null,
2025-04-28 01:46:44.725 fld_01         varchar(40),
2025-04-28 01:46:44.732 fld_02         date,
2025-04-28 01:46:44.738 fld_03         varchar(40),
2025-04-28 01:46:44.744 fld_04         date,
2025-04-28 01:46:44.750 fld_05         varchar(1000),
2025-04-28 01:46:44.757 fld_06         varchar(1000),
2025-04-28 01:46:44.763 fld_07         numeric(15,2),
2025-04-28 01:46:44.768 fld_08         date,
2025-04-28 01:46:44.774 fld_09         varchar(95),
2025-04-28 01:46:44.779 fld_10         bigint,
2025-04-28 01:46:44.784 fld_11         bigint,
2025-04-28 01:46:44.790 fld_12         bigint,
2025-04-28 01:46:44.796 fld_13         varchar(250),
2025-04-28 01:46:44.801 fld_14         bigint,
2025-04-28 01:46:44.807 fld_15         date,
2025-04-28 01:46:44.813 fld_16         integer,
2025-04-28 01:46:44.819 fld_17         bigint,
2025-04-28 01:46:44.825 fld_18         date,
2025-04-28 01:46:44.831 fld_19         bigint,
2025-04-28 01:46:44.837 fld_20         varchar(95),
2025-04-28 01:46:44.843 fld_21         date,
2025-04-28 01:46:44.849 fld_22         bigint,
2025-04-28 01:46:44.855 fld_23         numeric(16,0),
2025-04-28 01:46:44.861 fld_24         smallint,
2025-04-28 01:46:44.867 fld_25         bigint,
2025-04-28 01:46:44.872 fld_26         bigint,
2025-04-28 01:46:44.878 fld_27         smallint default 0,
2025-04-28 01:46:44.884 fld_28         date,
2025-04-28 01:46:44.889 fld_29         smallint,
2025-04-28 01:46:44.895 fld_30         date,
2025-04-28 01:46:44.901 fld_31         date,
2025-04-28 01:46:44.906 fld_32         date,
2025-04-28 01:46:44.912 fld_33         date,
2025-04-28 01:46:44.918 fld_34         date,
2025-04-28 01:46:44.924 fld_35         date,
2025-04-28 01:46:44.930 fld_36         date,
2025-04-28 01:46:44.935 fld_37         date,
2025-04-28 01:46:44.942 fld_38         date,
2025-04-28 01:46:44.948 fld_39         date,
2025-04-28 01:46:44.954 fld_40         smallint,
2025-04-28 01:46:44.960 fld_41         smallint,
2025-04-28 01:46:44.967 fld_42         smallint,
2025-04-28 01:46:44.973 fld_43         bigint,
2025-04-28 01:46:44.979 fld_44         bigint,
2025-04-28 01:46:44.985 fld_45         bigint,
2025-04-28 01:46:44.990 fld_46         smallint,
2025-04-28 01:46:44.996 fld_47         varchar(1000),
2025-04-28 01:46:45.002 fld_48         bigint,
2025-04-28 01:46:45.008 fld_49         varchar(4000),
2025-04-28 01:46:45.019 fld_50         bigint
2025-04-28 01:46:45.028 )
2025-04-28 01:46:45.036 """
2025-04-28 01:46:45.044 ,'create generator audit'
2025-04-28 01:46:45.051 ,'alter table test_table add constraint pk_test_table primary key (id) using descending index pk_test_table'
2025-04-28 01:46:45.057 ,"""
2025-04-28 01:46:45.062 create or alter trigger h$test_table for test_table
2025-04-28 01:46:45.067 active after update position 0
2025-04-28 01:46:45.072 as
2025-04-28 01:46:45.077 declare id bigint;
2025-04-28 01:46:45.083 declare o blob sub_type 1 segment size 80;
2025-04-28 01:46:45.088 begin
2025-04-28 01:46:45.094 id = gen_id(audit, 1);
2025-04-28 01:46:45.099 o = old.fld_01; if (o is distinct from new.fld_01) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_01', :o); end
2025-04-28 01:46:45.104 o = old.fld_02; if (o is distinct from new.fld_02) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_02', :o); end
2025-04-28 01:46:45.109 o = old.fld_03; if (o is distinct from new.fld_03) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_03', :o); end
2025-04-28 01:46:45.114 o = old.fld_04; if (o is distinct from new.fld_04) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_04', :o); end
2025-04-28 01:46:45.119 o = old.fld_05; if (o is distinct from new.fld_05) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_05', :o); end
2025-04-28 01:46:45.125 o = old.fld_06; if (o is distinct from new.fld_06) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_06', :o); end
2025-04-28 01:46:45.131 o = old.fld_07; if (o is distinct from new.fld_07) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_07', :o); end
2025-04-28 01:46:45.136 o = old.fld_08; if (o is distinct from new.fld_08) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_08', :o); end
2025-04-28 01:46:45.142 o = old.fld_09; if (o is distinct from new.fld_09) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_09', :o); end
2025-04-28 01:46:45.148 o = old.fld_10; if (o is distinct from new.fld_10) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_10', :o); end
2025-04-28 01:46:45.153
2025-04-28 01:46:45.159
2025-04-28 01:46:45.166 o = old.fld_11; if (o is distinct from new.fld_11) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_11', :o); end
2025-04-28 01:46:45.173 o = old.fld_12; if (o is distinct from new.fld_12) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_12', :o); end
2025-04-28 01:46:45.178 o = old.fld_13; if (o is distinct from new.fld_13) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_13', :o); end
2025-04-28 01:46:45.183 o = old.fld_14; if (o is distinct from new.fld_14) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_14', :o); end
2025-04-28 01:46:45.188 o = old.fld_15; if (o is distinct from new.fld_15) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_15', :o); end
2025-04-28 01:46:45.193 o = old.fld_16; if (o is distinct from new.fld_16) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_16', :o); end
2025-04-28 01:46:45.199 o = old.fld_17; if (o is distinct from new.fld_17) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_17', :o); end
2025-04-28 01:46:45.204 o = old.fld_18; if (o is distinct from new.fld_18) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_18', :o); end
2025-04-28 01:46:45.209 o = old.fld_19; if (o is distinct from new.fld_19) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_19', :o); end
2025-04-28 01:46:45.214 o = old.fld_20; if (o is distinct from new.fld_20) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_20', :o); end
2025-04-28 01:46:45.220
2025-04-28 01:46:45.226
2025-04-28 01:46:45.232 o = old.fld_21; if (o is distinct from new.fld_21) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_21', :o); end
2025-04-28 01:46:45.238 o = old.fld_22; if (o is distinct from new.fld_22) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_22', :o); end
2025-04-28 01:46:45.244 o = old.fld_23; if (o is distinct from new.fld_23) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_23', :o); end
2025-04-28 01:46:45.253 o = old.fld_24; if (o is distinct from new.fld_24) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_24', :o); end
2025-04-28 01:46:45.260 o = old.fld_25; if (o is distinct from new.fld_25) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_25', :o); end
2025-04-28 01:46:45.266 o = old.fld_26; if (o is distinct from new.fld_26) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_26', :o); end
2025-04-28 01:46:45.273 o = old.fld_27; if (o is distinct from new.fld_27) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_27', :o); end
2025-04-28 01:46:45.279 o = old.fld_28; if (o is distinct from new.fld_28) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_28', :o); end
2025-04-28 01:46:45.287 o = old.fld_29; if (o is distinct from new.fld_29) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_29', :o); end
2025-04-28 01:46:45.293 o = old.fld_30; if (o is distinct from new.fld_30) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_30', :o); end
2025-04-28 01:46:45.299
2025-04-28 01:46:45.305
2025-04-28 01:46:45.311 o = old.fld_31; if (o is distinct from new.fld_31) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_31', :o); end
2025-04-28 01:46:45.319 o = old.fld_32; if (o is distinct from new.fld_32) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_32', :o); end
2025-04-28 01:46:45.326 o = old.fld_33; if (o is distinct from new.fld_33) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_33', :o); end
2025-04-28 01:46:45.332 o = old.fld_34; if (o is distinct from new.fld_34) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_34', :o); end
2025-04-28 01:46:45.338 o = old.fld_35; if (o is distinct from new.fld_35) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_35', :o); end
2025-04-28 01:46:45.345 o = old.fld_36; if (o is distinct from new.fld_36) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_36', :o); end
2025-04-28 01:46:45.350 o = old.fld_37; if (o is distinct from new.fld_37) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_37', :o); end
2025-04-28 01:46:45.356 o = old.fld_38; if (o is distinct from new.fld_38) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_38', :o); end
2025-04-28 01:46:45.361 o = old.fld_39; if (o is distinct from new.fld_39) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_39', :o); end
2025-04-28 01:46:45.366 o = old.fld_40; if (o is distinct from new.fld_40) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_40', :o); end
2025-04-28 01:46:45.371
2025-04-28 01:46:45.377
2025-04-28 01:46:45.383
2025-04-28 01:46:45.388 o = old.fld_41; if (o is distinct from new.fld_41) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_41', :o); end
2025-04-28 01:46:45.394 o = old.fld_42; if (o is distinct from new.fld_42) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_42', :o); end
2025-04-28 01:46:45.400 o = old.fld_43; if (o is distinct from new.fld_43) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_43', :o); end
2025-04-28 01:46:45.405 o = old.fld_44; if (o is distinct from new.fld_44) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_44', :o); end
2025-04-28 01:46:45.410 o = old.fld_45; if (o is distinct from new.fld_45) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_45', :o); end
2025-04-28 01:46:45.415 o = old.fld_46; if (o is distinct from new.fld_46) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_46', :o); end
2025-04-28 01:46:45.420 o = old.fld_47; if (o is distinct from new.fld_47) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_47', :o); end
2025-04-28 01:46:45.426 o = old.fld_48; if (o is distinct from new.fld_48) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_48', :o); end
2025-04-28 01:46:45.431 o = old.fld_49; if (o is distinct from new.fld_49) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_49', :o); end
2025-04-28 01:46:45.436 o = old.fld_50; if (o is distinct from new.fld_50) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_50', :o); end
2025-04-28 01:46:45.441 end
2025-04-28 01:46:45.446 """
2025-04-28 01:46:45.451 ,"""
2025-04-28 01:46:45.457 execute block
2025-04-28 01:46:45.462 as
2025-04-28 01:46:45.467 declare id bigint;
2025-04-28 01:46:45.473 begin
2025-04-28 01:46:45.479 id = 0;
2025-04-28 01:46:45.484 while (id < 128000) do
2025-04-28 01:46:45.490 begin
2025-04-28 01:46:45.496 insert into test_table (id,fld_01,fld_02,fld_03,fld_04,fld_05,fld_06,fld_07,fld_08,fld_09,fld_10,fld_11,fld_12,fld_13,fld_14,fld_15,fld_16,fld_17,fld_18,fld_19,fld_20,fld_21,fld_22,fld_23,fld_24,fld_25,fld_26,fld_27,fld_28,fld_29,fld_30,fld_31,fld_32,fld_33,fld_34,fld_35,fld_36,fld_37,fld_38,fld_39,fld_40,fld_41,fld_42,fld_43,fld_44,fld_45,fld_46,fld_47,fld_48,fld_49,fld_50)
2025-04-28 01:46:45.503 values (
2025-04-28 01:46:45.509 :id,
2025-04-28 01:46:45.515 'Identifier',
2025-04-28 01:46:45.521 '2025-01-23',
2025-04-28 01:46:45.528 '1234567890123456789',
2025-04-28 01:46:45.534 '2025-01-23',
2025-04-28 01:46:45.540 'Test data',
2025-04-28 01:46:45.546 'Test another data',
2025-04-28 01:46:45.552 500,
2025-04-28 01:46:45.558 '2025-01-24',
2025-04-28 01:46:45.565 'Test Test Test',
2025-04-28 01:46:45.571 3,
2025-04-28 01:46:45.577 12345678901234,
2025-04-28 01:46:45.583 12,
2025-04-28 01:46:45.589 'Test',
2025-04-28 01:46:45.596 12345678901234,
2025-04-28 01:46:45.602 '2025-01-30',
2025-04-28 01:46:45.607 0,
2025-04-28 01:46:45.613 NULL,
2025-04-28 01:46:45.618 '2025-01-31',
2025-04-28 01:46:45.624 12345679801234,
2025-04-28 01:46:45.630 'Test Test data',
2025-04-28 01:46:45.635 NULL,
2025-04-28 01:46:45.640 1234,
2025-04-28 01:46:45.646 1234567,
2025-04-28 01:46:45.652 2025,
2025-04-28 01:46:45.657 NULL,
2025-04-28 01:46:45.663 NULL,
2025-04-28 01:46:45.668 0,
2025-04-28 01:46:45.673 '2025-02-01',
2025-04-28 01:46:45.683 0,
2025-04-28 01:46:45.692 NULL,
2025-04-28 01:46:45.701 NULL,
2025-04-28 01:46:45.709 NULL,
2025-04-28 01:46:45.719 NULL,
2025-04-28 01:46:45.729 '2025-01-15',
2025-04-28 01:46:45.736 NULL,
2025-04-28 01:46:45.743 NULL,
2025-04-28 01:46:45.750 NULL,
2025-04-28 01:46:45.755 NULL,
2025-04-28 01:46:45.761 NULL,
2025-04-28 01:46:45.768 1,
2025-04-28 01:46:45.774 0,
2025-04-28 01:46:45.781 0,
2025-04-28 01:46:45.787 NULL,
2025-04-28 01:46:45.793 12346579801234,
2025-04-28 01:46:45.799 12345678901234,
2025-04-28 01:46:45.806 NULL,
2025-04-28 01:46:45.812 'Long test data for varchar(1000)',
2025-04-28 01:46:45.820 12345678901234,
2025-04-28 01:46:45.827 'Very long test data for varchar(4000)... Very long test data for varchar(4000)... Very long test data for varchar(4000)... Very long test data for varchar(4000)... Very long test data for varchar(4000)...',
2025-04-28 01:46:45.833 0
2025-04-28 01:46:45.840 );
2025-04-28 01:46:45.847
2025-04-28 01:46:45.853 id = id + 1;
2025-04-28 01:46:45.859 end
2025-04-28 01:46:45.866 end
2025-04-28 01:46:45.872 """
2025-04-28 01:46:45.878 ,"""
2025-04-28 01:46:45.884 create or alter procedure run_test(a int)
2025-04-28 01:46:45.891 returns (t_cnt int, t_diff bigint)
2025-04-28 01:46:45.896 as
2025-04-28 01:46:45.902 declare id bigint;
2025-04-28 01:46:45.907 declare t_begin timestamp;
2025-04-28 01:46:45.913 declare t_end timestamp;
2025-04-28 01:46:45.919 begin
2025-04-28 01:46:45.924 t_cnt = a;
2025-04-28 01:46:45.930 t_begin = 'now';
2025-04-28 01:46:45.936 for
2025-04-28 01:46:45.942 select id
2025-04-28 01:46:45.949 from test_table
2025-04-28 01:46:45.955 where
2025-04-28 01:46:45.960 id >= 0 and id < :t_cnt
2025-04-28 01:46:45.966 into :id do
2025-04-28 01:46:45.972 update test_table set fld_50 = :t_cnt where id = :id;
2025-04-28 01:46:45.978 t_end = 'now';
2025-04-28 01:46:45.987 t_diff = datediff(millisecond from :t_begin to :t_end);
2025-04-28 01:46:45.993 suspend;
2025-04-28 01:46:45.998 end
2025-04-28 01:46:46.004 """
2025-04-28 01:46:46.011 )
2025-04-28 01:46:46.016 )
2025-04-28 01:46:46.022
2025-04-28 01:46:46.028 with act.db.connect() as con:
2025-04-28 01:46:46.034 for x in ddl_lst:
2025-04-28 01:46:46.040 con.execute_immediate(x)
2025-04-28 01:46:46.045 con.commit()
2025-04-28 01:46:46.051
2025-04-28 01:46:46.057 #--------------------------------------
2025-04-28 01:46:46.062
2025-04-28 01:46:46.069 cur = con.cursor()
2025-04-28 01:46:46.076 rs = None
2025-04-28 01:46:46.083 ps = cur.prepare('select t.* from run_test(?) t')
2025-04-28 01:46:46.090 elapsed_time_ratios = []
2025-04-28 01:46:46.098 ms_prev = -1
2025-04-28 01:46:46.106 for n in (0.375, 0.75, 1.5, 3, 6, 12, 24, 48):
2025-04-28 01:46:46.113 # d1 = py_dt.timedelta(0)
2025-04-28 01:46:46.119 rs = cur.execute(ps, ( int(n * 1000),))
2025-04-28 01:46:46.126 t1 = py_dt.datetime.now()
2025-04-28 01:46:46.132 cur.fetchall()
2025-04-28 01:46:46.139 t2 = py_dt.datetime.now()
2025-04-28 01:46:46.145 con.commit()
2025-04-28 01:46:46.151 d1 = t2-t1
2025-04-28 01:46:46.157 ms_curr = d1.seconds*1000 + d1.microseconds//1000
2025-04-28 01:46:46.163
2025-04-28 01:46:46.169 if ms_prev > 0:
2025-04-28 01:46:46.175 elapsed_time_ratios.append(ms_curr / ms_prev)
2025-04-28 01:46:46.181 ms_prev = ms_curr
2025-04-28 01:46:46.186
2025-04-28 01:46:46.191 if rs:
2025-04-28 01:46:46.196 rs.close() # <<< EXPLICITLY CLOSING CURSOR RESULTS
2025-04-28 01:46:46.202 if ps:
2025-04-28 01:46:46.207 ps.free()
2025-04-28 01:46:46.213
2025-04-28 01:46:46.218 expected_msg = 'Expected: data dispersion is low.'
2025-04-28 01:46:46.224 std_deviation = stdev(elapsed_time_ratios)
2025-04-28 01:46:46.230 if std_deviation <= MAX_STD_DEV:
2025-04-28 01:46:46.236 print(expected_msg)
2025-04-28 01:46:46.242 else:
2025-04-28 01:46:46.248 print(f'UNEXPECTED: standard deviation of elapsed time ratios is {std_deviation} - greater than {MAX_STD_DEV=}')
2025-04-28 01:46:46.253 print(f'Elapsed time ratios: {elapsed_time_ratios}')
2025-04-28 01:46:46.258
2025-04-28 01:46:46.263 act.expected_stdout = f"""
2025-04-28 01:46:46.269 {expected_msg}
2025-04-28 01:46:46.275 """
2025-04-28 01:46:46.282 act.stdout = capsys.readouterr().out
2025-04-28 01:46:46.288 >       assert act.clean_stdout == act.clean_expected_stdout
2025-04-28 01:46:46.296 E       assert
2025-04-28 01:46:46.303 E         - Expected: data dispersion is low.
2025-04-28 01:46:46.310 E         + UNEXPECTED: standard deviation of elapsed time ratios is 1.1729631028124896 - greater than MAX_STD_DEV=0.8
2025-04-28 01:46:46.315 E         + Elapsed time ratios: [1.3529411764705883, 4.815217391304348, 1.3927765237020315, 2.4586709886547813, 2.09228740936058, 1.9514807813484563, 2.155150145301905]
2025-04-28 01:46:46.321
2025-04-28 01:46:46.328 tests/bugs/gh_8421_test.py:332: AssertionError
2025-04-28 01:46:46.334 ---------------------------- Captured stdout setup -----------------------------
2025-04-28 01:46:46.340 Creating db: localhost:/var/tmp/qa_2024/test_11727/test.fdb [page_size=None, sql_dialect=None, charset='NONE', user=SYSDBA, password=masterkey]
3 #text
act = <firebird.qa.plugin.Action pytest object at [hex]>
capsys = <_pytest.capture.CaptureFixture pytest object at [hex]>

    @pytest.mark.version('>=5.0.3')
    def test_1(act: Action, capsys):
    
        #############################################
        MAX_STD_DEV = 0.5 if os.name == 'nt' else 0.8
        #############################################
    
    
        ddl_lst = []
        ddl_lst.extend(
            (
                """
                    recreate table log_table(
                        log_id bigint generated by default as identity constraint pk_log_table primary key
                       ,field_name varchar(31) not null
                       ,old_value blob
                    )
                """
               ,"""
                    recreate table test_table (
                        id             bigint not null,
                        fld_01         varchar(40),
                        fld_02         date,
                        fld_03         varchar(40),
                        fld_04         date,
                        fld_05         varchar(1000),
                        fld_06         varchar(1000),
                        fld_07         numeric(15,2),
                        fld_08         date,
                        fld_09         varchar(95),
                        fld_10         bigint,
                        fld_11         bigint,
                        fld_12         bigint,
                        fld_13         varchar(250),
                        fld_14         bigint,
                        fld_15         date,
                        fld_16         integer,
                        fld_17         bigint,
                        fld_18         date,
                        fld_19         bigint,
                        fld_20         varchar(95),
                        fld_21         date,
                        fld_22         bigint,
                        fld_23         numeric(16,0),
                        fld_24         smallint,
                        fld_25         bigint,
                        fld_26         bigint,
                        fld_27         smallint default 0,
                        fld_28         date,
                        fld_29         smallint,
                        fld_30         date,
                        fld_31         date,
                        fld_32         date,
                        fld_33         date,
                        fld_34         date,
                        fld_35         date,
                        fld_36         date,
                        fld_37         date,
                        fld_38         date,
                        fld_39         date,
                        fld_40         smallint,
                        fld_41         smallint,
                        fld_42         smallint,
                        fld_43         bigint,
                        fld_44         bigint,
                        fld_45         bigint,
                        fld_46         smallint,
                        fld_47         varchar(1000),
                        fld_48         bigint,
                        fld_49         varchar(4000),
                        fld_50         bigint
                    )
                """
               ,'create generator audit'
               ,'alter table test_table add constraint pk_test_table primary key (id) using descending index pk_test_table'
               ,"""
                    create or alter trigger h$test_table for test_table
                    active after update position 0
                    as
                        declare id bigint;
                        declare o blob sub_type 1 segment size 80;
                    begin
                        id = gen_id(audit, 1);
                        o = old.fld_01; if (o is distinct from new.fld_01) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_01', :o); end
                        o = old.fld_02; if (o is distinct from new.fld_02) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_02', :o); end
                        o = old.fld_03; if (o is distinct from new.fld_03) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_03', :o); end
                        o = old.fld_04; if (o is distinct from new.fld_04) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_04', :o); end
                        o = old.fld_05; if (o is distinct from new.fld_05) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_05', :o); end
                        o = old.fld_06; if (o is distinct from new.fld_06) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_06', :o); end
                        o = old.fld_07; if (o is distinct from new.fld_07) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_07', :o); end
                        o = old.fld_08; if (o is distinct from new.fld_08) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_08', :o); end
                        o = old.fld_09; if (o is distinct from new.fld_09) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_09', :o); end
                        o = old.fld_10; if (o is distinct from new.fld_10) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_10', :o); end
    
    
                        o = old.fld_11; if (o is distinct from new.fld_11) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_11', :o); end
                        o = old.fld_12; if (o is distinct from new.fld_12) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_12', :o); end
                        o = old.fld_13; if (o is distinct from new.fld_13) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_13', :o); end
                        o = old.fld_14; if (o is distinct from new.fld_14) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_14', :o); end
                        o = old.fld_15; if (o is distinct from new.fld_15) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_15', :o); end
                        o = old.fld_16; if (o is distinct from new.fld_16) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_16', :o); end
                        o = old.fld_17; if (o is distinct from new.fld_17) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_17', :o); end
                        o = old.fld_18; if (o is distinct from new.fld_18) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_18', :o); end
                        o = old.fld_19; if (o is distinct from new.fld_19) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_19', :o); end
                        o = old.fld_20; if (o is distinct from new.fld_20) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_20', :o); end
    
    
                        o = old.fld_21; if (o is distinct from new.fld_21) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_21', :o); end
                        o = old.fld_22; if (o is distinct from new.fld_22) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_22', :o); end
                        o = old.fld_23; if (o is distinct from new.fld_23) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_23', :o); end
                        o = old.fld_24; if (o is distinct from new.fld_24) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_24', :o); end
                        o = old.fld_25; if (o is distinct from new.fld_25) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_25', :o); end
                        o = old.fld_26; if (o is distinct from new.fld_26) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_26', :o); end
                        o = old.fld_27; if (o is distinct from new.fld_27) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_27', :o); end
                        o = old.fld_28; if (o is distinct from new.fld_28) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_28', :o); end
                        o = old.fld_29; if (o is distinct from new.fld_29) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_29', :o); end
                        o = old.fld_30; if (o is distinct from new.fld_30) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_30', :o); end
    
    
                        o = old.fld_31; if (o is distinct from new.fld_31) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_31', :o); end
                        o = old.fld_32; if (o is distinct from new.fld_32) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_32', :o); end
                        o = old.fld_33; if (o is distinct from new.fld_33) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_33', :o); end
                        o = old.fld_34; if (o is distinct from new.fld_34) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_34', :o); end
                        o = old.fld_35; if (o is distinct from new.fld_35) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_35', :o); end
                        o = old.fld_36; if (o is distinct from new.fld_36) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_36', :o); end
                        o = old.fld_37; if (o is distinct from new.fld_37) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_37', :o); end
                        o = old.fld_38; if (o is distinct from new.fld_38) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_38', :o); end
                        o = old.fld_39; if (o is distinct from new.fld_39) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_39', :o); end
                        o = old.fld_40; if (o is distinct from new.fld_40) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_40', :o); end
    
    
    
                        o = old.fld_41; if (o is distinct from new.fld_41) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_41', :o); end
                        o = old.fld_42; if (o is distinct from new.fld_42) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_42', :o); end
                        o = old.fld_43; if (o is distinct from new.fld_43) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_43', :o); end
                        o = old.fld_44; if (o is distinct from new.fld_44) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_44', :o); end
                        o = old.fld_45; if (o is distinct from new.fld_45) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_45', :o); end
                        o = old.fld_46; if (o is distinct from new.fld_46) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_46', :o); end
                        o = old.fld_47; if (o is distinct from new.fld_47) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_47', :o); end
                        o = old.fld_48; if (o is distinct from new.fld_48) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_48', :o); end
                        o = old.fld_49; if (o is distinct from new.fld_49) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_49', :o); end
                        o = old.fld_50; if (o is distinct from new.fld_50) then begin insert into log_table(log_id, field_name, old_value) values(:id, 'fld_50', :o); end
                    end
                """
               ,"""
                    execute block
                    as
                        declare id bigint;
                    begin
                        id = 0;
                        while (id < 128000) do
                        begin
                            insert into test_table (id,fld_01,fld_02,fld_03,fld_04,fld_05,fld_06,fld_07,fld_08,fld_09,fld_10,fld_11,fld_12,fld_13,fld_14,fld_15,fld_16,fld_17,fld_18,fld_19,fld_20,fld_21,fld_22,fld_23,fld_24,fld_25,fld_26,fld_27,fld_28,fld_29,fld_30,fld_31,fld_32,fld_33,fld_34,fld_35,fld_36,fld_37,fld_38,fld_39,fld_40,fld_41,fld_42,fld_43,fld_44,fld_45,fld_46,fld_47,fld_48,fld_49,fld_50)
                                values (
                                         :id,
                                         'Identifier',
                                         '2025-01-23',
                                         '1234567890123456789',
                                         '2025-01-23',
                                         'Test data',
                                         'Test another data',
                                         500,
                                         '2025-01-24',
                                         'Test Test Test',
                                         3,
                                         12345678901234,
                                         12,
                                         'Test',
                                         12345678901234,
                                         '2025-01-30',
                                         0,
                                         NULL,
                                         '2025-01-31',
                                         12345679801234,
                                         'Test Test data',
                                         NULL,
                                         1234,
                                         1234567,
                                         2025,
                                         NULL,
                                         NULL,
                                         0,
                                         '2025-02-01',
                                         0,
                                         NULL,
                                         NULL,
                                         NULL,
                                         NULL,
                                         '2025-01-15',
                                         NULL,
                                         NULL,
                                         NULL,
                                         NULL,
                                         NULL,
                                         1,
                                         0,
                                         0,
                                         NULL,
                                         12346579801234,
                                         12345678901234,
                                         NULL,
                                         'Long test data for varchar(1000)',
                                         12345678901234,
                                         'Very long test data for varchar(4000)... Very long test data for varchar(4000)... Very long test data for varchar(4000)... Very long test data for varchar(4000)... Very long test data for varchar(4000)...',
                                         0
                                       );
    
                            id = id + 1;
                        end
                    end
                """
               ,"""
                    create or alter procedure run_test(a int)
                    returns (t_cnt int, t_diff bigint)
                    as
                        declare id bigint;
                        declare t_begin timestamp;
                        declare t_end timestamp;
                    begin
                        t_cnt = a;
                        t_begin = 'now';
                        for
                            select id
                            from test_table
                            where
                                id >= 0 and id < :t_cnt
                         into :id do
                            update test_table set fld_50 = :t_cnt where id = :id;
                        t_end = 'now';
                        t_diff = datediff(millisecond from :t_begin to :t_end);
                        suspend;
                    end
                """
            )
        )
    
        with act.db.connect() as con:
            for x in ddl_lst:
                con.execute_immediate(x)
                con.commit()
    
            #--------------------------------------
    
            cur = con.cursor()
            rs = None
            ps = cur.prepare('select t.* from run_test(?) t')
            elapsed_time_ratios = []
            ms_prev = -1
            for n in (0.375, 0.75, 1.5, 3, 6, 12, 24, 48):
                # d1 = py_dt.timedelta(0)
                rs = cur.execute(ps, ( int(n * 1000),))
                t1 = py_dt.datetime.now()
                cur.fetchall()
                t2 = py_dt.datetime.now()
                con.commit()
                d1 = t2-t1
                ms_curr = d1.seconds*1000 + d1.microseconds//1000
    
                if ms_prev > 0:
                    elapsed_time_ratios.append(ms_curr / ms_prev)
                ms_prev = ms_curr
    
            if rs:
                rs.close() # <<< EXPLICITLY CLOSING CURSOR RESULTS
            if ps:
                ps.free()
    
        expected_msg = 'Expected: data dispersion is low.'
        std_deviation = stdev(elapsed_time_ratios)
        if std_deviation <= MAX_STD_DEV:
            print(expected_msg)
        else:
            print(f'UNEXPECTED: standard deviation of elapsed time ratios is {std_deviation} - greater than {MAX_STD_DEV=}')
            print(f'Elapsed time ratios: {elapsed_time_ratios}')
    
        act.expected_stdout = f"""
            {expected_msg}
        """
        act.stdout = capsys.readouterr().out
>       assert act.clean_stdout == act.clean_expected_stdout
E       assert   
E         - Expected: data dispersion is low.
E         + UNEXPECTED: standard deviation of elapsed time ratios is 1.1729631028124896 - greater than MAX_STD_DEV=0.8
E         + Elapsed time ratios: [1.3529411764705883, 4.815217391304348, 1.3927765237020315, 2.4586709886547813, 2.09228740936058, 1.9514807813484563, 2.155150145301905]

tests/bugs/gh_8421_test.py:332: AssertionError
Full history of outcomes and elapsed time, ms:
NN SNAP_INFO CS_outcome SS_outcome CS_run_time SS_run_time CS_run_beg CS_run_end SS_run_beg SS_run_end
1 6.0.0.881 2025.06.27 7035d P P 29606 22731 2025.06.28 01:43:42.118 2025.06.28 01:44:11.724 2025.06.27 23:11:28.242 2025.06.27 23:11:50.973
2 6.0.0.877 2025.06.26 8e38f P P 29087 25951 2025.06.27 01:44:38.879 2025.06.27 01:45:07.966 2025.06.26 23:12:46.346 2025.06.26 23:13:12.297
3 6.0.0.876 2025.06.25 b1bec P P 29650 26373 2025.06.26 01:48:30.193 2025.06.26 01:48:59.843 2025.06.25 23:14:41.426 2025.06.25 23:15:07.799
4 6.0.0.863 2025.06.24 c3c20 P P 30553 21143 2025.06.25 01:48:47.917 2025.06.25 01:49:18.470 2025.06.24 23:14:31.177 2025.06.24 23:14:52.320
5 6.0.0.858 2025.06.23 8d6f7 P P 29318 24705 2025.06.24 01:49:10.703 2025.06.24 01:49:40.021 2025.06.23 23:14:37.806 2025.06.23 23:15:02.511
6 6.0.0.849 2025.06.20 7b79c P P 29734 21326 2025.06.21 02:00:41.508 2025.06.21 02:01:11.242 2025.06.20 23:23:45.463 2025.06.20 23:24:06.789
7 6.0.0.848 2025.06.19 c483c P P 30049 21892 2025.06.20 01:57:03.451 2025.06.20 01:57:33.500 2025.06.19 23:20:30.966 2025.06.19 23:20:52.858
8 6.0.0.845 2025.06.18 22b12 P P 29303 27459 2025.06.19 02:05:42.007 2025.06.19 02:06:11.310 2025.06.18 23:23:43.762 2025.06.18 23:24:11.221
9 6.0.0.843 2025.06.16 995f4 P P 30081 16283 2025.06.18 02:03:58.589 2025.06.18 02:04:28.670 2025.06.17 23:25:28.612 2025.06.17 23:25:44.895
10 6.0.0.840 2025.06.14 29bca P P 30202 22751 2025.06.16 01:55:48.370 2025.06.16 01:56:18.572 2025.06.15 23:17:58.870 2025.06.15 23:18:21.621
11 6.0.0.838 2025.06.13 0e28a P P 31246 23679 2025.06.14 02:08:53.161 2025.06.14 02:09:24.407 2025.06.13 23:25:32.595 2025.06.13 23:25:56.274
12 6.0.0.835 2025.06.12 2cf29 P P 29444 25940 2025.06.13 02:08:45.933 2025.06.13 02:09:15.377 2025.06.12 23:29:30.234 2025.06.12 23:29:56.174
13 6.0.0.834 2025.06.11 e889f P P 30315 16426 2025.06.12 02:04:00.638 2025.06.12 02:04:30.953 2025.06.11 23:25:34.011 2025.06.11 23:25:50.437
14 6.0.0.800 2025.06.10 1f226 P P 53880 32675 2025.06.11 00:32:12.430 2025.06.11 00:33:06.310 2025.06.10 22:25:01.967 2025.06.10 22:25:34.642
15 6.0.0.799 2025.06.07 be644 P F 50212 32038 2025.06.10 00:34:37.582 2025.06.10 00:35:27.794 2025.06.09 22:24:44.066 2025.06.09 22:25:16.104
16 6.0.0.797 2025.06.06 303e8 P P 53736 33211 2025.06.07 00:38:04.254 2025.06.07 00:38:57.990 2025.06.06 22:24:16.555 2025.06.06 22:24:49.766
17 6.0.0.795 2025.05.29 7a71a P P 41770 31704 2025.06.06 00:31:59.283 2025.06.06 00:32:41.053 2025.06.05 22:23:25.019 2025.06.05 22:23:56.723
18 6.0.0.792 2025.05.28 b4327 P P 66528 38441 2025.05.29 00:46:34.202 2025.05.29 00:47:40.730 2025.05.28 22:26:36.254 2025.05.28 22:27:14.695
19 6.0.0.791 2025.05.27 02db8 P P 43642 38476 2025.05.28 00:44:21.133 2025.05.28 00:45:04.775 2025.05.27 22:25:41.838 2025.05.27 22:26:20.314
20 6.0.0.789 2025.05.21 64051 P P 40037 36489 2025.05.25 00:36:59.561 2025.05.25 00:37:39.598 2025.05.24 22:24:44.597 2025.05.24 22:25:21.086
21 6.0.0.787 2025.05.20 230ad P F 45406 32921 2025.05.21 00:34:03.145 2025.05.21 00:34:48.551 2025.05.20 22:23:06.728 2025.05.20 22:23:39.649
22 6.0.0.783 2025.05.12 37320 P P 39532 22629 2025.05.19 12:06:55.444 2025.05.19 12:07:34.976 2025.05.19 10:10:58.511 2025.05.19 10:11:21.140
23 6.0.0.779 2025.05.11 136fa P P 58360 33033 2025.05.12 00:28:55.294 2025.05.12 00:29:53.654 2025.05.11 22:22:32.294 2025.05.11 22:23:05.327
24 6.0.0.778 2025.05.07 d735e P P 40257 35820 2025.05.08 00:30:54.141 2025.05.08 00:31:34.398 2025.05.07 22:21:13.683 2025.05.07 22:21:49.503
25 6.0.0.776 2025.05.06 007cd P P 65907 34555 2025.05.07 00:25:24.790 2025.05.07 00:26:30.697 2025.05.06 22:21:08.584 2025.05.06 22:21:43.139
26 6.0.0.770 2025.05.05 82c4a P P 67924 32044 2025.05.06 00:24:44.274 2025.05.06 00:25:52.198 2025.05.05 22:20:07.078 2025.05.05 22:20:39.122
27 6.0.0.767 2025.05.01 cdd29 P P 42155 29932 2025.05.02 00:21:12.550 2025.05.02 00:21:54.705 2025.05.01 22:19:23.217 2025.05.01 22:19:53.149
28 6.0.0.762 2025.04.30 5cb15 P P 54913 33322 2025.05.01 00:17:21.861 2025.05.01 00:18:16.774 2025.04.30 22:17:58.036 2025.04.30 22:18:31.358
29 6.0.0.755 2025.04.29 739c6 P P 53355 29698 2025.04.30 00:21:17.643 2025.04.30 00:22:10.998 2025.04.29 22:19:26.531 2025.04.29 22:19:56.229
30 6.0.0.753 2025.04.27 29ab3 P F 62206 30084 2025.04.28 00:22:47.436 2025.04.28 00:23:49.642 2025.04.27 22:18:41.219 2025.04.27 22:19:11.303
31 6.0.0.745 2025.04.21 78ad8 P P 44275 31444 2025.04.26 00:19:10.214 2025.04.26 00:19:54.489 2025.04.25 22:20:36.263 2025.04.25 22:21:07.707
32 6.0.0.744 2025.04.19 e883a P P 54098 34488 2025.04.20 00:21:28.546 2025.04.20 00:22:22.644 2025.04.19 22:19:49.767 2025.04.19 22:20:24.255
33 6.0.0.742 2025.04.17 abc3b P P 49320 35949 2025.04.19 00:23:25.119 2025.04.19 00:24:14.439 2025.04.18 22:20:13.170 2025.04.18 22:20:49.119
34 6.0.0.737 2025.04.16 fe52b P F 57245 33870 2025.04.17 00:19:17.114 2025.04.17 00:20:14.359 2025.04.16 22:20:16.480 2025.04.16 22:20:50.350
35 6.0.0.736 2025.04.14 3e6be P P 55007 27048 2025.04.15 00:00:32.283 2025.04.15 00:01:27.290 2025.04.14 22:11:50.666 2025.04.14 22:12:17.714
36 6.0.0.735 2025.04.13 6635c P P 39824 20324 2025.04.14 00:04:04.206 2025.04.14 00:04:44.030 2025.04.13 22:13:06.014 2025.04.13 22:13:26.338
37 6.0.0.734 2025.04.12 12f3f P F 52832 26565 2025.04.13 00:00:47.322 2025.04.13 00:01:40.154 2025.04.12 22:12:17.682 2025.04.12 22:12:44.247
38 6.0.0.730 2025.04.11 240b8 P P 52836 27540 2025.04.12 00:03:10.942 2025.04.12 00:04:03.778 2025.04.11 22:11:56.122 2025.04.11 22:12:23.662
39 6.0.0.726 2025.04.10 d79c6 P P 34573 28260 2025.04.11 00:03:33.322 2025.04.11 00:04:07.895 2025.04.10 22:11:59.253 2025.04.10 22:12:27.513
40 6.0.0.725 2025.04.09 a2b05 P P 52227 24511 2025.04.10 00:03:42.114 2025.04.10 00:04:34.341 2025.04.09 22:13:31.262 2025.04.09 22:13:55.773
41 6.0.0.722 2025.04.08 a8b86 P P 50446 34190 2025.04.09 00:20:44.671 2025.04.09 00:21:35.117 2025.04.08 22:19:30.936 2025.04.08 22:20:05.126
42 6.0.0.719 2025.04.06 90fd9 P P 51555 30305 2025.04.07 00:17:34.163 2025.04.07 00:18:25.718 2025.04.06 22:17:44.784 2025.04.06 22:18:15.089
43 6.0.0.717 2025.04.04 53d70 P P 49561 31588 2025.04.05 00:12:41.862 2025.04.05 00:13:31.423 2025.04.04 22:17:07.151 2025.04.04 22:17:38.739
44 6.0.0.716 2025.04.03 fc636 P P 61135 29657 2025.04.04 00:17:05.546 2025.04.04 00:18:06.681 2025.04.03 22:18:46.287 2025.04.03 22:19:15.944
45 6.0.0.715 2025.04.02 907ed P P 36686 33872 2025.04.03 00:17:22.289 2025.04.03 00:17:58.975 2025.04.02 22:19:02.739 2025.04.02 22:19:36.611
46 6.0.0.710 2025.04.01 40651 P P 35796 29103 2025.04.02 00:15:31.647 2025.04.02 00:16:07.443 2025.04.01 22:17:52.584 2025.04.01 22:18:21.687
47 6.0.0.708 2025.03.31 cb069 P P 40500 23880 2025.04.01 00:06:16.139 2025.04.01 00:06:56.639 2025.03.31 22:13:11.933 2025.03.31 22:13:35.813
48 6.0.0.707 2025.03.28 4bd4f P P 34589 26149 2025.03.31 00:06:42.374 2025.03.31 00:07:16.963 2025.03.30 22:13:44.671 2025.03.30 22:14:10.820
49 6.0.0.698 2025.03.26 d72a7 P P 66854 35600 2025.03.28 00:28:59.885 2025.03.28 00:30:06.739 2025.03.27 22:19:31.479 2025.03.27 22:20:07.079
50 6.0.0.693 2025.03.24 0b559 P P 38369 20245 2025.03.25 00:15:51.666 2025.03.25 00:16:30.035 2025.03.24 22:16:15.162 2025.03.24 22:16:35.407
51 6.0.0.687 2025.03.22 730aa P P 58306 33047 2025.03.24 00:25:15.232 2025.03.24 00:26:13.538 2025.03.23 22:23:10.566 2025.03.23 22:23:43.613
52 6.0.0.686 2025.03.20 71bf6 P P 46623 37837 2025.03.21 00:32:24.066 2025.03.21 00:33:10.689 2025.03.20 22:25:32.333 2025.03.20 22:26:10.170
53 6.0.0.685 2025.03.19 a8577 P P 56652 35411 2025.03.20 00:36:21.217 2025.03.20 00:37:17.869 2025.03.19 22:23:28.308 2025.03.19 22:24:03.719
54 6.0.0.680 2025.03.18 90d29 P P 4272 2704 2025.03.19 10:54:58.263 2025.03.19 10:55:02.535 2025.03.19 09:08:56.865 2025.03.19 09:08:59.569
55 6.0.0.677 2025.03.16 c0a60 P P 5495 3361 2025.03.17 00:25:23.243 2025.03.17 00:25:28.738 2025.03.16 22:23:31.173 2025.03.16 22:23:34.534
56 6.0.0.676 2025.03.15 3034f P P 4213 2569 2025.03.16 15:57:00.252 2025.03.16 15:57:04.465 2025.03.16 14:13:26.259 2025.03.16 14:13:28.828
57 6.0.0.673 2025.03.13 40f5b P P 3785 3377 2025.03.14 00:23:43.612 2025.03.14 00:23:47.397 2025.03.13 22:22:24.898 2025.03.13 22:22:28.275
58 6.0.0.671 2025.03.12 a4fff P P 5443 3298 2025.03.13 00:27:24.771 2025.03.13 00:27:30.214 2025.03.12 22:25:36.746 2025.03.12 22:25:40.044
59 6.0.0.663 2025.03.11 daad2 P P 5191 3223 2025.03.12 00:25:58.614 2025.03.12 00:26:03.805 2025.03.11 22:24:43.699 2025.03.11 22:24:46.922
60 6.0.0.661 2025.03.07 b9869 P P 3553 2020 2025.03.11 00:04:14.572 2025.03.11 00:04:18.125 2025.03.10 22:15:39.459 2025.03.10 22:15:41.479
61 6.0.0.660 2025.03.04 a6700 P P 5846 3041 2025.03.07 00:13:26.604 2025.03.07 00:13:32.450 2025.03.06 22:19:33.300 2025.03.06 22:19:36.341
62 6.0.0.658 2025.03.03 f15f8 P P 3760 2108 2025.03.04 00:08:23.644 2025.03.04 00:08:27.404 2025.03.03 22:15:50.453 2025.03.03 22:15:52.561
63 6.0.0.656 2025.02.27 25fb4 P P 6337 3857 2025.03.03 00:37:48.542 2025.03.03 00:37:54.879 2025.03.02 22:27:01.663 2025.03.02 22:27:05.520
64 6.0.0.655 2025.02.25 6e3e0 P P 3525 3241 2025.02.27 00:12:06.277 2025.02.27 00:12:09.802 2025.02.26 22:17:33.241 2025.02.26 22:17:36.482
65 6.0.0.654 2025.02.24 b7141 P P 4537 3216 2025.02.25 00:15:41.636 2025.02.25 00:15:46.173 2025.02.24 22:19:13.926 2025.02.24 22:19:17.142

Elapsed time, ms. Chart for last 65 runs:

Last commits information (all timestamps in UTC):