Jump to: output_first_mismatch    outcomes_full_history    elapsed_time_chart
Show cross-report outcomes.

Annotation type Annotation details
2 @message
assert   
    Select Expression
    ....-> Singularity Check
    ........-> Aggregate
    ............-> Nested Loop Join (inner)
    ................-> Filter
  - ....................-> Table "RDB$DEPENDENCIES" as "DEP" Access By ID
  - ........................-> Bitmap
  - ............................-> Index "RDB$INDEX_nn" Range Scan (full match)
  - ................-> Filter
    ....................-> Table "RDB$PROCEDURES" as "PRC" Access By ID
    ........................-> Bitmap
  + ............................-> Index "RDB$INDEX_nn" Range Scan (partial match: 1/2)
  + ................-> Filter
  + ....................-> Table "RDB$DEPENDENCIES" as "DEP" Access By ID
  + ........................-> Bitmap And
  + ............................-> Bitmap
  - ............................-> Index "RDB$INDEX_nn" Unique Scan
  + ................................-> Index "RDB$INDEX_nn" Range Scan (full match)
  + ............................-> Bitmap
  + ................................-> Index "RDB$INDEX_nn" Range Scan (full match)
    Select Expression
    ....-> Filter
    ........-> Table "RDB$RELATION_FIELDS" as "X" Access By ID
    ............-> Bitmap
    ................-> Index "RDB$INDEX_nn" Range Scan (full match)

LOG DETAILS:

2024-07-15 14:13:05.526
2024-07-15 14:13:05.532 act = <firebird.qa.plugin.Action object at [hex]>
2024-07-15 14:13:05.539 tmp_fbk = PosixPath('/var/tmp/qa_2024/test_11319/gh_8161.tmp.fbk')
2024-07-15 14:13:05.544 capsys = <_pytest.capture.CaptureFixture object at [hex]>
2024-07-15 14:13:05.554
2024-07-15 14:13:05.565 @pytest.mark.version('>=3.0.12')
2024-07-15 14:13:05.573 def test_1(act: Action, tmp_fbk: Path, capsys):
2024-07-15 14:13:05.580 zipped_fbk_file = zipfile.Path(act.files_dir / 'gh_8161.zip', at = 'gh_8161.fbk')
2024-07-15 14:13:05.587 tmp_fbk.write_bytes(zipped_fbk_file.read_bytes())
2024-07-15 14:13:05.594
2024-07-15 14:13:05.601 act.gbak(switches = ['-rep', str(tmp_fbk), act.db.db_path], combine_output = True, io_enc = locale.getpreferredencoding())
2024-07-15 14:13:05.607 print(act.stdout) # must be empty
2024-07-15 14:13:05.613
2024-07-15 14:13:05.619 test_sql = """
2024-07-15 14:13:05.625 execute block as
2024-07-15 14:13:05.631 declare relname varchar(32);
2024-07-15 14:13:05.637 declare cnt int;
2024-07-15 14:13:05.643 begin
2024-07-15 14:13:05.649 for select X.RDB$RELATION_NAME
2024-07-15 14:13:05.655 from RDB$RELATION_FIELDS X
2024-07-15 14:13:05.665 where X.RDB$FIELD_SOURCE = 'BOOL_EMUL'
2024-07-15 14:13:05.675 into :relname
2024-07-15 14:13:05.685 do begin
2024-07-15 14:13:05.693 select count(*)
2024-07-15 14:13:05.701 from RDB$DEPENDENCIES DEP, RDB$PROCEDURES PRC
2024-07-15 14:13:05.708 where DEP.RDB$DEPENDED_ON_NAME = :relname
2024-07-15 14:13:05.713 AND DEP.RDB$FIELD_NAME = :relname
2024-07-15 14:13:05.718 AND DEP.RDB$DEPENDED_ON_TYPE = 0 /* obj_relation */
2024-07-15 14:13:05.723 AND DEP.RDB$DEPENDENT_TYPE = 5 /* obj_procedure */
2024-07-15 14:13:05.727 AND DEP.RDB$DEPENDENT_NAME = PRC.RDB$PROCEDURE_NAME
2024-07-15 14:13:05.732 AND PRC.RDB$PACKAGE_NAME IS NULL
2024-07-15 14:13:05.737 into :cnt;
2024-07-15 14:13:05.743 end
2024-07-15 14:13:05.749 end
2024-07-15 14:13:05.754 """
2024-07-15 14:13:05.760
2024-07-15 14:13:05.765 with act.db.connect() as con:
2024-07-15 14:13:05.772 cur = con.cursor()
2024-07-15 14:13:05.777 ps = cur.prepare(test_sql)
2024-07-15 14:13:05.781 print( '\n'.join([replace_leading(s) for s in ps.detailed_plan.split('\n')]) )
2024-07-15 14:13:05.787
2024-07-15 14:13:05.791 expected_stdout = """
2024-07-15 14:13:05.796 Select Expression
2024-07-15 14:13:05.801 ....-> Singularity Check
2024-07-15 14:13:05.805 ........-> Aggregate
2024-07-15 14:13:05.810 ............-> Nested Loop Join (inner)
2024-07-15 14:13:05.815 ................-> Filter
2024-07-15 14:13:05.821 ....................-> Table "RDB$DEPENDENCIES" as "DEP" Access By ID
2024-07-15 14:13:05.827 ........................-> Bitmap
2024-07-15 14:13:05.833 ............................-> Index "RDB$INDEX_28" Range Scan (full match)
2024-07-15 14:13:05.839 ................-> Filter
2024-07-15 14:13:05.857 ....................-> Table "RDB$PROCEDURES" as "PRC" Access By ID
2024-07-15 14:13:05.868 ........................-> Bitmap
2024-07-15 14:13:05.876 ............................-> Index "RDB$INDEX_21" Unique Scan
2024-07-15 14:13:05.883 Select Expression
2024-07-15 14:13:05.888 ....-> Filter
2024-07-15 14:13:05.894 ........-> Table "RDB$RELATION_FIELDS" as "X" Access By ID
2024-07-15 14:13:05.899 ............-> Bitmap
2024-07-15 14:13:05.904 ................-> Index "RDB$INDEX_3" Range Scan (full match)
2024-07-15 14:13:05.909 """
2024-07-15 14:13:05.915 act.expected_stdout = expected_stdout
2024-07-15 14:13:05.920 act.stdout = capsys.readouterr().out
2024-07-15 14:13:05.930 >       assert act.clean_stdout == act.clean_expected_stdout
2024-07-15 14:13:05.941 E       assert
2024-07-15 14:13:05.951 E           Select Expression
2024-07-15 14:13:05.960 E           ....-> Singularity Check
2024-07-15 14:13:05.968 E           ........-> Aggregate
2024-07-15 14:13:05.976 E           ............-> Nested Loop Join (inner)
2024-07-15 14:13:05.983 E           ................-> Filter
2024-07-15 14:13:05.989 E         - ....................-> Table "RDB$DEPENDENCIES" as "DEP" Access By ID
2024-07-15 14:13:05.996 E         - ........................-> Bitmap
2024-07-15 14:13:06.002 E         - ............................-> Index "RDB$INDEX_nn" Range Scan (full match)
2024-07-15 14:13:06.007 E         - ................-> Filter
2024-07-15 14:13:06.013 E           ....................-> Table "RDB$PROCEDURES" as "PRC" Access By ID
2024-07-15 14:13:06.020 E           ........................-> Bitmap
2024-07-15 14:13:06.026 E         + ............................-> Index "RDB$INDEX_nn" Range Scan (partial match: 1/2)
2024-07-15 14:13:06.032 E         + ................-> Filter
2024-07-15 14:13:06.037 E         + ....................-> Table "RDB$DEPENDENCIES" as "DEP" Access By ID
2024-07-15 14:13:06.050 E         + ........................-> Bitmap And
2024-07-15 14:13:06.060 E         + ............................-> Bitmap
2024-07-15 14:13:06.067 E         - ............................-> Index "RDB$INDEX_nn" Unique Scan
2024-07-15 14:13:06.080 E         + ................................-> Index "RDB$INDEX_nn" Range Scan (full match)
2024-07-15 14:13:06.092 E         + ............................-> Bitmap
2024-07-15 14:13:06.099 E         + ................................-> Index "RDB$INDEX_nn" Range Scan (full match)
2024-07-15 14:13:06.104 E           Select Expression
2024-07-15 14:13:06.110 E           ....-> Filter
2024-07-15 14:13:06.116 E           ........-> Table "RDB$RELATION_FIELDS" as "X" Access By ID
2024-07-15 14:13:06.122 E           ............-> Bitmap
2024-07-15 14:13:06.128 E           ................-> Index "RDB$INDEX_nn" Range Scan (full match)
2024-07-15 14:13:06.133
2024-07-15 14:13:06.139 tests/bugs/gh_8161_test.py:103: AssertionError
2024-07-15 14:13:06.145 ---------------------------- Captured stdout setup -----------------------------
2024-07-15 14:13:06.151 Cached db: db-12.0-None-None-NONE.fdb [page_size=None, sql_dialect=None, charset='NONE'
3 #text
act = <firebird.qa.plugin.Action pytest object at [hex]>
tmp_fbk = PosixPath('/var/tmp/qa_2024/test_11319/gh_8161.tmp.fbk')
capsys = <_pytest.capture.CaptureFixture pytest object at [hex]>

    @pytest.mark.version('>=3.0.12')
    def test_1(act: Action, tmp_fbk: Path, capsys):
        zipped_fbk_file = zipfile.Path(act.files_dir / 'gh_8161.zip', at = 'gh_8161.fbk')
        tmp_fbk.write_bytes(zipped_fbk_file.read_bytes())
    
        act.gbak(switches = ['-rep', str(tmp_fbk), act.db.db_path], combine_output = True, io_enc = locale.getpreferredencoding())
        print(act.stdout) # must be empty
    
        test_sql = """
            execute block as
                declare relname varchar(32);
                declare cnt int;
            begin
                for select X.RDB$RELATION_NAME
                      from RDB$RELATION_FIELDS X
                     where X.RDB$FIELD_SOURCE = 'BOOL_EMUL'
                    into :relname
                do begin
                   select count(*)
                     from RDB$DEPENDENCIES DEP, RDB$PROCEDURES PRC
                    where DEP.RDB$DEPENDED_ON_NAME = :relname
                      AND DEP.RDB$FIELD_NAME = :relname
                      AND DEP.RDB$DEPENDED_ON_TYPE = 0 /* obj_relation */
                      AND DEP.RDB$DEPENDENT_TYPE = 5 /* obj_procedure */
                      AND DEP.RDB$DEPENDENT_NAME = PRC.RDB$PROCEDURE_NAME
                      AND PRC.RDB$PACKAGE_NAME IS NULL
                  into :cnt;
                end
            end
        """
    
        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')]) )
    
        expected_stdout = """
            Select Expression
            ....-> Singularity Check
            ........-> Aggregate
            ............-> Nested Loop Join (inner)
            ................-> Filter
            ....................-> Table "RDB$DEPENDENCIES" as "DEP" Access By ID
            ........................-> Bitmap
            ............................-> Index "RDB$INDEX_28" Range Scan (full match)
            ................-> Filter
            ....................-> Table "RDB$PROCEDURES" as "PRC" Access By ID
            ........................-> Bitmap
            ............................-> Index "RDB$INDEX_21" Unique Scan
            Select Expression
            ....-> Filter
            ........-> Table "RDB$RELATION_FIELDS" as "X" Access By ID
            ............-> Bitmap
            ................-> Index "RDB$INDEX_3" Range Scan (full match)
        """
        act.expected_stdout = expected_stdout
        act.stdout = capsys.readouterr().out
>       assert act.clean_stdout == act.clean_expected_stdout
E       assert   
E           Select Expression
E           ....-> Singularity Check
E           ........-> Aggregate
E           ............-> Nested Loop Join (inner)
E           ................-> Filter
E         - ....................-> Table "RDB$DEPENDENCIES" as "DEP" Access By ID
E         - ........................-> Bitmap
E         - ............................-> Index "RDB$INDEX_nn" Range Scan (full match)
E         - ................-> Filter
E           ....................-> Table "RDB$PROCEDURES" as "PRC" Access By ID
E           ........................-> Bitmap
E         + ............................-> Index "RDB$INDEX_nn" Range Scan (partial match: 1/2)
E         + ................-> Filter
E         + ....................-> Table "RDB$DEPENDENCIES" as "DEP" Access By ID
E         + ........................-> Bitmap And
E         + ............................-> Bitmap
E         - ............................-> Index "RDB$INDEX_nn" Unique Scan
E         + ................................-> Index "RDB$INDEX_nn" Range Scan (full match)
E         + ............................-> Bitmap
E         + ................................-> Index "RDB$INDEX_nn" Range Scan (full match)
E           Select Expression
E           ....-> Filter
E           ........-> Table "RDB$RELATION_FIELDS" as "X" Access By ID
E           ............-> Bitmap
E           ................-> Index "RDB$INDEX_nn" Range Scan (full match)

tests/bugs/gh_8161_test.py:103: 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 3.0.13.33809 2025.05.06 28ad0 P P 1594 1208 2025.06.30 15:09:15.661 2025.06.30 15:09:17.255 2025.06.30 14:11:54.758 2025.06.30 14:11:55.966
2 3.0.13.33808 2025.04.25 28426 P P 1993 1780 2025.05.06 14:12:42.638 2025.05.06 14:12:44.631 2025.05.06 13:05:01.042 2025.05.06 13:05:02.822
3 3.0.13.33803 2025.02.25 08ebd P P 1819 1371 2025.04.25 17:27:40.132 2025.04.25 17:27:41.951 2025.04.25 16:20:42.462 2025.04.25 16:20:43.833
4 3.0.13.33796 2025.01.29 0ab85 P P 2686 2206 2025.02.25 15:59:58.860 2025.02.25 16:00:01.546 2025.02.25 14:52:51.146 2025.02.25 14:52:53.352
5 3.0.13.33796 2025.01.14 99b3b P P 2869 2050 2025.01.28 18:15:17.222 2025.01.28 18:15:20.091 2025.01.28 17:05:58.254 2025.01.28 17:06:00.304
6 3.0.13.33795 2024.11.24 b8847 P P 2579 1967 2025.01.13 15:52:06.047 2025.01.13 15:52:08.626 2025.01.13 14:44:16.186 2025.01.13 14:44:18.153
7 3.0.13.33794 2024.10.15 abe09 P P 1994 1528 2024.11.23 06:51:59.161 2024.11.23 06:52:01.155 2024.11.23 06:00:59.377 2024.11.23 06:01:00.905
8 3.0.13.33793 2024.10.04 82ccc P P 2304 1602 2024.10.14 04:50:10.031 2024.10.14 04:50:12.335 2024.10.14 03:53:07.910 2024.10.14 03:53:09.512
9 3.0.13.33792 2024.08.31 d8791 P P 2286 1744 2024.10.03 09:57:59.839 2024.10.03 09:58:02.125 2024.10.03 08:57:07.332 2024.10.03 08:57:09.076
10 3.0.13.33787 2024.08.17 2e0d6 P P 4963 2783 2024.08.25 16:13:12.126 2024.08.25 16:13:17.089 2024.08.25 13:57:23.000 2024.08.25 13:57:25.783
11 3.0.13.33787 2024.08.09 df740 P P 2278 1744 2024.08.16 13:16:27.322 2024.08.16 13:16:29.600 2024.08.16 12:07:47.204 2024.08.16 12:07:48.948
12 3.0.12.33746 2024.07.15 11dd4 F F 2483 1974 2024.08.09 13:12:04.882 2024.08.09 13:12:07.365 2024.08.09 12:01:28.522 2024.08.09 12:01:30.496
13 3.0.12.33746 2024.06.11 8a5eb F F 2002 1584 2024.07.15 11:01:48.368 2024.07.15 11:01:50.370 2024.07.15 10:03:06.788 2024.07.15 10:03:08.372

Elapsed time, ms. Chart for last 13 runs:

Last commits information (all timestamps in UTC):