From 0474fe32ebfd8f30589ba4841aaa42031bf07fb7 Mon Sep 17 00:00:00 2001 From: Mandy Alimaa Date: Mon, 27 Jul 2026 11:34:01 -0500 Subject: [PATCH 1/2] feat: add configurable DML row counts and skip disabled features instead of strict xfails --- adbc_drivers_validation/model.py | 2 ++ adbc_drivers_validation/tests/connection.py | 2 +- adbc_drivers_validation/tests/statement.py | 21 +++++++++++++-------- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/adbc_drivers_validation/model.py b/adbc_drivers_validation/model.py index 9c81743..0515ab5 100644 --- a/adbc_drivers_validation/model.py +++ b/adbc_drivers_validation/model.py @@ -133,6 +133,8 @@ class DriverFeatures(BaseModel): statement_get_parameter_schema: bool = Field(default=False) statement_prepare: bool = Field(default=False) statement_rows_affected: bool = Field(default=False) + # Some backends report zero for every ordinary DML statement (ex: Databend) + statement_rows_affected_dml_returns_zero: bool = Field(default=False) statement_rows_affected_ddl: bool = Field(default=False) _current_catalog: str | FromEnv | None = PrivateAttr(default=None) _current_schema: str | FromEnv | None = PrivateAttr(default=None) diff --git a/adbc_drivers_validation/tests/connection.py b/adbc_drivers_validation/tests/connection.py index 7cf7835..53276cd 100644 --- a/adbc_drivers_validation/tests/connection.py +++ b/adbc_drivers_validation/tests/connection.py @@ -103,7 +103,7 @@ def generate_tests( elif not f.get_objects and metafunc.definition.name.startswith( "test_get_objects_" ): - marks.append(pytest.mark.xfail(reason="not implemented")) + marks.append(pytest.mark.skip(reason="not implemented")) combinations.append(pytest.param(driver_param, id=driver_param, marks=marks)) metafunc.parametrize( diff --git a/adbc_drivers_validation/tests/statement.py b/adbc_drivers_validation/tests/statement.py index 01fe590..b703dba 100644 --- a/adbc_drivers_validation/tests/statement.py +++ b/adbc_drivers_validation/tests/statement.py @@ -59,11 +59,7 @@ def generate_tests( metafunc.definition.name == "test_prepare" and not quirks.features.statement_prepare ): - marks.append( - pytest.mark.xfail( - raises=adbc_driver_manager.dbapi.NotSupportedError, strict=True - ) - ) + marks.append(pytest.mark.skip("prepare not supported")) combinations.append(pytest.param(driver_param, id=driver_param, marks=marks)) @@ -249,7 +245,10 @@ def test_rows_affected( ) rows_affected = cursor.adbc_statement.execute_update() if driver.features.statement_rows_affected: - assert rows_affected == 1 + if driver.features.statement_rows_affected_dml_returns_zero: + assert rows_affected == 0 + else: + assert rows_affected == 1 else: assert rows_affected == -1 @@ -258,7 +257,10 @@ def test_rows_affected( ) rows_affected = cursor.adbc_statement.execute_update() if driver.features.statement_rows_affected: - assert rows_affected == 1 + if driver.features.statement_rows_affected_dml_returns_zero: + assert rows_affected == 0 + else: + assert rows_affected == 1 else: assert rows_affected == -1 @@ -267,7 +269,10 @@ def test_rows_affected( ) rows_affected = cursor.adbc_statement.execute_update() if driver.features.statement_rows_affected: - assert rows_affected == 1 + if driver.features.statement_rows_affected_dml_returns_zero: + assert rows_affected == 0 + else: + assert rows_affected == 1 else: assert rows_affected == -1 From ea00f3044974a28d0d78f18b5974840ea9f4c9d3 Mon Sep 17 00:00:00 2001 From: Mandy Alimaa Date: Mon, 27 Jul 2026 12:13:25 -0500 Subject: [PATCH 2/2] cleanup --- adbc_drivers_validation/tests/statement.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/adbc_drivers_validation/tests/statement.py b/adbc_drivers_validation/tests/statement.py index b703dba..5adbf21 100644 --- a/adbc_drivers_validation/tests/statement.py +++ b/adbc_drivers_validation/tests/statement.py @@ -59,7 +59,11 @@ def generate_tests( metafunc.definition.name == "test_prepare" and not quirks.features.statement_prepare ): - marks.append(pytest.mark.skip("prepare not supported")) + marks.append( + pytest.mark.xfail( + raises=adbc_driver_manager.dbapi.NotSupportedError, strict=True + ) + ) combinations.append(pytest.param(driver_param, id=driver_param, marks=marks))