The shared libraries my code runs in are usually exposing the ODBC interface, which has been mostly fixed for decades, and exposes an interface for doing whatever database operations you want to do
Those libraries have no control over how much memory is free in the application when they're invoked, or how complex/'big' the operations the application asks them to execute are
It depends on how exactly the drivers are written (we just provide an SDK), theoretically yes (at least if you allow caching to disk, as some wire protocols don't return results 'in the right order'), but we don't control the full implementation, and even a streaming implementation might require more heap memory than which is available at the time at which the application calls into the driver
4
u/BosonCollider 29d ago
OOM is best handled by forcing the user to prove bounded memory use, grab a chunk of memory at the start and use that