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-08-09 16:27:08.711
2024-08-09 16:27:08.720 act = <firebird.qa.plugin.Action object at [hex]>
2024-08-09 16:27:08.729 tmp_fbk = PosixPath('/var/tmp/qa_2024/test_11320/gh_8161.tmp.fbk')
2024-08-09 16:27:08.736 capsys = <_pytest.capture.CaptureFixture object at [hex]>
2024-08-09 16:27:08.743
2024-08-09 16:27:08.749 @pytest.mark.version('>=3.0.12')
2024-08-09 16:27:08.756 def test_1(act: Action, tmp_fbk: Path, capsys):
2024-08-09 16:27:08.763 zipped_fbk_file = zipfile.Path(act.files_dir / 'gh_8161.zip', at = 'gh_8161.fbk')
2024-08-09 16:27:08.769 tmp_fbk.write_bytes(zipped_fbk_file.read_bytes())
2024-08-09 16:27:08.774
2024-08-09 16:27:08.780 act.gbak(switches = ['-rep', str(tmp_fbk), act.db.db_path], combine_output = True, io_enc = locale.getpreferredencoding())
2024-08-09 16:27:08.784 print(act.stdout) # must be empty
2024-08-09 16:27:08.789
2024-08-09 16:27:08.801 test_sql = """
2024-08-09 16:27:08.811 execute block as
2024-08-09 16:27:08.818 declare relname varchar(32);
2024-08-09 16:27:08.824 declare cnt int;
2024-08-09 16:27:08.832 begin
2024-08-09 16:27:08.842 for select X.RDB$RELATION_NAME
2024-08-09 16:27:08.855 from RDB$RELATION_FIELDS X
2024-08-09 16:27:08.867 where X.RDB$FIELD_SOURCE = 'BOOL_EMUL'
2024-08-09 16:27:08.879 into :relname
2024-08-09 16:27:08.888 do begin
2024-08-09 16:27:08.895 select count(*)
2024-08-09 16:27:08.902 from RDB$DEPENDENCIES DEP, RDB$PROCEDURES PRC
2024-08-09 16:27:08.907 where DEP.RDB$DEPENDED_ON_NAME = :relname
2024-08-09 16:27:08.912 AND DEP.RDB$FIELD_NAME = :relname
2024-08-09 16:27:08.916 AND DEP.RDB$DEPENDED_ON_TYPE = 0 /* obj_relation */
2024-08-09 16:27:08.921 AND DEP.RDB$DEPENDENT_TYPE = 5 /* obj_procedure */
2024-08-09 16:27:08.926 AND DEP.RDB$DEPENDENT_NAME = PRC.RDB$PROCEDURE_NAME
2024-08-09 16:27:08.932 AND PRC.RDB$PACKAGE_NAME IS NULL
2024-08-09 16:27:08.936 into :cnt;
2024-08-09 16:27:08.941 end
2024-08-09 16:27:08.946 end
2024-08-09 16:27:08.951 """
2024-08-09 16:27:08.956
2024-08-09 16:27:08.961 with act.db.connect() as con:
2024-08-09 16:27:08.969 cur = con.cursor()
2024-08-09 16:27:08.976 ps = cur.prepare(test_sql)
2024-08-09 16:27:08.982 print( '\n'.join([replace_leading(s) for s in ps.detailed_plan.split('\n')]) )
2024-08-09 16:27:08.987
2024-08-09 16:27:08.992 expected_stdout = """
2024-08-09 16:27:09.000 Select Expression
2024-08-09 16:27:09.009 ....-> Singularity Check
2024-08-09 16:27:09.018 ........-> Aggregate
2024-08-09 16:27:09.026 ............-> Nested Loop Join (inner)
2024-08-09 16:27:09.034 ................-> Filter
2024-08-09 16:27:09.041 ....................-> Table "RDB$DEPENDENCIES" as "DEP" Access By ID
2024-08-09 16:27:09.049 ........................-> Bitmap
2024-08-09 16:27:09.056 ............................-> Index "RDB$INDEX_28" Range Scan (full match)
2024-08-09 16:27:09.063 ................-> Filter
2024-08-09 16:27:09.070 ....................-> Table "RDB$PROCEDURES" as "PRC" Access By ID
2024-08-09 16:27:09.078 ........................-> Bitmap
2024-08-09 16:27:09.085 ............................-> Index "RDB$INDEX_21" Unique Scan
2024-08-09 16:27:09.092 Select Expression
2024-08-09 16:27:09.099 ....-> Filter
2024-08-09 16:27:09.106 ........-> Table "RDB$RELATION_FIELDS" as "X" Access By ID
2024-08-09 16:27:09.112 ............-> Bitmap
2024-08-09 16:27:09.118 ................-> Index "RDB$INDEX_3" Range Scan (full match)
2024-08-09 16:27:09.124 """
2024-08-09 16:27:09.130 act.expected_stdout = expected_stdout
2024-08-09 16:27:09.142 act.stdout = capsys.readouterr().out
2024-08-09 16:27:09.153 >       assert act.clean_stdout == act.clean_expected_stdout
2024-08-09 16:27:09.161 E       assert
2024-08-09 16:27:09.169 E           Select Expression
2024-08-09 16:27:09.181 E           ....-> Singularity Check
2024-08-09 16:27:09.192 E           ........-> Aggregate
2024-08-09 16:27:09.200 E           ............-> Nested Loop Join (inner)
2024-08-09 16:27:09.208 E           ................-> Filter
2024-08-09 16:27:09.215 E         - ....................-> Table "RDB$DEPENDENCIES" as "DEP" Access By ID
2024-08-09 16:27:09.221 E         - ........................-> Bitmap
2024-08-09 16:27:09.227 E         - ............................-> Index "RDB$INDEX_nn" Range Scan (full match)
2024-08-09 16:27:09.233 E         - ................-> Filter
2024-08-09 16:27:09.246 E           ....................-> Table "RDB$PROCEDURES" as "PRC" Access By ID
2024-08-09 16:27:09.257 E           ........................-> Bitmap
2024-08-09 16:27:09.269 E         + ............................-> Index "RDB$INDEX_nn" Range Scan (partial match: 1/2)
2024-08-09 16:27:09.279 E         + ................-> Filter
2024-08-09 16:27:09.287 E         + ....................-> Table "RDB$DEPENDENCIES" as "DEP" Access By ID
2024-08-09 16:27:09.295 E         + ........................-> Bitmap And
2024-08-09 16:27:09.302 E         + ............................-> Bitmap
2024-08-09 16:27:09.309 E         - ............................-> Index "RDB$INDEX_nn" Unique Scan
2024-08-09 16:27:09.326 E         + ................................-> Index "RDB$INDEX_nn" Range Scan (full match)
2024-08-09 16:27:09.347 E         + ............................-> Bitmap
2024-08-09 16:27:09.356 E         + ................................-> Index "RDB$INDEX_nn" Range Scan (full match)
2024-08-09 16:27:09.362 E           Select Expression
2024-08-09 16:27:09.369 E           ....-> Filter
2024-08-09 16:27:09.376 E           ........-> Table "RDB$RELATION_FIELDS" as "X" Access By ID
2024-08-09 16:27:09.382 E           ............-> Bitmap
2024-08-09 16:27:09.392 E           ................-> Index "RDB$INDEX_nn" Range Scan (full match)
2024-08-09 16:27:09.402
2024-08-09 16:27:09.409 tests/bugs/gh_8161_test.py:103: AssertionError
2024-08-09 16:27:09.416 ---------------------------- Captured stdout setup -----------------------------
2024-08-09 16:27:09.423 Creating db: localhost:/var/tmp/qa_2024/test_11320/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]>
tmp_fbk = PosixPath('/var/tmp/qa_2024/test_11320/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):