@@ -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