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 0.8825679663148706 - greater than MAX_STD_DEV=0.8
  + Elapsed time ratios: [1.0256410256410255, 3.908333333333333, 1.7228144989339018, 1.8440594059405941, 2.2187919463087247, 1.9770114942528736, 1.9892900856793145]

LOG DETAILS:

2025-06-10 01:53:52.824
2025-06-10 01:53:52.834 act = <firebird.qa.plugin.Action object at [hex]>
2025-06-10 01:53:52.841 capsys = <_pytest.capture.CaptureFixture object at [hex]>
2025-06-10 01:53:52.849
2025-06-10 01:53:52.855 @pytest.mark.version('>=5.0.3')
2025-06-10 01:53:52.860 def test_1(act: Action, capsys):
2025-06-10 01:53:52.868
2025-06-10 01:53:52.875 #############################################
2025-06-10 01:53:52.882 MAX_STD_DEV = 0.5 if os.name == 'nt' else 0.8
2025-06-10 01:53:52.888 #############################################
2025-06-10 01:53:52.893
2025-06-10 01:53:52.906
2025-06-10 01:53:52.915 ddl_lst = []
2025-06-10 01:53:52.922 ddl_lst.extend(
2025-06-10 01:53:52.934 (
2025-06-10 01:53:52.946 """
2025-06-10 01:53:52.957 recreate table log_table(
2025-06-10 01:53:52.965 log_id bigint generated by default as identity constraint pk_log_table primary key
2025-06-10 01:53:52.971 ,field_name varchar(31) not null
2025-06-10 01:53:52.981 ,old_value blob
2025-06-10 01:53:52.992 )
2025-06-10 01:53:52.998 """
2025-06-10 01:53:53.005 ,"""
2025-06-10 01:53:53.012 recreate table test_table (
2025-06-10 01:53:53.019 id             bigint not null,
2025-06-10 01:53:53.025 fld_01         varchar(40),
2025-06-10 01:53:53.030 fld_02         date,
2025-06-10 01:53:53.039 fld_03         varchar(40),
2025-06-10 01:53:53.049 fld_04         date,
2025-06-10 01:53:53.060 fld_05         varchar(1000),
2025-06-10 01:53:53.066 fld_06         varchar(1000),
2025-06-10 01:53:53.074 fld_07         numeric(15,2),
2025-06-10 01:53:53.081 fld_08         date,
2025-06-10 01:53:53.088 fld_09         varchar(95),
2025-06-10 01:53:53.093 fld_10         bigint,
2025-06-10 01:53:53.099 fld_11         bigint,
2025-06-10 01:53:53.104 fld_12         bigint,
2025-06-10 01:53:53.109 fld_13         varchar(250),
2025-06-10 01:53:53.115 fld_14         bigint,
2025-06-10 01:53:53.121 fld_15         date,
2025-06-10 01:53:53.127 fld_16         integer,
2025-06-10 01:53:53.133 fld_17         bigint,
2025-06-10 01:53:53.140 fld_18         date,
2025-06-10 01:53:53.147 fld_19         bigint,
2025-06-10 01:53:53.153 fld_20         varchar(95),
2025-06-10 01:53:53.168 fld_21         date,
2025-06-10 01:53:53.175 fld_22         bigint,
2025-06-10 01:53:53.181 fld_23         numeric(16,0),
2025-06-10 01:53:53.189 fld_24         smallint,
2025-06-10 01:53:53.201 fld_25         bigint,
2025-06-10 01:53:53.213 fld_26         bigint,
2025-06-10 01:53:53.224 fld_27         smallint default 0,
2025-06-10 01:53:53.231 fld_28         date,
2025-06-10 01:53:53.239 fld_29         smallint,
2025-06-10 01:53:53.245 fld_30         date,
2025-06-10 01:53:53.254 fld_31         date,
2025-06-10 01:53:53.264 fld_32         date,
2025-06-10 01:53:53.271 fld_33         date,
2025-06-10 01:53:53.278 fld_34         date,
2025-06-10 01:53:53.286 fld_35         date,
2025-06-10 01:53:53.292 fld_36         date,
2025-06-10 01:53:53.298 fld_37         date,
2025-06-10 01:53:53.303 fld_38         date,
2025-06-10 01:53:53.308 fld_39         date,
2025-06-10 01:53:53.314 fld_40         smallint,
2025-06-10 01:53:53.321 fld_41         smallint,
2025-06-10 01:53:53.327 fld_42         smallint,
2025-06-10 01:53:53.335 fld_43         bigint,
2025-06-10 01:53:53.341 fld_44         bigint,
2025-06-10 01:53:53.347 fld_45         bigint,
2025-06-10 01:53:53.353 fld_46         smallint,
2025-06-10 01:53:53.358 fld_47         varchar(1000),
2025-06-10 01:53:53.364 fld_48         bigint,
2025-06-10 01:53:53.372 fld_49         varchar(4000),
2025-06-10 01:53:53.383 fld_50         bigint
2025-06-10 01:53:53.389 )
2025-06-10 01:53:53.396 """
2025-06-10 01:53:53.408 ,'create generator audit'
2025-06-10 01:53:53.420 ,'alter table test_table add constraint pk_test_table primary key (id) using descending index pk_test_table'
2025-06-10 01:53:53.430 ,"""
2025-06-10 01:53:53.440 create or alter trigger h$test_table for test_table
2025-06-10 01:53:53.448 active after update position 0
2025-06-10 01:53:53.463 as
2025-06-10 01:53:53.476 declare id bigint;
2025-06-10 01:53:53.487 declare o blob sub_type 1 segment size 80;
2025-06-10 01:53:53.501 begin
2025-06-10 01:53:53.513 id = gen_id(audit, 1);
2025-06-10 01:53:53.525 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-06-10 01:53:53.533 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-06-10 01:53:53.543 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-06-10 01:53:53.551 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-06-10 01:53:53.560 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-06-10 01:53:53.568 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-06-10 01:53:53.575 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-06-10 01:53:53.586 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-06-10 01:53:53.596 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-06-10 01:53:53.604 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-06-10 01:53:53.615
2025-06-10 01:53:53.623
2025-06-10 01:53:53.629 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-06-10 01:53:53.634 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-06-10 01:53:53.640 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-06-10 01:53:53.646 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-06-10 01:53:53.652 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-06-10 01:53:53.658 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-06-10 01:53:53.664 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-06-10 01:53:53.669 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-06-10 01:53:53.675 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-06-10 01:53:53.681 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-06-10 01:53:53.686
2025-06-10 01:53:53.691
2025-06-10 01:53:53.696 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-06-10 01:53:53.701 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-06-10 01:53:53.707 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-06-10 01:53:53.712 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-06-10 01:53:53.718 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-06-10 01:53:53.723 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-06-10 01:53:53.729 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-06-10 01:53:53.734 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-06-10 01:53:53.745 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-06-10 01:53:53.751 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-06-10 01:53:53.757
2025-06-10 01:53:53.763
2025-06-10 01:53:53.769 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-06-10 01:53:53.775 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-06-10 01:53:53.780 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-06-10 01:53:53.788 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-06-10 01:53:53.794 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-06-10 01:53:53.799 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-06-10 01:53:53.806 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-06-10 01:53:53.813 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-06-10 01:53:53.827 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-06-10 01:53:53.841 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-06-10 01:53:53.851
2025-06-10 01:53:53.865
2025-06-10 01:53:53.875
2025-06-10 01:53:53.881 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-06-10 01:53:53.888 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-06-10 01:53:53.893 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-06-10 01:53:53.898 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-06-10 01:53:53.904 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-06-10 01:53:53.910 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-06-10 01:53:53.916 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-06-10 01:53:53.921 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-06-10 01:53:53.927 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-06-10 01:53:53.933 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-06-10 01:53:53.937 end
2025-06-10 01:53:53.942 """
2025-06-10 01:53:53.947 ,"""
2025-06-10 01:53:53.951 execute block
2025-06-10 01:53:53.956 as
2025-06-10 01:53:53.960 declare id bigint;
2025-06-10 01:53:53.970 begin
2025-06-10 01:53:53.978 id = 0;
2025-06-10 01:53:53.984 while (id < 128000) do
2025-06-10 01:53:53.990 begin
2025-06-10 01:53:53.996 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-06-10 01:53:54.001 values (
2025-06-10 01:53:54.007 :id,
2025-06-10 01:53:54.012 'Identifier',
2025-06-10 01:53:54.017 '2025-01-23',
2025-06-10 01:53:54.022 '1234567890123456789',
2025-06-10 01:53:54.028 '2025-01-23',
2025-06-10 01:53:54.033 'Test data',
2025-06-10 01:53:54.038 'Test another data',
2025-06-10 01:53:54.043 500,
2025-06-10 01:53:54.048 '2025-01-24',
2025-06-10 01:53:54.053 'Test Test Test',
2025-06-10 01:53:54.059 3,
2025-06-10 01:53:54.063 12345678901234,
2025-06-10 01:53:54.068 12,
2025-06-10 01:53:54.074 'Test',
2025-06-10 01:53:54.079 12345678901234,
2025-06-10 01:53:54.084 '2025-01-30',
2025-06-10 01:53:54.089 0,
2025-06-10 01:53:54.095 NULL,
2025-06-10 01:53:54.100 '2025-01-31',
2025-06-10 01:53:54.105 12345679801234,
2025-06-10 01:53:54.110 'Test Test data',
2025-06-10 01:53:54.116 NULL,
2025-06-10 01:53:54.121 1234,
2025-06-10 01:53:54.126 1234567,
2025-06-10 01:53:54.130 2025,
2025-06-10 01:53:54.135 NULL,
2025-06-10 01:53:54.140 NULL,
2025-06-10 01:53:54.145 0,
2025-06-10 01:53:54.150 '2025-02-01',
2025-06-10 01:53:54.155 0,
2025-06-10 01:53:54.160 NULL,
2025-06-10 01:53:54.167 NULL,
2025-06-10 01:53:54.172 NULL,
2025-06-10 01:53:54.178 NULL,
2025-06-10 01:53:54.184 '2025-01-15',
2025-06-10 01:53:54.190 NULL,
2025-06-10 01:53:54.195 NULL,
2025-06-10 01:53:54.201 NULL,
2025-06-10 01:53:54.206 NULL,
2025-06-10 01:53:54.212 NULL,
2025-06-10 01:53:54.217 1,
2025-06-10 01:53:54.222 0,
2025-06-10 01:53:54.228 0,
2025-06-10 01:53:54.233 NULL,
2025-06-10 01:53:54.238 12346579801234,
2025-06-10 01:53:54.243 12345678901234,
2025-06-10 01:53:54.248 NULL,
2025-06-10 01:53:54.253 'Long test data for varchar(1000)',
2025-06-10 01:53:54.258 12345678901234,
2025-06-10 01:53:54.264 '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-06-10 01:53:54.269 0
2025-06-10 01:53:54.274 );
2025-06-10 01:53:54.278
2025-06-10 01:53:54.283 id = id + 1;
2025-06-10 01:53:54.288 end
2025-06-10 01:53:54.293 end
2025-06-10 01:53:54.298 """
2025-06-10 01:53:54.304 ,"""
2025-06-10 01:53:54.310 create or alter procedure run_test(a int)
2025-06-10 01:53:54.318 returns (t_cnt int, t_diff bigint)
2025-06-10 01:53:54.325 as
2025-06-10 01:53:54.331 declare id bigint;
2025-06-10 01:53:54.336 declare t_begin timestamp;
2025-06-10 01:53:54.342 declare t_end timestamp;
2025-06-10 01:53:54.347 begin
2025-06-10 01:53:54.352 t_cnt = a;
2025-06-10 01:53:54.357 t_begin = 'now';
2025-06-10 01:53:54.363 for
2025-06-10 01:53:54.368 select id
2025-06-10 01:53:54.374 from test_table
2025-06-10 01:53:54.379 where
2025-06-10 01:53:54.384 id >= 0 and id < :t_cnt
2025-06-10 01:53:54.389 into :id do
2025-06-10 01:53:54.395 update test_table set fld_50 = :t_cnt where id = :id;
2025-06-10 01:53:54.400 t_end = 'now';
2025-06-10 01:53:54.405 t_diff = datediff(millisecond from :t_begin to :t_end);
2025-06-10 01:53:54.411 suspend;
2025-06-10 01:53:54.416 end
2025-06-10 01:53:54.421 """
2025-06-10 01:53:54.426 )
2025-06-10 01:53:54.431 )
2025-06-10 01:53:54.436
2025-06-10 01:53:54.441 with act.db.connect() as con:
2025-06-10 01:53:54.447 for x in ddl_lst:
2025-06-10 01:53:54.452 con.execute_immediate(x)
2025-06-10 01:53:54.457 con.commit()
2025-06-10 01:53:54.462
2025-06-10 01:53:54.467 #--------------------------------------
2025-06-10 01:53:54.473
2025-06-10 01:53:54.478 cur = con.cursor()
2025-06-10 01:53:54.483 rs = None
2025-06-10 01:53:54.489 ps = cur.prepare('select t.* from run_test(?) t')
2025-06-10 01:53:54.493 elapsed_time_ratios = []
2025-06-10 01:53:54.498 ms_prev = -1
2025-06-10 01:53:54.504 for n in (0.375, 0.75, 1.5, 3, 6, 12, 24, 48):
2025-06-10 01:53:54.509 # d1 = py_dt.timedelta(0)
2025-06-10 01:53:54.515 rs = cur.execute(ps, ( int(n * 1000),))
2025-06-10 01:53:54.520 t1 = py_dt.datetime.now()
2025-06-10 01:53:54.527 cur.fetchall()
2025-06-10 01:53:54.532 t2 = py_dt.datetime.now()
2025-06-10 01:53:54.537 con.commit()
2025-06-10 01:53:54.541 d1 = t2-t1
2025-06-10 01:53:54.547 ms_curr = d1.seconds*1000 + d1.microseconds//1000
2025-06-10 01:53:54.552
2025-06-10 01:53:54.556 if ms_prev > 0:
2025-06-10 01:53:54.561 elapsed_time_ratios.append(ms_curr / ms_prev)
2025-06-10 01:53:54.566 ms_prev = ms_curr
2025-06-10 01:53:54.571
2025-06-10 01:53:54.575 if rs:
2025-06-10 01:53:54.580 rs.close() # <<< EXPLICITLY CLOSING CURSOR RESULTS
2025-06-10 01:53:54.585 if ps:
2025-06-10 01:53:54.591 ps.free()
2025-06-10 01:53:54.597
2025-06-10 01:53:54.602 expected_msg = 'Expected: data dispersion is low.'
2025-06-10 01:53:54.607 std_deviation = stdev(elapsed_time_ratios)
2025-06-10 01:53:54.612 if std_deviation <= MAX_STD_DEV:
2025-06-10 01:53:54.617 print(expected_msg)
2025-06-10 01:53:54.621 else:
2025-06-10 01:53:54.626 print(f'UNEXPECTED: standard deviation of elapsed time ratios is {std_deviation} - greater than {MAX_STD_DEV=}')
2025-06-10 01:53:54.631 print(f'Elapsed time ratios: {elapsed_time_ratios}')
2025-06-10 01:53:54.636
2025-06-10 01:53:54.641 act.expected_stdout = f"""
2025-06-10 01:53:54.646 {expected_msg}
2025-06-10 01:53:54.651 """
2025-06-10 01:53:54.656 act.stdout = capsys.readouterr().out
2025-06-10 01:53:54.662 >       assert act.clean_stdout == act.clean_expected_stdout
2025-06-10 01:53:54.667 E       assert
2025-06-10 01:53:54.672 E         - Expected: data dispersion is low.
2025-06-10 01:53:54.677 E         + UNEXPECTED: standard deviation of elapsed time ratios is 0.8825679663148706 - greater than MAX_STD_DEV=0.8
2025-06-10 01:53:54.683 E         + Elapsed time ratios: [1.0256410256410255, 3.908333333333333, 1.7228144989339018, 1.8440594059405941, 2.2187919463087247, 1.9770114942528736, 1.9892900856793145]
2025-06-10 01:53:54.688
2025-06-10 01:53:54.693 tests/bugs/gh_8421_test.py:332: AssertionError
2025-06-10 01:53:54.699 ---------------------------- Captured stdout setup -----------------------------
2025-06-10 01:53:54.705 Creating db: localhost:/var/tmp/qa_2024/test_11729/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 0.8825679663148706 - greater than MAX_STD_DEV=0.8
E         + Elapsed time ratios: [1.0256410256410255, 3.908333333333333, 1.7228144989339018, 1.8440594059405941, 2.2187919463087247, 1.9770114942528736, 1.9892900856793145]

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.884 2025.06.30 f7e5f P P 29720 24948 2025.07.01 02:15:23.374 2025.07.01 02:15:53.094 2025.06.30 23:34:44.386 2025.06.30 23:35:09.334
2 6.0.0.881 2025.06.27 7035d P P 31085 25631 2025.06.30 02:05:47.336 2025.06.30 02:06:18.421 2025.06.29 23:21:54.747 2025.06.29 23:22:20.378
3 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
4 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
5 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
6 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
7 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
8 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
9 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
10 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
11 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
12 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
13 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
14 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
15 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
16 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
17 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
18 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
19 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
20 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
21 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
22 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
23 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
24 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
25 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
26 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
27 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
28 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
29 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
30 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
31 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
32 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
33 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
34 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
35 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
36 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
37 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
38 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
39 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
40 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
41 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
42 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
43 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
44 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
45 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
46 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
47 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
48 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
49 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
50 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
51 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
52 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
53 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
54 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
55 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
56 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
57 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
58 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
59 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
60 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
61 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
62 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
63 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
64 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
65 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
66 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 66 runs:

Last commits information (all timestamps in UTC):