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   
    Select Expression
    ....-> Nested Loop Join (semi)
  - ........-> Table "T1" Full Scan
  + ........-> Table "PUBLIC"."T1" Full Scan
    ........-> Filter
  - ............-> Table "T2" Full Scan
  + ............-> Table "PUBLIC"."T2" Full Scan
    1

LOG DETAILS:

2025-06-28 05:17:03.489
2025-06-28 05:17:03.496 act = <firebird.qa.plugin.Action object at [hex]>
2025-06-28 05:17:03.503 capsys = <_pytest.capture.CaptureFixture object at [hex]>
2025-06-28 05:17:03.509
2025-06-28 05:17:03.514 @pytest.mark.version('>=5.0.2')
2025-06-28 05:17:03.520 def test_1(act: Action, capsys):
2025-06-28 05:17:03.527
2025-06-28 05:17:03.538 test_sql = """
2025-06-28 05:17:03.550 select 1 as x
2025-06-28 05:17:03.560 from t1
2025-06-28 05:17:03.568 where exists (select 1 from t2 where t1.fld = t2.fld)
2025-06-28 05:17:03.576 """
2025-06-28 05:17:03.583
2025-06-28 05:17:03.589 srv_cfg = driver_config.register_server(name = f'srv_cfg_8231', config = '')
2025-06-28 05:17:03.594 db_cfg_name = f'db_cfg_8231'
2025-06-28 05:17:03.603 db_cfg_object = driver_config.register_database(name = db_cfg_name)
2025-06-28 05:17:03.615 db_cfg_object.server.value = srv_cfg.name
2025-06-28 05:17:03.623 db_cfg_object.database.value = str(act.db.db_path)
2025-06-28 05:17:03.629 if act.is_version('<6'):
2025-06-28 05:17:03.635 db_cfg_object.config.value = f"""
2025-06-28 05:17:03.642 SubQueryConversion = true
2025-06-28 05:17:03.652 """
2025-06-28 05:17:03.661
2025-06-28 05:17:03.670 with connect(db_cfg_name, user = act.db.user, password = act.db.password) as con:
2025-06-28 05:17:03.681 cur = con.cursor()
2025-06-28 05:17:03.690 ps, rs = None, None
2025-06-28 05:17:03.697 try:
2025-06-28 05:17:03.703 ps = cur.prepare(test_sql)
2025-06-28 05:17:03.710
2025-06-28 05:17:03.719 # Print explained plan with padding eash line by dots in order to see indentations:
2025-06-28 05:17:03.727 print( '\n'.join([replace_leading(s) for s in ps.detailed_plan.split('\n')]) )
2025-06-28 05:17:03.734
2025-06-28 05:17:03.740 # ::: NB ::: 'ps' returns data, i.e. this is SELECTABLE expression.
2025-06-28 05:17:03.747 # We have to store result of cur.execute(<psInstance>) in order to
2025-06-28 05:17:03.755 # close it explicitly.
2025-06-28 05:17:03.761 # Otherwise AV can occur during Python garbage collection and this
2025-06-28 05:17:03.767 # causes pytest to hang on its final point.
2025-06-28 05:17:03.773 # Explained by hvlad, email 26.10.24 17:42
2025-06-28 05:17:03.778 rs = cur.execute(ps)
2025-06-28 05:17:03.784 for r in rs:
2025-06-28 05:17:03.789 print(r[0])
2025-06-28 05:17:03.795 except DatabaseError as e:
2025-06-28 05:17:03.803 print(e.__str__())
2025-06-28 05:17:03.809 print(e.gds_codes)
2025-06-28 05:17:03.815 finally:
2025-06-28 05:17:03.823 if rs:
2025-06-28 05:17:03.835 rs.close() # <<< EXPLICITLY CLOSING CURSOR RESULTS
2025-06-28 05:17:03.843 if ps:
2025-06-28 05:17:03.851 ps.free()
2025-06-28 05:17:03.857
2025-06-28 05:17:03.871 con.rollback()
2025-06-28 05:17:03.882
2025-06-28 05:17:03.893 act.expected_stdout = f"""
2025-06-28 05:17:03.902 Select Expression
2025-06-28 05:17:03.908 ....-> Nested Loop Join (semi)
2025-06-28 05:17:03.913 ........-> Table "T1" Full Scan
2025-06-28 05:17:03.918 ........-> Filter
2025-06-28 05:17:03.923 ............-> Table "T2" Full Scan
2025-06-28 05:17:03.928 1
2025-06-28 05:17:03.934 """
2025-06-28 05:17:03.940 act.stdout = capsys.readouterr().out
2025-06-28 05:17:03.946 >       assert act.clean_stdout == act.clean_expected_stdout
2025-06-28 05:17:03.957 E       assert
2025-06-28 05:17:03.966 E           Select Expression
2025-06-28 05:17:03.973 E           ....-> Nested Loop Join (semi)
2025-06-28 05:17:03.979 E         - ........-> Table "T1" Full Scan
2025-06-28 05:17:03.985 E         + ........-> Table "PUBLIC"."T1" Full Scan
2025-06-28 05:17:03.997 E           ........-> Filter
2025-06-28 05:17:04.003 E         - ............-> Table "T2" Full Scan
2025-06-28 05:17:04.011 E         + ............-> Table "PUBLIC"."T2" Full Scan
2025-06-28 05:17:04.029 E           1
2025-06-28 05:17:04.036
2025-06-28 05:17:04.043 tests/bugs/gh_8231_test.py:112: AssertionError
2025-06-28 05:17:04.050 ---------------------------- Captured stdout setup -----------------------------
2025-06-28 05:17:04.056 Creating db: localhost:/var/tmp/qa_2024/test_11709/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.2')
    def test_1(act: Action, capsys):
    
        test_sql = """
            select 1 as x
            from t1
            where exists (select 1 from t2 where t1.fld = t2.fld)
        """
    
        srv_cfg = driver_config.register_server(name = f'srv_cfg_8231', config = '')
        db_cfg_name = f'db_cfg_8231'
        db_cfg_object = driver_config.register_database(name = db_cfg_name)
        db_cfg_object.server.value = srv_cfg.name
        db_cfg_object.database.value = str(act.db.db_path)
        if act.is_version('<6'):
            db_cfg_object.config.value = f"""
                SubQueryConversion = true
            """
    
        with connect(db_cfg_name, user = act.db.user, password = act.db.password) as con:
            cur = con.cursor()
            ps, rs = None, None
            try:
                ps = cur.prepare(test_sql)
    
                # Print explained plan with padding eash line by dots in order to see indentations:
                print( '\n'.join([replace_leading(s) for s in ps.detailed_plan.split('\n')]) )
    
                # ::: NB ::: 'ps' returns data, i.e. this is SELECTABLE expression.
                # We have to store result of cur.execute(<psInstance>) in order to
                # close it explicitly.
                # Otherwise AV can occur during Python garbage collection and this
                # causes pytest to hang on its final point.
                # Explained by hvlad, email 26.10.24 17:42
                rs = cur.execute(ps)
                for r in rs:
                    print(r[0])
            except DatabaseError as e:
                print(e.__str__())
                print(e.gds_codes)
            finally:
                if rs:
                    rs.close() # <<< EXPLICITLY CLOSING CURSOR RESULTS
                if ps:
                    ps.free()
    
            con.rollback()
    
        act.expected_stdout = f"""
            Select Expression
            ....-> Nested Loop Join (semi)
            ........-> Table "T1" Full Scan
            ........-> Filter
            ............-> Table "T2" Full Scan
            1
        """
        act.stdout = capsys.readouterr().out
>       assert act.clean_stdout == act.clean_expected_stdout
E       assert   
E           Select Expression
E           ....-> Nested Loop Join (semi)
E         - ........-> Table "T1" Full Scan
E         + ........-> Table "PUBLIC"."T1" Full Scan
E           ........-> Filter
E         - ............-> Table "T2" Full Scan
E         + ............-> Table "PUBLIC"."T2" Full Scan
E           1

tests/bugs/gh_8231_test.py:112: 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 F F 673 625 2025.06.28 01:42:53.308 2025.06.28 01:42:53.981 2025.06.27 23:10:26.061 2025.06.27 23:10:26.686
2 6.0.0.877 2025.06.26 8e38f F F 614 631 2025.06.27 01:43:50.719 2025.06.27 01:43:51.333 2025.06.26 23:11:45.426 2025.06.26 23:11:46.057
3 6.0.0.876 2025.06.25 b1bec F F 719 620 2025.06.26 01:47:41.432 2025.06.26 01:47:42.151 2025.06.25 23:13:41.314 2025.06.25 23:13:41.934
4 6.0.0.863 2025.06.24 c3c20 F F 730 523 2025.06.25 01:47:59.194 2025.06.25 01:47:59.924 2025.06.24 23:13:28.194 2025.06.24 23:13:28.717
5 6.0.0.858 2025.06.23 8d6f7 F F 613 692 2025.06.24 01:48:21.117 2025.06.24 01:48:21.730 2025.06.23 23:13:35.470 2025.06.23 23:13:36.162
6 6.0.0.849 2025.06.20 7b79c F F 684 371 2025.06.21 01:59:53.414 2025.06.21 01:59:54.098 2025.06.20 23:22:43.514 2025.06.20 23:22:43.885
7 6.0.0.848 2025.06.19 c483c F F 723 342 2025.06.20 01:56:14.245 2025.06.20 01:56:14.968 2025.06.19 23:19:31.019 2025.06.19 23:19:31.361
8 6.0.0.845 2025.06.18 22b12 F F 698 647 2025.06.19 02:04:53.542 2025.06.19 02:04:54.240 2025.06.18 23:22:45.542 2025.06.18 23:22:46.189
9 6.0.0.843 2025.06.16 995f4 F F 664 508 2025.06.18 02:03:08.995 2025.06.18 02:03:09.659 2025.06.17 23:24:32.202 2025.06.17 23:24:32.710
10 6.0.0.840 2025.06.14 29bca F F 712 482 2025.06.16 01:54:57.504 2025.06.16 01:54:58.216 2025.06.15 23:17:00.626 2025.06.15 23:17:01.108
11 6.0.0.838 2025.06.13 0e28a F F 766 636 2025.06.14 02:08:00.769 2025.06.14 02:08:01.535 2025.06.13 23:24:31.211 2025.06.13 23:24:31.847
12 6.0.0.835 2025.06.12 2cf29 F F 632 532 2025.06.13 02:07:55.551 2025.06.13 02:07:56.183 2025.06.12 23:28:37.122 2025.06.12 23:28:37.654
13 6.0.0.834 2025.06.11 e889f F F 740 621 2025.06.12 02:03:09.791 2025.06.12 02:03:10.531 2025.06.11 23:24:49.782 2025.06.11 23:24:50.403
14 6.0.0.800 2025.06.10 1f226 P P 665 639 2025.06.11 00:31:22.915 2025.06.11 00:31:23.580 2025.06.10 22:23:51.360 2025.06.10 22:23:51.999
15 6.0.0.799 2025.06.07 be644 P P 1038 604 2025.06.10 00:33:35.491 2025.06.10 00:33:36.529 2025.06.09 22:23:30.894 2025.06.09 22:23:31.498
16 6.0.0.797 2025.06.06 303e8 P P 1129 618 2025.06.07 00:36:50.239 2025.06.07 00:36:51.368 2025.06.06 22:23:04.879 2025.06.06 22:23:05.497
17 6.0.0.795 2025.05.29 7a71a P P 625 585 2025.06.06 00:31:12.186 2025.06.06 00:31:12.811 2025.06.05 22:22:11.298 2025.06.05 22:22:11.883
18 6.0.0.792 2025.05.28 b4327 P P 656 501 2025.05.29 00:45:28.316 2025.05.29 00:45:28.972 2025.05.28 22:25:20.518 2025.05.28 22:25:21.019
19 6.0.0.791 2025.05.27 02db8 P P 1065 724 2025.05.28 00:43:32.727 2025.05.28 00:43:33.792 2025.05.27 22:24:23.298 2025.05.27 22:24:24.022
20 6.0.0.789 2025.05.21 64051 P P 1115 674 2025.05.25 00:35:51.211 2025.05.25 00:35:52.326 2025.05.24 22:23:28.981 2025.05.24 22:23:29.655
21 6.0.0.787 2025.05.20 230ad P P 617 572 2025.05.21 00:33:12.946 2025.05.21 00:33:13.563 2025.05.20 22:21:53.443 2025.05.20 22:21:54.015
22 6.0.0.783 2025.05.12 37320 P P 744 470 2025.05.19 12:05:55.723 2025.05.19 12:05:56.467 2025.05.19 10:10:05.225 2025.05.19 10:10:05.695
23 6.0.0.779 2025.05.11 136fa P P 591 463 2025.05.12 00:28:00.764 2025.05.12 00:28:01.355 2025.05.11 22:21:19.731 2025.05.11 22:21:20.194
24 6.0.0.778 2025.05.07 d735e P P 696 623 2025.05.08 00:30:05.227 2025.05.08 00:30:05.923 2025.05.07 22:20:02.269 2025.05.07 22:20:02.892
25 6.0.0.776 2025.05.06 007cd P P 653 687 2025.05.07 00:24:26.110 2025.05.07 00:24:26.763 2025.05.06 22:19:52.955 2025.05.06 22:19:53.642
26 6.0.0.770 2025.05.05 82c4a P P 711 565 2025.05.06 00:23:41.095 2025.05.06 00:23:41.806 2025.05.05 22:18:56.918 2025.05.05 22:18:57.483
27 6.0.0.767 2025.05.01 cdd29 P P 677 625 2025.05.02 00:20:26.169 2025.05.02 00:20:26.846 2025.05.01 22:18:12.078 2025.05.01 22:18:12.703
28 6.0.0.762 2025.04.30 5cb15 P P 624 358 2025.05.01 00:16:34.309 2025.05.01 00:16:34.933 2025.04.30 22:17:04.647 2025.04.30 22:17:05.005
29 6.0.0.755 2025.04.29 739c6 P P 1165 506 2025.04.30 00:20:13.614 2025.04.30 00:20:14.779 2025.04.29 22:18:15.403 2025.04.29 22:18:15.909
30 6.0.0.753 2025.04.27 29ab3 P P 681 367 2025.04.28 00:21:44.599 2025.04.28 00:21:45.280 2025.04.27 22:17:34.991 2025.04.27 22:17:35.358
31 6.0.0.745 2025.04.21 78ad8 P P 762 595 2025.04.26 00:18:20.681 2025.04.26 00:18:21.443 2025.04.25 22:19:27.691 2025.04.25 22:19:28.286
32 6.0.0.744 2025.04.19 e883a P P 1104 576 2025.04.20 00:20:27.590 2025.04.20 00:20:28.694 2025.04.19 22:18:40.171 2025.04.19 22:18:40.747
33 6.0.0.742 2025.04.17 abc3b P P 751 574 2025.04.19 00:22:25.263 2025.04.19 00:22:26.014 2025.04.18 22:19:02.180 2025.04.18 22:19:02.754
34 6.0.0.737 2025.04.16 fe52b P P 1043 576 2025.04.17 00:18:06.862 2025.04.17 00:18:07.905 2025.04.16 22:19:04.471 2025.04.16 22:19:05.047

Elapsed time, ms. Chart for last 34 runs:

Last commits information (all timestamps in UTC):