Skip to content

Commit 0c9739d

Browse files
committed
feat: test that one statement can be used for ingest and query
1 parent 6ee1274 commit 0c9739d

1 file changed

Lines changed: 31 additions & 0 deletions

File tree

adbc_drivers_validation/tests/ingest.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ def generate_tests(
6767

6868
param_string = "driver,query"
6969
enabled = {
70+
"test_ingest_then_query": quirks.features.statement_bulk_ingest,
7071
"test_replace_catalog": quirks.features.statement_bulk_ingest_catalog,
7172
"test_replace_schema": quirks.features.statement_bulk_ingest_schema,
7273
"test_temporary": quirks.features.statement_bulk_ingest_temporary,
@@ -857,3 +858,33 @@ def test_many_columns(
857858
result = cursor.fetchone()
858859
assert result is not None
859860
assert result[0] == num_rows
861+
862+
def test_ingest_then_query(
863+
self,
864+
driver: model.DriverQuirks,
865+
conn: adbc_driver_manager.dbapi.Connection,
866+
query: Query,
867+
) -> None:
868+
# Some drivers failed ingest-then-query on the same statement
869+
subquery = query.query
870+
assert isinstance(subquery, model.IngestQuery)
871+
872+
table_name = make_table_name("test_ingest_then_query", query)
873+
data = subquery.input()
874+
expected = subquery.expected()
875+
fields = []
876+
for field in data.schema:
877+
fields.append(driver.quote_identifier(field.name))
878+
select = f"SELECT {', '.join(fields)} FROM {driver.quote_identifier(table_name)} ORDER BY {fields[0]} ASC"
879+
880+
with conn.cursor() as cursor:
881+
driver.try_drop_table(cursor, table_name=table_name)
882+
modified = cursor.adbc_ingest(table_name, data, mode="create")
883+
if driver.features.statement_rows_affected:
884+
assert modified == len(data)
885+
else:
886+
assert modified == -1
887+
888+
result = execute_query_without_prepare(cursor, select)
889+
890+
compare.compare_tables(expected, result, query.metadata())

0 commit comments

Comments
 (0)