-
Notifications
You must be signed in to change notification settings - Fork 33
Fix experimental implementation of LOBs #36
Description
Currently, all LOB objects like BLOBs and Binary Streams are being hydrated before transferring, which means that the full data is brought into memory before transmission, this is due to the fact that MySQL and DB2 required this approach due to their aggressive closing of LOBs when the cursor moves to the next row and also to the fact that there were intermittent errors happening with LOBs in the CI builds Previously recorded in #31.
This issue is to experiment with the streaming implementation that was previously in place which would separate the byte arrays in blocks of 1KB for transmission, create a heavenly concurrent test with LOBs that simulate the issues from issue 31 consistently. Root cause it, fix it and put back the streamed approach in the code for databases that support it, at this point are believed to support it Postgres (only Binary Stream for BYTEA type), MySQL, MariaDB and Oracle. As mentioned before SQL Server and DB2 would possibly still rely on hidrated LOBs due to their approach to the same.
AC: all CI tests pass consistently.