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   
    Sub-query
    ....-> Filter
    ........-> Table "T1" as "B" Access By ID
    ............-> Bitmap Or
  - ................-> Bitmap Or
  + ................-> Bitmap
  - ....................-> Bitmap
  - ........................-> Index "T1_X" Range Scan (full match)
  + ....................-> Index "T1_X" List Scan (full match)
  - ....................-> Bitmap
  - ........................-> Index "T1_X" Range Scan (full match)
    ................-> Bitmap
    ....................-> Index "T1_X" Range Scan (full match)
    Select Expression
    ....-> Filter
    ........-> Table "T1" as "A" Full Scan

LOG DETAILS:

2025-02-14 14:31:30.528
2025-02-14 14:31:30.544 act = <firebird.qa.plugin.Action object at [hex]>
2025-02-14 14:31:30.557 capsys = <_pytest.capture.CaptureFixture object at [hex]>
2025-02-14 14:31:30.566
2025-02-14 14:31:30.578 @pytest.mark.version('>=5.0')
2025-02-14 14:31:30.601 def test_1(act: Action, capsys):
2025-02-14 14:31:30.612
2025-02-14 14:31:30.623 test_sql = """
2025-02-14 14:31:30.638 select a.x
2025-02-14 14:31:30.655 from t1 a
2025-02-14 14:31:30.670 where exists(
2025-02-14 14:31:30.684 select *
2025-02-14 14:31:30.693 from t1 b
2025-02-14 14:31:30.704 -- 04-feb-2025: bitmap_Or for three values will be used here since commit
2025-02-14 14:31:30.713 -- 0cc77c89 ('Fix #8109: Plan/Performance regression ...')
2025-02-14 14:31:30.721 -- Before this change plan has: 'Index "T1_X" List Scan (full match)'
2025-02-14 14:31:30.734 where b.x in (a.x, 2*a.x, 3*a.x)
2025-02-14 14:31:30.745 )
2025-02-14 14:31:30.761 """
2025-02-14 14:31:30.771
2025-02-14 14:31:30.780 act.expected_stdout = """
2025-02-14 14:31:30.788 Sub-query
2025-02-14 14:31:30.800 ....-> Filter
2025-02-14 14:31:30.812 ........-> Table "T1" as "B" Access By ID
2025-02-14 14:31:30.830 ............-> Bitmap Or
2025-02-14 14:31:30.843 ................-> Bitmap Or
2025-02-14 14:31:30.853 ....................-> Bitmap
2025-02-14 14:31:30.866 ........................-> Index "T1_X" Range Scan (full match)
2025-02-14 14:31:30.877 ....................-> Bitmap
2025-02-14 14:31:30.892 ........................-> Index "T1_X" Range Scan (full match)
2025-02-14 14:31:30.905 ................-> Bitmap
2025-02-14 14:31:30.915 ....................-> Index "T1_X" Range Scan (full match)
2025-02-14 14:31:30.925 Select Expression
2025-02-14 14:31:30.933 ....-> Filter
2025-02-14 14:31:30.940 ........-> Table "T1" as "A" Full Scan
2025-02-14 14:31:30.948 """
2025-02-14 14:31:30.960 with act.db.connect() as con:
2025-02-14 14:31:30.969 cur = con.cursor()
2025-02-14 14:31:30.977 ps = cur.prepare(test_sql)
2025-02-14 14:31:30.994 print( '\n'.join([replace_leading(s) for s in ps.detailed_plan .split('\n')]) )
2025-02-14 14:31:31.010
2025-02-14 14:31:31.020 act.stdout = capsys.readouterr().out
2025-02-14 14:31:31.030 >       assert act.clean_stdout == act.clean_expected_stdout
2025-02-14 14:31:31.042 E       assert
2025-02-14 14:31:31.050 E           Sub-query
2025-02-14 14:31:31.058 E           ....-> Filter
2025-02-14 14:31:31.066 E           ........-> Table "T1" as "B" Access By ID
2025-02-14 14:31:31.074 E           ............-> Bitmap Or
2025-02-14 14:31:31.081 E         - ................-> Bitmap Or
2025-02-14 14:31:31.098 E         + ................-> Bitmap
2025-02-14 14:31:31.108 E         - ....................-> Bitmap
2025-02-14 14:31:31.116 E         - ........................-> Index "T1_X" Range Scan (full match)
2025-02-14 14:31:31.138 E         + ....................-> Index "T1_X" List Scan (full match)
2025-02-14 14:31:31.155 E         - ....................-> Bitmap
2025-02-14 14:31:31.162 E         - ........................-> Index "T1_X" Range Scan (full match)
2025-02-14 14:31:31.168 E           ................-> Bitmap
2025-02-14 14:31:31.177 E           ....................-> Index "T1_X" Range Scan (full match)
2025-02-14 14:31:31.185 E           Select Expression
2025-02-14 14:31:31.197 E           ....-> Filter
2025-02-14 14:31:31.210 E           ........-> Table "T1" as "A" Full Scan
2025-02-14 14:31:31.218
2025-02-14 14:31:31.226 tests/functional/tabloid/test_e260ced8.py:100: AssertionError
2025-02-14 14:31:31.242 ---------------------------- Captured stdout setup -----------------------------
2025-02-14 14:31:31.253 Creating db: localhost:/var/tmp/qa_2024/test_12304/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')
    def test_1(act: Action, capsys):
    
        test_sql = """
            select a.x
            from t1 a
            where exists(
                select *
                from t1 b
                -- 04-feb-2025: bitmap_Or for three values will be used here since commit
                -- 0cc77c89 ('Fix #8109: Plan/Performance regression ...')
                -- Before this change plan has: 'Index "T1_X" List Scan (full match)'
                where b.x in (a.x, 2*a.x, 3*a.x)
            )
        """
    
        act.expected_stdout = """
            Sub-query
            ....-> Filter
            ........-> Table "T1" as "B" Access By ID
            ............-> Bitmap Or
            ................-> Bitmap Or
            ....................-> Bitmap
            ........................-> Index "T1_X" Range Scan (full match)
            ....................-> Bitmap
            ........................-> Index "T1_X" Range Scan (full match)
            ................-> Bitmap
            ....................-> Index "T1_X" Range Scan (full match)
            Select Expression
            ....-> Filter
            ........-> Table "T1" as "A" Full Scan
        """
        with act.db.connect() as con:
            cur = con.cursor()
            ps = cur.prepare(test_sql)
            print( '\n'.join([replace_leading(s) for s in ps.detailed_plan .split('\n')]) )
    
        act.stdout = capsys.readouterr().out
>       assert act.clean_stdout == act.clean_expected_stdout
E       assert   
E           Sub-query
E           ....-> Filter
E           ........-> Table "T1" as "B" Access By ID
E           ............-> Bitmap Or
E         - ................-> Bitmap Or
E         + ................-> Bitmap
E         - ....................-> Bitmap
E         - ........................-> Index "T1_X" Range Scan (full match)
E         + ....................-> Index "T1_X" List Scan (full match)
E         - ....................-> Bitmap
E         - ........................-> Index "T1_X" Range Scan (full match)
E           ................-> Bitmap
E           ....................-> Index "T1_X" Range Scan (full match)
E           Select Expression
E           ....-> Filter
E           ........-> Table "T1" as "A" Full Scan

tests/functional/tabloid/test_e260ced8.py:100: 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 5.0.3.1657 2025.06.19 4bd4c P P 799 453 2025.06.26 12:33:43.719 2025.06.26 12:33:44.518 2025.06.26 11:10:25.082 2025.06.26 11:10:25.535
2 5.0.3.1657 2025.06.11 dae6f P P 769 428 2025.06.17 07:46:10.206 2025.06.17 07:46:10.975 2025.06.17 06:21:33.361 2025.06.17 06:21:33.789
3 5.0.3.1657 2025.06.10 dbc92 P P 773 545 2025.06.11 12:37:55.008 2025.06.11 12:37:55.781 2025.06.11 11:06:45.688 2025.06.11 11:06:46.233
4 5.0.3.1656 2025.05.20 c4b11 P P 810 443 2025.06.10 12:31:45.491 2025.06.10 12:31:46.301 2025.06.10 11:02:56.555 2025.06.10 11:02:56.998
5 5.0.3.1652 2025.05.13 f51c6 P P 989 557 2025.05.20 05:38:16.457 2025.05.20 05:38:17.446 2025.05.20 03:57:00.329 2025.05.20 03:57:00.886
6 5.0.3.1651 2025.04.30 141ef P P 988 465 2025.05.13 12:36:55.805 2025.05.13 12:36:56.793 2025.05.13 10:54:50.948 2025.05.13 10:54:51.413
7 5.0.3.1650 2025.04.28 4cbff P P 975 472 2025.05.01 12:09:55.917 2025.05.01 12:09:56.892 2025.05.01 10:28:43.260 2025.05.01 10:28:43.732
8 5.0.3.1649 2025.04.21 5b2d0 P P 917 479 2025.04.28 06:07:37.869 2025.04.28 06:07:38.786 2025.04.28 04:28:36.982 2025.04.28 04:28:37.461
9 5.0.3.1648 2025.04.18 2f4c5 P P 906 469 2025.04.20 05:59:31.686 2025.04.20 05:59:32.592 2025.04.20 04:22:20.991 2025.04.20 04:22:21.460
10 5.0.3.1635 2025.03.31 22ec6 P P 931 447 2025.04.18 12:22:32.757 2025.04.18 12:22:33.688 2025.04.18 10:42:13.399 2025.04.18 10:42:13.846
11 5.0.3.1633 2025.03.28 3123a P P 880 436 2025.03.31 10:54:54.953 2025.03.31 10:54:55.833 2025.03.31 09:21:18.579 2025.03.31 09:21:19.015
12 5.0.3.1633 2025.03.27 e0fb8 P P 908 628 2025.03.28 11:29:31.001 2025.03.28 11:29:31.909 2025.03.28 09:52:04.134 2025.03.28 09:52:04.762
13 5.0.3.1631 2025.03.21 1925b P P 944 433 2025.03.27 11:17:07.803 2025.03.27 11:17:08.747 2025.03.27 09:41:12.269 2025.03.27 09:41:12.702
14 5.0.3.1628 2025.03.14 16d05 P P 1636 1228 2025.03.17 08:53:05.908 2025.03.17 08:53:07.544 2025.03.17 07:08:01.962 2025.03.17 07:08:03.190
15 5.0.3.1627 2025.02.26 4e218 P P 1761 1367 2025.03.14 12:07:47.006 2025.03.14 12:07:48.767 2025.03.14 10:17:32.775 2025.03.14 10:17:34.142
16 5.0.3.1624 2025.02.25 dc3b2 P P 1509 1193 2025.02.26 10:56:56.483 2025.02.26 10:56:57.992 2025.02.26 09:16:07.363 2025.02.26 09:16:08.556
17 5.0.2.1615 2025.02.20 4a726 P P 1677 1116 2025.02.25 11:23:17.865 2025.02.25 11:23:19.542 2025.02.25 09:41:18.431 2025.02.25 09:41:19.547
18 5.0.2.1615 2025.02.14 9cb76 P P 1670 1195 2025.02.20 08:12:19.205 2025.02.20 08:12:20.875 2025.02.20 06:34:11.662 2025.02.20 06:34:12.857
19 5.0.2.1577 2024.12.24 3c80e F F 1682 1344 2025.02.14 11:26:08.492 2025.02.14 11:26:10.174 2025.02.14 09:47:12.882 2025.02.14 09:47:14.226
20 5.0.2.1576 2024.12.17 646b0 F F 1319 999 2024.12.24 20:42:52.645 2024.12.24 20:42:53.964 2024.12.24 17:27:47.229 2024.12.24 17:27:48.228
21 5.0.2.1575 2024.12.08 63d39 F F 1285 912 2024.12.16 08:23:56.634 2024.12.16 08:23:57.919 2024.12.16 07:10:19.981 2024.12.16 07:10:20.893
22 5.0.2.1567 2024.11.26 56e63 F F 1332 961 2024.12.04 08:04:28.075 2024.12.04 08:04:29.407 2024.12.04 06:49:08.451 2024.12.04 06:49:09.412
23 5.0.2.1567 2024.11.21 96f61 F F 1348 907 2024.11.26 05:45:45.962 2024.11.26 05:45:47.310 2024.11.26 04:33:59.315 2024.11.26 04:34:00.222
24 5.0.2.1567 2024.11.18 e1289 F F 1254 978 2024.11.21 07:50:17.487 2024.11.21 07:50:18.741 2024.11.21 06:39:15.076 2024.11.21 06:39:16.054
25 5.0.2.1533 2024.10.23 0ec43 P P 1345 925 2024.11.18 08:07:00.953 2024.11.18 08:07:02.298 2024.11.18 06:53:46.083 2024.11.18 06:53:47.008
26 5.0.2.1533 2024.10.22 8af7a P P 1333 884 2024.10.23 10:04:10.466 2024.10.23 10:04:11.799 2024.10.23 08:49:41.998 2024.10.23 08:49:42.882
27 5.0.2.1532 2024.10.15 36dc0 P P 1452 1006 2024.10.22 20:16:00.038 2024.10.22 20:16:01.490 2024.10.22 19:02:04.049 2024.10.22 19:02:05.055
28 5.0.2.1518 2024.10.04 259ba P P 1347 970 2024.10.15 09:49:48.049 2024.10.15 09:49:49.396 2024.10.15 08:35:31.301 2024.10.15 08:35:32.271
29 5.0.2.1518 2024.09.26 703cd P P 1275 992 2024.10.03 08:17:18.446 2024.10.03 08:17:19.721 2024.10.03 07:00:50.093 2024.10.03 07:00:51.085
30 5.0.2.1489 2024.09.05 40838 P P 1451 1021 2024.09.25 08:18:15.032 2024.09.25 08:18:16.483 2024.09.25 07:00:52.856 2024.09.25 07:00:53.877
31 5.0.2.1489 2024.08.31 994a6 P P 2274 1465 2024.09.05 12:37:14.196 2024.09.05 12:37:16.470 2024.09.05 10:46:41.852 2024.09.05 10:46:43.317
32 5.0.2.1476 2024.08.09 843ea P P 2296 1942 2024.08.31 15:09:46.285 2024.08.31 15:09:48.581 2024.08.31 12:52:11.865 2024.08.31 12:52:13.807
33 5.0.1.1454 2024.08.08 30f9f P P 1585 1197 2024.08.09 08:54:20.041 2024.08.09 08:54:21.626 2024.08.09 07:36:13.552 2024.08.09 07:36:14.749
34 5.0.1.1453 2024.08.06 1b9d0 P P 1479 1101 2024.08.08 21:32:43.648 2024.08.08 21:32:45.127 2024.08.08 20:14:38.530 2024.08.08 20:14:39.631
35 5.0.1.1453 2024.07.30 48044 P P 1276 978 2024.08.06 07:32:54.332 2024.08.06 07:32:55.608 2024.08.06 06:25:01.014 2024.08.06 06:25:01.992
36 5.0.1.1453 2024.07.28 8d956 P P 1292 958 2024.07.30 07:26:53.913 2024.07.30 07:26:55.205 2024.07.30 06:19:59.705 2024.07.30 06:20:00.663
37 5.0.1.1429 2024.07.19 8ee90 P P 1240 965 2024.07.27 07:26:57.701 2024.07.27 07:26:58.941 2024.07.27 06:19:15.714 2024.07.27 06:19:16.679
38 5.0.1.1428 2024.07.15 00392 P P 1261 926 2024.07.19 07:19:50.703 2024.07.19 07:19:51.964 2024.07.19 06:13:28.727 2024.07.19 06:13:29.653
39 5.0.1.1428 2024.06.30 67a31 P P 1236 977 2024.07.15 07:21:24.477 2024.07.15 07:21:25.713 2024.07.15 06:14:33.905 2024.07.15 06:14:34.882
40 5.0.1.1415 2024.06.11 31d74 P P 1232 953 2024.06.22 07:08:22.268 2024.06.22 07:08:23.500 2024.06.22 06:04:25.237 2024.06.22 06:04:26.190

Elapsed time, ms. Chart for last 40 runs:

Last commits information (all timestamps in UTC):