* Use bulk ingest in AdbcHook.insert_rows when fast_executemany is set
AdbcHook.insert_rows built an Arrow RecordBatch per commit_every chunk
and bound it with cursor.executemany. Several ADBC drivers run a bound
stream once per row, so the previous fast_executemany path was a no-op
that set cursor.fast_executemany inside suppress(AttributeError).
Route fast_executemany (now the default) to cursor.adbc_ingest in
append mode. Keep executemany when fast_executemany is False, and
always bind when replace=True because bulk ingest cannot carry the
dialect's conflict clause. Chunking, commits, target_fields, and
schema.table splitting are unchanged.
Co-authored-by: Aldo <aoelvp94@gmail.com>
* Fall back to binding when the ADBC driver has no bulk ingest
Co-authored-by: Aldo <aoelvp94@gmail.com>
* Use Logger spec and patch decorators in ADBC insert_rows tests
Match AGENTS.md: spec every mock, and prefer @mock.patch.object over
a with-block for the replace=True insert_rows tests.
Co-authored-by: Aldo <aoelvp94@gmail.com>
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>