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_11675/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-01 05:54:31.343
2025-07-01 05:54:31.353 act = <firebird.qa.plugin.Action object at [hex]>
2025-07-01 05:54:31.360 tmp_sql = PosixPath('/var/tmp/qa_2024/test_11675/gh_8061.tmp.sql')
2025-07-01 05:54:31.366 capsys = <_pytest.capture.CaptureFixture object at [hex]>
2025-07-01 05:54:31.372
2025-07-01 05:54:31.379 @pytest.mark.version('>=5.0.1')
2025-07-01 05:54:31.386 def test_1(act: Action, tmp_sql: Path, capsys):
2025-07-01 05:54:31.393 employee_data_sql = zipfile.Path(act.files_dir / 'standard_sample_databases.zip', at='sample-DB_-_firebird.sql')
2025-07-01 05:54:31.400 tmp_sql.write_bytes(employee_data_sql.read_bytes())
2025-07-01 05:54:31.406
2025-07-01 05:54:31.412 act.isql(switches = ['-q'], charset='utf8', input_file = tmp_sql, combine_output = True)
2025-07-01 05:54:31.418
2025-07-01 05:54:31.424 if act.return_code == 0:
2025-07-01 05:54:31.431
2025-07-01 05:54:31.437 srv_cfg = driver_config.register_server(name = f'srv_cfg_8061', config = '')
2025-07-01 05:54:31.443 db_cfg_name = f'db_cfg_8061'
2025-07-01 05:54:31.451 db_cfg_object = driver_config.register_database(name = db_cfg_name)
2025-07-01 05:54:31.457 db_cfg_object.server.value = srv_cfg.name
2025-07-01 05:54:31.464 db_cfg_object.database.value = str(act.db.db_path)
2025-07-01 05:54:31.470 if act.is_version('<6'):
2025-07-01 05:54:31.477 db_cfg_object.config.value = f"""
2025-07-01 05:54:31.484 SubQueryConversion = true
2025-07-01 05:54:31.490 """
2025-07-01 05:54:31.497
2025-07-01 05:54:31.503 with connect(db_cfg_name, user = act.db.user, password = act.db.password) as con:
2025-07-01 05:54:31.511 cur = con.cursor()
2025-07-01 05:54:31.518 for q_idx, q_tuple in query_map.items():
2025-07-01 05:54:31.524 test_sql, qry_comment = q_tuple[:2]
2025-07-01 05:54:31.530 ps = cur.prepare(test_sql)
2025-07-01 05:54:31.536 print(q_idx)
2025-07-01 05:54:31.542 print(test_sql)
2025-07-01 05:54:31.548 print(qry_comment)
2025-07-01 05:54:31.553 print( '\n'.join([replace_leading(s) for s in ps.detailed_plan.split('\n')]) )
2025-07-01 05:54:31.559 ps.free()
2025-07-01 05:54:31.564
2025-07-01 05:54:31.569 else:
2025-07-01 05:54:31.575 # If retcode !=0 then we can print the whole output of failed gbak:
2025-07-01 05:54:31.581 print('Initial script failed, check output:')
2025-07-01 05:54:31.588 for line in act.clean_stdout.splitlines():
2025-07-01 05:54:31.594 print(line)
2025-07-01 05:54:31.601 act.reset()
2025-07-01 05:54:31.608
2025-07-01 05:54:31.614 act.expected_stdout = f"""
2025-07-01 05:54:31.624 1000
2025-07-01 05:54:31.631 {query_map[1000][0]}
2025-07-01 05:54:31.637 {query_map[1000][1]}
2025-07-01 05:54:31.642 Select Expression
2025-07-01 05:54:31.648 ....-> Filter
2025-07-01 05:54:31.654 ........-> Hash Join (semi) (keys: 1, total key length: 4)
2025-07-01 05:54:31.659 ............-> Table "CUSTOMER" as "C1" Full Scan
2025-07-01 05:54:31.665 ............-> Record Buffer (record length: 33)
2025-07-01 05:54:31.671 ................-> Filter
2025-07-01 05:54:31.682 ....................-> Table "SALES" as "S1" Full Scan
2025-07-01 05:54:31.692
2025-07-01 05:54:31.703 2000
2025-07-01 05:54:31.714 {query_map[2000][0]}
2025-07-01 05:54:31.723 {query_map[2000][1]}
2025-07-01 05:54:31.731 Select Expression
2025-07-01 05:54:31.739 ....-> Filter
2025-07-01 05:54:31.747 ........-> Hash Join (semi) (keys: 1, total key length: 4)
2025-07-01 05:54:31.758 ............-> Table "CUSTOMER" as "C2" Full Scan
2025-07-01 05:54:31.767 ............-> Record Buffer (record length: 33)
2025-07-01 05:54:31.775 ................-> Filter
2025-07-01 05:54:31.782 ....................-> Table "SALES" as "S2" Full Scan
2025-07-01 05:54:31.788
2025-07-01 05:54:31.795 3000
2025-07-01 05:54:31.806 {query_map[3000][0]}
2025-07-01 05:54:31.814 {query_map[3000][1]}
2025-07-01 05:54:31.822 Select Expression
2025-07-01 05:54:31.832 ....-> Filter
2025-07-01 05:54:31.844 ........-> Hash Join (semi) (keys: 1, total key length: 4)
2025-07-01 05:54:31.858 ............-> Table "CUSTOMER" as "C3" Full Scan
2025-07-01 05:54:31.868 ............-> Record Buffer (record length: 58)
2025-07-01 05:54:31.876 ................-> Filter
2025-07-01 05:54:31.884 ....................-> Hash Join (semi) (keys: 1, total key length: 2)
2025-07-01 05:54:31.891 ........................-> Table "SALES" as "S3" Full Scan
2025-07-01 05:54:31.900 ........................-> Record Buffer (record length: 41)
2025-07-01 05:54:31.910 ............................-> Filter
2025-07-01 05:54:31.920 ................................-> Table "EMPLOYEE" as "X" Full Scan
2025-07-01 05:54:31.927
2025-07-01 05:54:31.933 4000
2025-07-01 05:54:31.938 {query_map[4000][0]}
2025-07-01 05:54:31.943 {query_map[4000][1]}
2025-07-01 05:54:31.954 Sub-query
2025-07-01 05:54:31.963 ....-> Filter
2025-07-01 05:54:31.971 ........-> Filter
2025-07-01 05:54:31.981 ............-> Table "EMPLOYEE" as "X" Access By ID
2025-07-01 05:54:31.990 ................-> Bitmap
2025-07-01 05:54:31.998 ....................-> Index "EMPLOYEE_PK" Unique Scan
2025-07-01 05:54:32.007 Select Expression
2025-07-01 05:54:32.017 ....-> Filter
2025-07-01 05:54:32.026 ........-> Hash Join (semi) (keys: 1, total key length: 4)
2025-07-01 05:54:32.033 ............-> Table "CUSTOMER" as "C4" Full Scan
2025-07-01 05:54:32.041 ............-> Record Buffer (record length: 33)
2025-07-01 05:54:32.049 ................-> Filter
2025-07-01 05:54:32.057 ....................-> Table "SALES" as "S4" Full Scan
2025-07-01 05:54:32.067
2025-07-01 05:54:32.079 """
2025-07-01 05:54:32.091 act.stdout = capsys.readouterr().out
2025-07-01 05:54:32.100 > assert act.clean_stdout == act.clean_expected_stdout
2025-07-01 05:54:32.108 E assert
2025-07-01 05:54:32.115 E + Initial script failed, check output:
2025-07-01 05:54:32.123 E + Statement failed, SQLSTATE = 22021
2025-07-01 05:54:32.131 E + unsuccessful metadata update
2025-07-01 05:54:32.138 E + -ALTER CHARACTER SET "SYSTEM"."UTF8" failed
2025-07-01 05:54:32.150 E + -COLLATION "SYSTEM"."CI_COLL" for CHARACTER SET "SYSTEM"."UTF8" is not defined
2025-07-01 05:54:32.159 E + After line 16 in file /var/tmp/qa_2024/test_11675/gh_8061.tmp.sql
2025-07-01 05:54:32.167 E - 1000
2025-07-01 05:54:32.179 E - select c1.cust_no
2025-07-01 05:54:32.189 E - from customer c1
2025-07-01 05:54:32.200 E - where exists (
2025-07-01 05:54:32.211 E - select 1 from sales s1 where s1.cust_no = c1.cust_no and s1.qty_ordered > 10
2025-07-01 05:54:32.218 E - )
2025-07-01 05:54:32.224 E - Check unnesting of single EXISTS
2025-07-01 05:54:32.228 E - Select Expression
2025-07-01 05:54:32.233 E - ....-> Filter
2025-07-01 05:54:32.238 E - ........-> Hash Join (semi)
2025-07-01 05:54:32.244 E - ............-> Table "CUSTOMER" as "C1" Full Scan
2025-07-01 05:54:32.252 E - ............-> Record Buffer (record length: NN)
2025-07-01 05:54:32.262 E - ................-> Filter
2025-07-01 05:54:32.271 E - ....................-> Table "SALES" as "S1" Full Scan
2025-07-01 05:54:32.277 E - 2000
2025-07-01 05:54:32.283 E - select c2.cust_no
2025-07-01 05:54:32.288 E - from customer c2
2025-07-01 05:54:32.293 E - where c2.cust_no = any (
2025-07-01 05:54:32.298 E - select s2.cust_no
2025-07-01 05:54:32.304 E - from sales s2
2025-07-01 05:54:32.309 E - where s2.qty_ordered > 10
2025-07-01 05:54:32.313 E - )
2025-07-01 05:54:32.317 E - Check unnesting of ANY
2025-07-01 05:54:32.322 E - Select Expression
2025-07-01 05:54:32.327 E - ....-> Filter
2025-07-01 05:54:32.334 E - ........-> Hash Join (semi)
2025-07-01 05:54:32.342 E - ............-> Table "CUSTOMER" as "C2" Full Scan
2025-07-01 05:54:32.355 E - ............-> Record Buffer (record length: NN)
2025-07-01 05:54:32.362 E - ................-> Filter
2025-07-01 05:54:32.369 E - ....................-> Table "SALES" as "S2" Full Scan
2025-07-01 05:54:32.375 E - 3000
2025-07-01 05:54:32.384 E - select c3.cust_no
2025-07-01 05:54:32.393 E - from customer c3
2025-07-01 05:54:32.405 E - where exists (
2025-07-01 05:54:32.414 E - select s3.cust_no
2025-07-01 05:54:32.421 E - from sales s3
2025-07-01 05:54:32.426 E - where s3.cust_no = c3.cust_no and
2025-07-01 05:54:32.435 E - exists (
2025-07-01 05:54:32.442 E - select x.emp_no
2025-07-01 05:54:32.450 E - from employee x
2025-07-01 05:54:32.461 E - where
2025-07-01 05:54:32.473 E - x.emp_no = s3.sales_rep
2025-07-01 05:54:32.483 E - and (
2025-07-01 05:54:32.491 E - x.dept_no > 0
2025-07-01 05:54:32.497 E - or
2025-07-01 05:54:32.501 E - x.job_code > ''
2025-07-01 05:54:32.506 E - )
2025-07-01 05:54:32.510 E - )
2025-07-01 05:54:32.523 E - )
2025-07-01 05:54:32.532 E - Check unnesting of two nested EXISTS
2025-07-01 05:54:32.540 E - Select Expression
2025-07-01 05:54:32.546 E - ....-> Filter
2025-07-01 05:54:32.556 E - ........-> Hash Join (semi)
2025-07-01 05:54:32.564 E - ............-> Table "CUSTOMER" as "C3" Full Scan
2025-07-01 05:54:32.571 E - ............-> Record Buffer (record length: NN)
2025-07-01 05:54:32.577 E - ................-> Filter
2025-07-01 05:54:32.584 E - ....................-> Hash Join (semi)
2025-07-01 05:54:32.591 E - ........................-> Table "SALES" as "S3" Full Scan
2025-07-01 05:54:32.597 E - ........................-> Record Buffer (record length: NN)
2025-07-01 05:54:32.603 E - ............................-> Filter
2025-07-01 05:54:32.609 E - ................................-> Table "EMPLOYEE" as "X" Full Scan
2025-07-01 05:54:32.615 E - 4000
2025-07-01 05:54:32.620 E - select c4.cust_no
2025-07-01 05:54:32.626 E - from customer c4
2025-07-01 05:54:32.632 E - where c4.cust_no in
2025-07-01 05:54:32.638 E - (
2025-07-01 05:54:32.644 E - select s4.cust_no
2025-07-01 05:54:32.651 E - from sales s4
2025-07-01 05:54:32.656 E - where
2025-07-01 05:54:32.662 E - s4.paid > ''
2025-07-01 05:54:32.668 E - or
2025-07-01 05:54:32.679 E - s4.sales_rep in (
2025-07-01 05:54:32.690 E - select x.emp_no
2025-07-01 05:54:32.698 E - from employee x
2025-07-01 05:54:32.704 E - where
2025-07-01 05:54:32.711 E - x.dept_no > 0
2025-07-01 05:54:32.717 E - or
2025-07-01 05:54:32.722 E - x.job_code > ''
2025-07-01 05:54:32.727 E - )
2025-07-01 05:54:32.733 E - )
2025-07-01 05:54:32.739 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-01 05:54:32.747 E - Sub-query
2025-07-01 05:54:32.754 E - ....-> Filter
2025-07-01 05:54:32.762 E - ........-> Filter
2025-07-01 05:54:32.770 E - ............-> Table "EMPLOYEE" as "X" Access By ID
2025-07-01 05:54:32.779 E - ................-> Bitmap
2025-07-01 05:54:32.792 E - ....................-> Index "EMPLOYEE_PK" Unique Scan
2025-07-01 05:54:32.800 E - Select Expression
2025-07-01 05:54:32.806 E - ....-> Filter
2025-07-01 05:54:32.815 E - ........-> Hash Join (semi)
2025-07-01 05:54:32.821 E - ............-> Table "CUSTOMER" as "C4" Full Scan
2025-07-01 05:54:32.827 E - ............-> Record Buffer (record length: NN)
2025-07-01 05:54:32.833 E - ................-> Filter
2025-07-01 05:54:32.840 E - ....................-> Table "SALES" as "S4" Full Scan
2025-07-01 05:54:32.846
2025-07-01 05:54:32.857 tests/bugs/gh_8061_test.py:232: AssertionError
2025-07-01 05:54:32.867 ---------------------------- Captured stdout setup -----------------------------
2025-07-01 05:54:32.876 Creating db: localhost:/var/tmp/qa_2024/test_11675/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_11675/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_11675/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
|