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   
  + Initial script failed, check output:
  + Statement failed, SQLSTATE = 22021
  + unsuccessful metadata update
  + -ALTER CHARACTER SET "SYSTEM"."UTF8" failed
  + -COLLATION "SYSTEM"."CI_COLL" for CHARACTER SET "SYSTEM"."UTF8" is not defined
  + After line 16 in file /var/tmp/qa_2024/test_11676/gh_8061.tmp.sql
  - 1000
  - select c1.cust_no
  - from customer c1
  - where exists (
  - select 1 from sales s1 where s1.cust_no = c1.cust_no and s1.qty_ordered > 10
  - )
  - Check unnesting of single EXISTS
  - Select Expression
  - ....-> Filter
  - ........-> Hash Join (semi)
  - ............-> Table "CUSTOMER" as "C1" Full Scan
  - ............-> Record Buffer (record length: NN)
  - ................-> Filter
  - ....................-> Table "SALES" as "S1" Full Scan
  - 2000
  - select c2.cust_no
  - from customer c2
  - where c2.cust_no = any (
  - select s2.cust_no
  - from sales s2
  - where s2.qty_ordered > 10
  - )
  - Check unnesting of ANY
  - Select Expression
  - ....-> Filter
  - ........-> Hash Join (semi)
  - ............-> Table "CUSTOMER" as "C2" Full Scan
  - ............-> Record Buffer (record length: NN)
  - ................-> Filter
  - ....................-> Table "SALES" as "S2" Full Scan
  - 3000
  - select c3.cust_no
  - from customer c3
  - where exists (
  - select  s3.cust_no
  - from sales s3
  - where s3.cust_no = c3.cust_no and
  - exists (
  - select x.emp_no
  - from employee x
  - where
  - x.emp_no = s3.sales_rep
  - and (
  - x.dept_no > 0
  - or
  - x.job_code > ''
  - )
  - )
  - )
  - Check unnesting of two nested EXISTS
  - Select Expression
  - ....-> Filter
  - ........-> Hash Join (semi)
  - ............-> Table "CUSTOMER" as "C3" Full Scan
  - ............-> Record Buffer (record length: NN)
  - ................-> Filter
  - ....................-> Hash Join (semi)
  - ........................-> Table "SALES" as "S3" Full Scan
  - ........................-> Record Buffer (record length: NN)
  - ............................-> Filter
  - ................................-> Table "EMPLOYEE" as "X" Full Scan
  - 4000
  - select c4.cust_no
  - from customer c4
  - where c4.cust_no in
  - (
  - select s4.cust_no
  - from sales s4
  - where
  - s4.paid > ''
  - or
  - s4.sales_rep in (
  - select x.emp_no
  - from employee x
  - where
  - x.dept_no > 0
  - or
  - x.job_code > ''
  - )
  - )
  - Check unnesting of IN (NOTE: inner sub-query cannot be unnested due to OR condition present, but the outer sub-query *can*; see also bugs/gh_8265_test.py)
  - Sub-query
  - ....-> Filter
  - ........-> Filter
  - ............-> Table "EMPLOYEE" as "X" Access By ID
  - ................-> Bitmap
  - ....................-> Index "EMPLOYEE_PK" Unique Scan
  - Select Expression
  - ....-> Filter
  - ........-> Hash Join (semi)
  - ............-> Table "CUSTOMER" as "C4" Full Scan
  - ............-> Record Buffer (record length: NN)
  - ................-> Filter
  - ....................-> Table "SALES" as "S4" Full Scan

LOG DETAILS:

2025-07-03 05:19:14.109
2025-07-03 05:19:14.121 act = <firebird.qa.plugin.Action object at [hex]>
2025-07-03 05:19:14.132 tmp_sql = PosixPath('/var/tmp/qa_2024/test_11676/gh_8061.tmp.sql')
2025-07-03 05:19:14.141 capsys = <_pytest.capture.CaptureFixture object at [hex]>
2025-07-03 05:19:14.149
2025-07-03 05:19:14.155 @pytest.mark.version('>=5.0.1')
2025-07-03 05:19:14.162 def test_1(act: Action, tmp_sql: Path, capsys):
2025-07-03 05:19:14.171 employee_data_sql = zipfile.Path(act.files_dir / 'standard_sample_databases.zip', at='sample-DB_-_firebird.sql')
2025-07-03 05:19:14.179 tmp_sql.write_bytes(employee_data_sql.read_bytes())
2025-07-03 05:19:14.191
2025-07-03 05:19:14.197 act.isql(switches = ['-q'], charset='utf8', input_file = tmp_sql, combine_output = True)
2025-07-03 05:19:14.203
2025-07-03 05:19:14.210 if act.return_code == 0:
2025-07-03 05:19:14.223
2025-07-03 05:19:14.232 srv_cfg = driver_config.register_server(name = f'srv_cfg_8061', config = '')
2025-07-03 05:19:14.244 db_cfg_name = f'db_cfg_8061'
2025-07-03 05:19:14.253 db_cfg_object = driver_config.register_database(name = db_cfg_name)
2025-07-03 05:19:14.260 db_cfg_object.server.value = srv_cfg.name
2025-07-03 05:19:14.266 db_cfg_object.database.value = str(act.db.db_path)
2025-07-03 05:19:14.271 if act.is_version('<6'):
2025-07-03 05:19:14.276 db_cfg_object.config.value = f"""
2025-07-03 05:19:14.281 SubQueryConversion = true
2025-07-03 05:19:14.288 """
2025-07-03 05:19:14.295
2025-07-03 05:19:14.302 with connect(db_cfg_name, user = act.db.user, password = act.db.password) as con:
2025-07-03 05:19:14.310 cur = con.cursor()
2025-07-03 05:19:14.317 for q_idx, q_tuple in query_map.items():
2025-07-03 05:19:14.327 test_sql, qry_comment = q_tuple[:2]
2025-07-03 05:19:14.339 ps = cur.prepare(test_sql)
2025-07-03 05:19:14.350 print(q_idx)
2025-07-03 05:19:14.360 print(test_sql)
2025-07-03 05:19:14.366 print(qry_comment)
2025-07-03 05:19:14.372 print( '\n'.join([replace_leading(s) for s in ps.detailed_plan.split('\n')]) )
2025-07-03 05:19:14.379 ps.free()
2025-07-03 05:19:14.390
2025-07-03 05:19:14.398 else:
2025-07-03 05:19:14.405 # If retcode !=0 then we can print the whole output of failed gbak:
2025-07-03 05:19:14.411 print('Initial script failed, check output:')
2025-07-03 05:19:14.418 for line in act.clean_stdout.splitlines():
2025-07-03 05:19:14.427 print(line)
2025-07-03 05:19:14.434 act.reset()
2025-07-03 05:19:14.442
2025-07-03 05:19:14.451 act.expected_stdout = f"""
2025-07-03 05:19:14.459 1000
2025-07-03 05:19:14.470 {query_map[1000][0]}
2025-07-03 05:19:14.479 {query_map[1000][1]}
2025-07-03 05:19:14.489 Select Expression
2025-07-03 05:19:14.501 ....-> Filter
2025-07-03 05:19:14.512 ........-> Hash Join (semi) (keys: 1, total key length: 4)
2025-07-03 05:19:14.523 ............-> Table "CUSTOMER" as "C1" Full Scan
2025-07-03 05:19:14.532 ............-> Record Buffer (record length: 33)
2025-07-03 05:19:14.539 ................-> Filter
2025-07-03 05:19:14.546 ....................-> Table "SALES" as "S1" Full Scan
2025-07-03 05:19:14.556
2025-07-03 05:19:14.565 2000
2025-07-03 05:19:14.574 {query_map[2000][0]}
2025-07-03 05:19:14.585 {query_map[2000][1]}
2025-07-03 05:19:14.592 Select Expression
2025-07-03 05:19:14.597 ....-> Filter
2025-07-03 05:19:14.602 ........-> Hash Join (semi) (keys: 1, total key length: 4)
2025-07-03 05:19:14.606 ............-> Table "CUSTOMER" as "C2" Full Scan
2025-07-03 05:19:14.611 ............-> Record Buffer (record length: 33)
2025-07-03 05:19:14.615 ................-> Filter
2025-07-03 05:19:14.620 ....................-> Table "SALES" as "S2" Full Scan
2025-07-03 05:19:14.627
2025-07-03 05:19:14.639 3000
2025-07-03 05:19:14.647 {query_map[3000][0]}
2025-07-03 05:19:14.655 {query_map[3000][1]}
2025-07-03 05:19:14.667 Select Expression
2025-07-03 05:19:14.677 ....-> Filter
2025-07-03 05:19:14.688 ........-> Hash Join (semi) (keys: 1, total key length: 4)
2025-07-03 05:19:14.697 ............-> Table "CUSTOMER" as "C3" Full Scan
2025-07-03 05:19:14.704 ............-> Record Buffer (record length: 58)
2025-07-03 05:19:14.709 ................-> Filter
2025-07-03 05:19:14.714 ....................-> Hash Join (semi) (keys: 1, total key length: 2)
2025-07-03 05:19:14.719 ........................-> Table "SALES" as "S3" Full Scan
2025-07-03 05:19:14.723 ........................-> Record Buffer (record length: 41)
2025-07-03 05:19:14.728 ............................-> Filter
2025-07-03 05:19:14.733 ................................-> Table "EMPLOYEE" as "X" Full Scan
2025-07-03 05:19:14.737
2025-07-03 05:19:14.742 4000
2025-07-03 05:19:14.746 {query_map[4000][0]}
2025-07-03 05:19:14.750 {query_map[4000][1]}
2025-07-03 05:19:14.755 Sub-query
2025-07-03 05:19:14.760 ....-> Filter
2025-07-03 05:19:14.765 ........-> Filter
2025-07-03 05:19:14.771 ............-> Table "EMPLOYEE" as "X" Access By ID
2025-07-03 05:19:14.777 ................-> Bitmap
2025-07-03 05:19:14.782 ....................-> Index "EMPLOYEE_PK" Unique Scan
2025-07-03 05:19:14.788 Select Expression
2025-07-03 05:19:14.794 ....-> Filter
2025-07-03 05:19:14.799 ........-> Hash Join (semi) (keys: 1, total key length: 4)
2025-07-03 05:19:14.807 ............-> Table "CUSTOMER" as "C4" Full Scan
2025-07-03 05:19:14.815 ............-> Record Buffer (record length: 33)
2025-07-03 05:19:14.821 ................-> Filter
2025-07-03 05:19:14.827 ....................-> Table "SALES" as "S4" Full Scan
2025-07-03 05:19:14.832
2025-07-03 05:19:14.837 """
2025-07-03 05:19:14.841 act.stdout = capsys.readouterr().out
2025-07-03 05:19:14.849 >       assert act.clean_stdout == act.clean_expected_stdout
2025-07-03 05:19:14.858 E       assert
2025-07-03 05:19:14.866 E         + Initial script failed, check output:
2025-07-03 05:19:14.874 E         + Statement failed, SQLSTATE = 22021
2025-07-03 05:19:14.880 E         + unsuccessful metadata update
2025-07-03 05:19:14.886 E         + -ALTER CHARACTER SET "SYSTEM"."UTF8" failed
2025-07-03 05:19:14.892 E         + -COLLATION "SYSTEM"."CI_COLL" for CHARACTER SET "SYSTEM"."UTF8" is not defined
2025-07-03 05:19:14.897 E         + After line 16 in file /var/tmp/qa_2024/test_11676/gh_8061.tmp.sql
2025-07-03 05:19:14.903 E         - 1000
2025-07-03 05:19:14.910 E         - select c1.cust_no
2025-07-03 05:19:14.917 E         - from customer c1
2025-07-03 05:19:14.923 E         - where exists (
2025-07-03 05:19:14.929 E         - select 1 from sales s1 where s1.cust_no = c1.cust_no and s1.qty_ordered > 10
2025-07-03 05:19:14.933 E         - )
2025-07-03 05:19:14.938 E         - Check unnesting of single EXISTS
2025-07-03 05:19:14.942 E         - Select Expression
2025-07-03 05:19:14.946 E         - ....-> Filter
2025-07-03 05:19:14.951 E         - ........-> Hash Join (semi)
2025-07-03 05:19:14.956 E         - ............-> Table "CUSTOMER" as "C1" Full Scan
2025-07-03 05:19:14.961 E         - ............-> Record Buffer (record length: NN)
2025-07-03 05:19:14.966 E         - ................-> Filter
2025-07-03 05:19:14.971 E         - ....................-> Table "SALES" as "S1" Full Scan
2025-07-03 05:19:14.976 E         - 2000
2025-07-03 05:19:14.982 E         - select c2.cust_no
2025-07-03 05:19:14.991 E         - from customer c2
2025-07-03 05:19:15.003 E         - where c2.cust_no = any (
2025-07-03 05:19:15.013 E         - select s2.cust_no
2025-07-03 05:19:15.023 E         - from sales s2
2025-07-03 05:19:15.034 E         - where s2.qty_ordered > 10
2025-07-03 05:19:15.042 E         - )
2025-07-03 05:19:15.053 E         - Check unnesting of ANY
2025-07-03 05:19:15.064 E         - Select Expression
2025-07-03 05:19:15.072 E         - ....-> Filter
2025-07-03 05:19:15.080 E         - ........-> Hash Join (semi)
2025-07-03 05:19:15.087 E         - ............-> Table "CUSTOMER" as "C2" Full Scan
2025-07-03 05:19:15.093 E         - ............-> Record Buffer (record length: NN)
2025-07-03 05:19:15.098 E         - ................-> Filter
2025-07-03 05:19:15.108 E         - ....................-> Table "SALES" as "S2" Full Scan
2025-07-03 05:19:15.117 E         - 3000
2025-07-03 05:19:15.124 E         - select c3.cust_no
2025-07-03 05:19:15.134 E         - from customer c3
2025-07-03 05:19:15.145 E         - where exists (
2025-07-03 05:19:15.152 E         - select  s3.cust_no
2025-07-03 05:19:15.159 E         - from sales s3
2025-07-03 05:19:15.170 E         - where s3.cust_no = c3.cust_no and
2025-07-03 05:19:15.178 E         - exists (
2025-07-03 05:19:15.187 E         - select x.emp_no
2025-07-03 05:19:15.199 E         - from employee x
2025-07-03 05:19:15.208 E         - where
2025-07-03 05:19:15.216 E         - x.emp_no = s3.sales_rep
2025-07-03 05:19:15.228 E         - and (
2025-07-03 05:19:15.241 E         - x.dept_no > 0
2025-07-03 05:19:15.249 E         - or
2025-07-03 05:19:15.256 E         - x.job_code > ''
2025-07-03 05:19:15.262 E         - )
2025-07-03 05:19:15.272 E         - )
2025-07-03 05:19:15.283 E         - )
2025-07-03 05:19:15.293 E         - Check unnesting of two nested EXISTS
2025-07-03 05:19:15.305 E         - Select Expression
2025-07-03 05:19:15.317 E         - ....-> Filter
2025-07-03 05:19:15.325 E         - ........-> Hash Join (semi)
2025-07-03 05:19:15.333 E         - ............-> Table "CUSTOMER" as "C3" Full Scan
2025-07-03 05:19:15.339 E         - ............-> Record Buffer (record length: NN)
2025-07-03 05:19:15.347 E         - ................-> Filter
2025-07-03 05:19:15.359 E         - ....................-> Hash Join (semi)
2025-07-03 05:19:15.368 E         - ........................-> Table "SALES" as "S3" Full Scan
2025-07-03 05:19:15.375 E         - ........................-> Record Buffer (record length: NN)
2025-07-03 05:19:15.383 E         - ............................-> Filter
2025-07-03 05:19:15.389 E         - ................................-> Table "EMPLOYEE" as "X" Full Scan
2025-07-03 05:19:15.394 E         - 4000
2025-07-03 05:19:15.403 E         - select c4.cust_no
2025-07-03 05:19:15.413 E         - from customer c4
2025-07-03 05:19:15.422 E         - where c4.cust_no in
2025-07-03 05:19:15.429 E         - (
2025-07-03 05:19:15.436 E         - select s4.cust_no
2025-07-03 05:19:15.444 E         - from sales s4
2025-07-03 05:19:15.450 E         - where
2025-07-03 05:19:15.456 E         - s4.paid > ''
2025-07-03 05:19:15.463 E         - or
2025-07-03 05:19:15.468 E         - s4.sales_rep in (
2025-07-03 05:19:15.474 E         - select x.emp_no
2025-07-03 05:19:15.484 E         - from employee x
2025-07-03 05:19:15.495 E         - where
2025-07-03 05:19:15.504 E         - x.dept_no > 0
2025-07-03 05:19:15.512 E         - or
2025-07-03 05:19:15.518 E         - x.job_code > ''
2025-07-03 05:19:15.525 E         - )
2025-07-03 05:19:15.531 E         - )
2025-07-03 05:19:15.537 E         - Check unnesting of IN (NOTE: inner sub-query cannot be unnested due to OR condition present, but the outer sub-query *can*; see also bugs/gh_8265_test.py)
2025-07-03 05:19:15.542 E         - Sub-query
2025-07-03 05:19:15.549 E         - ....-> Filter
2025-07-03 05:19:15.557 E         - ........-> Filter
2025-07-03 05:19:15.563 E         - ............-> Table "EMPLOYEE" as "X" Access By ID
2025-07-03 05:19:15.568 E         - ................-> Bitmap
2025-07-03 05:19:15.574 E         - ....................-> Index "EMPLOYEE_PK" Unique Scan
2025-07-03 05:19:15.585 E         - Select Expression
2025-07-03 05:19:15.593 E         - ....-> Filter
2025-07-03 05:19:15.599 E         - ........-> Hash Join (semi)
2025-07-03 05:19:15.605 E         - ............-> Table "CUSTOMER" as "C4" Full Scan
2025-07-03 05:19:15.610 E         - ............-> Record Buffer (record length: NN)
2025-07-03 05:19:15.618 E         - ................-> Filter
2025-07-03 05:19:15.628 E         - ....................-> Table "SALES" as "S4" Full Scan
2025-07-03 05:19:15.639
2025-07-03 05:19:15.646 tests/bugs/gh_8061_test.py:232: AssertionError
2025-07-03 05:19:15.659 ---------------------------- Captured stdout setup -----------------------------
2025-07-03 05:19:15.673 Creating db: localhost:/var/tmp/qa_2024/test_11676/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_sql = PosixPath('/var/tmp/qa_2024/test_11676/gh_8061.tmp.sql')
capsys = <_pytest.capture.CaptureFixture pytest object at [hex]>

    @pytest.mark.version('>=5.0.1')
    def test_1(act: Action, tmp_sql: Path, capsys):
        employee_data_sql = zipfile.Path(act.files_dir / 'standard_sample_databases.zip', at='sample-DB_-_firebird.sql')
        tmp_sql.write_bytes(employee_data_sql.read_bytes())
    
        act.isql(switches = ['-q'], charset='utf8', input_file = tmp_sql, combine_output = True)
    
        if act.return_code == 0:
    
            srv_cfg = driver_config.register_server(name = f'srv_cfg_8061', config = '')
            db_cfg_name = f'db_cfg_8061'
            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()
                for q_idx, q_tuple in query_map.items():
                    test_sql, qry_comment = q_tuple[:2]
                    ps = cur.prepare(test_sql)
                    print(q_idx)
                    print(test_sql)
                    print(qry_comment)
                    print( '\n'.join([replace_leading(s) for s in ps.detailed_plan.split('\n')]) )
                    ps.free()
    
        else:
            # If retcode !=0 then we can print the whole output of failed gbak:
            print('Initial script failed, check output:')
            for line in act.clean_stdout.splitlines():
                print(line)
        act.reset()
    
        act.expected_stdout = f"""
            1000
            {query_map[1000][0]}
            {query_map[1000][1]}
            Select Expression
            ....-> Filter
            ........-> Hash Join (semi) (keys: 1, total key length: 4)
            ............-> Table "CUSTOMER" as "C1" Full Scan
            ............-> Record Buffer (record length: 33)
            ................-> Filter
            ....................-> Table "SALES" as "S1" Full Scan
    
            2000
            {query_map[2000][0]}
            {query_map[2000][1]}
            Select Expression
            ....-> Filter
            ........-> Hash Join (semi) (keys: 1, total key length: 4)
            ............-> Table "CUSTOMER" as "C2" Full Scan
            ............-> Record Buffer (record length: 33)
            ................-> Filter
            ....................-> Table "SALES" as "S2" Full Scan
    
            3000
            {query_map[3000][0]}
            {query_map[3000][1]}
            Select Expression
            ....-> Filter
            ........-> Hash Join (semi) (keys: 1, total key length: 4)
            ............-> Table "CUSTOMER" as "C3" Full Scan
            ............-> Record Buffer (record length: 58)
            ................-> Filter
            ....................-> Hash Join (semi) (keys: 1, total key length: 2)
            ........................-> Table "SALES" as "S3" Full Scan
            ........................-> Record Buffer (record length: 41)
            ............................-> Filter
            ................................-> Table "EMPLOYEE" as "X" Full Scan
    
            4000
            {query_map[4000][0]}
            {query_map[4000][1]}
            Sub-query
            ....-> Filter
            ........-> Filter
            ............-> Table "EMPLOYEE" as "X" Access By ID
            ................-> Bitmap
            ....................-> Index "EMPLOYEE_PK" Unique Scan
            Select Expression
            ....-> Filter
            ........-> Hash Join (semi) (keys: 1, total key length: 4)
            ............-> Table "CUSTOMER" as "C4" Full Scan
            ............-> Record Buffer (record length: 33)
            ................-> Filter
            ....................-> Table "SALES" as "S4" Full Scan
    
        """
        act.stdout = capsys.readouterr().out
>       assert act.clean_stdout == act.clean_expected_stdout
E       assert   
E         + Initial script failed, check output:
E         + Statement failed, SQLSTATE = 22021
E         + unsuccessful metadata update
E         + -ALTER CHARACTER SET "SYSTEM"."UTF8" failed
E         + -COLLATION "SYSTEM"."CI_COLL" for CHARACTER SET "SYSTEM"."UTF8" is not defined
E         + After line 16 in file /var/tmp/qa_2024/test_11676/gh_8061.tmp.sql
E         - 1000
E         - select c1.cust_no
E         - from customer c1
E         - where exists (
E         - select 1 from sales s1 where s1.cust_no = c1.cust_no and s1.qty_ordered > 10
E         - )
E         - Check unnesting of single EXISTS
E         - Select Expression
E         - ....-> Filter
E         - ........-> Hash Join (semi)
E         - ............-> Table "CUSTOMER" as "C1" Full Scan
E         - ............-> Record Buffer (record length: NN)
E         - ................-> Filter
E         - ....................-> Table "SALES" as "S1" Full Scan
E         - 2000
E         - select c2.cust_no
E         - from customer c2
E         - where c2.cust_no = any (
E         - select s2.cust_no
E         - from sales s2
E         - where s2.qty_ordered > 10
E         - )
E         - Check unnesting of ANY
E         - Select Expression
E         - ....-> Filter
E         - ........-> Hash Join (semi)
E         - ............-> Table "CUSTOMER" as "C2" Full Scan
E         - ............-> Record Buffer (record length: NN)
E         - ................-> Filter
E         - ....................-> Table "SALES" as "S2" Full Scan
E         - 3000
E         - select c3.cust_no
E         - from customer c3
E         - where exists (
E         - select  s3.cust_no
E         - from sales s3
E         - where s3.cust_no = c3.cust_no and
E         - exists (
E         - select x.emp_no
E         - from employee x
E         - where
E         - x.emp_no = s3.sales_rep
E         - and (
E         - x.dept_no > 0
E         - or
E         - x.job_code > ''
E         - )
E         - )
E         - )
E         - Check unnesting of two nested EXISTS
E         - Select Expression
E         - ....-> Filter
E         - ........-> Hash Join (semi)
E         - ............-> Table "CUSTOMER" as "C3" Full Scan
E         - ............-> Record Buffer (record length: NN)
E         - ................-> Filter
E         - ....................-> Hash Join (semi)
E         - ........................-> Table "SALES" as "S3" Full Scan
E         - ........................-> Record Buffer (record length: NN)
E         - ............................-> Filter
E         - ................................-> Table "EMPLOYEE" as "X" Full Scan
E         - 4000
E         - select c4.cust_no
E         - from customer c4
E         - where c4.cust_no in
E         - (
E         - select s4.cust_no
E         - from sales s4
E         - where
E         - s4.paid > ''
E         - or
E         - s4.sales_rep in (
E         - select x.emp_no
E         - from employee x
E         - where
E         - x.dept_no > 0
E         - or
E         - x.job_code > ''
E         - )
E         - )
E         - Check unnesting of IN (NOTE: inner sub-query cannot be unnested due to OR condition present, but the outer sub-query *can*; see also bugs/gh_8265_test.py)
E         - Sub-query
E         - ....-> Filter
E         - ........-> Filter
E         - ............-> Table "EMPLOYEE" as "X" Access By ID
E         - ................-> Bitmap
E         - ....................-> Index "EMPLOYEE_PK" Unique Scan
E         - Select Expression
E         - ....-> Filter
E         - ........-> Hash Join (semi)
E         - ............-> Table "CUSTOMER" as "C4" Full Scan
E         - ............-> Record Buffer (record length: NN)
E         - ................-> Filter
E         - ....................-> Table "SALES" as "S4" Full Scan

tests/bugs/gh_8061_test.py:232: 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.892 2025.07.02 10f7d F F 685 667 2025.07.03 01:45:06.036 2025.07.03 01:45:06.721 2025.07.02 23:10:06.803 2025.07.02 23:10:07.470
2 6.0.0.889 2025.07.01 969ac F F 697 392 2025.07.02 02:13:03.275 2025.07.02 02:13:03.972 2025.07.01 23:23:20.686 2025.07.01 23:23:21.078
3 6.0.0.884 2025.06.30 f7e5f F F 667 698 2025.07.01 02:13:20.784 2025.07.01 02:13:21.451 2025.06.30 23:32:00.902 2025.06.30 23:32:01.600
4 6.0.0.881 2025.06.27 7035d F F 726 549 2025.06.30 02:03:34.217 2025.06.30 02:03:34.943 2025.06.29 23:19:06.374 2025.06.29 23:19:06.923
5 6.0.0.877 2025.06.26 8e38f F F 684 529 2025.06.27 01:42:37.018 2025.06.27 01:42:37.702 2025.06.26 23:10:08.070 2025.06.26 23:10:08.599
6 6.0.0.876 2025.06.25 b1bec F F 756 560 2025.06.26 01:46:27.501 2025.06.26 01:46:28.257 2025.06.25 23:12:02.594 2025.06.25 23:12:03.154
7 6.0.0.863 2025.06.24 c3c20 F F 682 610 2025.06.25 01:46:45.422 2025.06.25 01:46:46.104 2025.06.24 23:11:47.354 2025.06.24 23:11:47.964
8 6.0.0.858 2025.06.23 8d6f7 F F 663 629 2025.06.24 01:47:06.667 2025.06.24 01:47:07.330 2025.06.23 23:11:56.122 2025.06.23 23:11:56.751
9 6.0.0.849 2025.06.20 7b79c F F 726 551 2025.06.21 01:58:39.475 2025.06.21 01:58:40.201 2025.06.20 23:21:07.959 2025.06.20 23:21:08.510
10 6.0.0.848 2025.06.19 c483c F F 730 420 2025.06.20 01:54:59.987 2025.06.20 01:55:00.717 2025.06.19 23:17:55.666 2025.06.19 23:17:56.086
11 6.0.0.845 2025.06.18 22b12 F F 738 602 2025.06.19 02:03:39.792 2025.06.19 02:03:40.530 2025.06.18 23:21:02.859 2025.06.18 23:21:03.461
12 6.0.0.843 2025.06.16 995f4 F F 628 355 2025.06.18 02:01:54.602 2025.06.18 02:01:55.230 2025.06.17 23:23:21.457 2025.06.17 23:23:21.812
13 6.0.0.840 2025.06.14 29bca F F 698 610 2025.06.16 01:53:42.780 2025.06.16 01:53:43.478 2025.06.15 23:15:20.734 2025.06.15 23:15:21.344
14 6.0.0.838 2025.06.13 0e28a F F 687 579 2025.06.14 02:06:45.291 2025.06.14 02:06:45.978 2025.06.13 23:22:58.687 2025.06.13 23:22:59.266
15 6.0.0.835 2025.06.12 2cf29 F F 693 364 2025.06.13 02:06:43.796 2025.06.13 02:06:44.489 2025.06.12 23:27:05.693 2025.06.12 23:27:06.057
16 6.0.0.834 2025.06.11 e889f F F 651 611 2025.06.12 02:01:55.670 2025.06.12 02:01:56.321 2025.06.11 23:23:12.421 2025.06.11 23:23:13.032
17 6.0.0.800 2025.06.10 1f226 P P 1844 1050 2025.06.11 00:28:43.970 2025.06.11 00:28:45.814 2025.06.10 22:21:19.366 2025.06.10 22:21:20.416
18 6.0.0.799 2025.06.07 be644 P P 1776 1416 2025.06.10 00:30:24.539 2025.06.10 00:30:26.315 2025.06.09 22:20:54.122 2025.06.09 22:20:55.538
19 6.0.0.797 2025.06.06 303e8 P P 1132 1734 2025.06.07 00:34:07.402 2025.06.07 00:34:08.534 2025.06.06 22:20:27.138 2025.06.06 22:20:28.872
20 6.0.0.795 2025.05.29 7a71a P P 1043 1494 2025.06.06 00:28:58.207 2025.06.06 00:28:59.250 2025.06.05 22:19:35.809 2025.06.05 22:19:37.303
21 6.0.0.792 2025.05.28 b4327 P P 2343 1590 2025.05.29 00:42:51.231 2025.05.29 00:42:53.574 2025.05.28 22:22:31.046 2025.05.28 22:22:32.636
22 6.0.0.791 2025.05.27 02db8 P P 1183 1114 2025.05.28 00:40:06.695 2025.05.28 00:40:07.878 2025.05.27 22:21:35.968 2025.05.27 22:21:37.082
23 6.0.0.789 2025.05.21 64051 P P 1206 923 2025.05.25 00:32:48.283 2025.05.25 00:32:49.489 2025.05.24 22:20:49.247 2025.05.24 22:20:50.170
24 6.0.0.787 2025.05.20 230ad P P 1052 1649 2025.05.21 00:29:55.951 2025.05.21 00:29:57.003 2025.05.20 22:19:13.238 2025.05.20 22:19:14.887
25 6.0.0.783 2025.05.12 37320 P P 1712 1307 2025.05.19 12:03:19.311 2025.05.19 12:03:21.023 2025.05.19 10:08:00.811 2025.05.19 10:08:02.118
26 6.0.0.779 2025.05.11 136fa P P 1733 1603 2025.05.12 00:25:06.594 2025.05.12 00:25:08.327 2025.05.11 22:18:44.710 2025.05.11 22:18:46.313
27 6.0.0.778 2025.05.07 d735e P P 1168 864 2025.05.08 00:27:20.317 2025.05.08 00:27:21.485 2025.05.07 22:17:38.529 2025.05.07 22:17:39.393
28 6.0.0.776 2025.05.06 007cd P P 1947 837 2025.05.07 00:21:35.383 2025.05.07 00:21:37.330 2025.05.06 22:17:34.554 2025.05.06 22:17:35.391
29 6.0.0.770 2025.05.05 82c4a P P 2411 836 2025.05.06 00:20:47.705 2025.05.06 00:20:50.116 2025.05.05 22:16:49.706 2025.05.05 22:16:50.542
30 6.0.0.767 2025.05.01 cdd29 P P 1126 938 2025.05.02 00:18:11.278 2025.05.02 00:18:12.404 2025.05.01 22:16:20.585 2025.05.01 22:16:21.523
31 6.0.0.762 2025.04.30 5cb15 P P 1025 1044 2025.05.01 00:14:18.534 2025.05.01 00:14:19.559 2025.04.30 22:15:06.707 2025.04.30 22:15:07.751
32 6.0.0.755 2025.04.29 739c6 P P 1104 1277 2025.04.30 00:16:59.163 2025.04.30 00:17:00.267 2025.04.29 22:16:23.433 2025.04.29 22:16:24.710
33 6.0.0.753 2025.04.27 29ab3 P P 2170 1044 2025.04.28 00:19:00.400 2025.04.28 00:19:02.570 2025.04.27 22:15:44.895 2025.04.27 22:15:45.939
34 6.0.0.745 2025.04.21 78ad8 P P 1037 737 2025.04.26 00:15:00.131 2025.04.26 00:15:01.168 2025.04.25 22:17:06.318 2025.04.25 22:17:07.055
35 6.0.0.744 2025.04.19 e883a P P 1076 840 2025.04.20 00:17:04.551 2025.04.20 00:17:05.627 2025.04.19 22:16:36.991 2025.04.19 22:16:37.831
36 6.0.0.742 2025.04.17 abc3b P P 1212 704 2025.04.19 00:18:54.654 2025.04.19 00:18:55.866 2025.04.18 22:16:54.270 2025.04.18 22:16:54.974
37 6.0.0.737 2025.04.16 fe52b P P 1058 853 2025.04.17 00:15:50.744 2025.04.17 00:15:51.802 2025.04.16 22:16:55.288 2025.04.16 22:16:56.141

Elapsed time, ms. Chart for last 37 runs:

Last commits information (all timestamps in UTC):