It's been a long time since I've used python but that sounds like buffering in the library maybe? I use it from Go and it seems to behave differently.
When I'm writing to postgres though I'm doing into entirely inside DuckDB with a `INSERT INTO ... SELECT ...` and that seems to stream it over.
You asked it to fetch a batch (15min) then iterated over the batch (all at once).
To stream, fetch more batches.
What ddb does to get the batches depends on hand wavey magic around available ram, and also the structure of the parquet.
```
def _get_duck_db_arrow_results(s3_key):
```I ran the above on a 1.4gb parquet file and 15 min later, all of the results were printed at once. This suggests to me that the whole file was loaded loaded into memory at once.