Our product generates SQL SELECT statements and executes them through ODBC - to either Oracle or SQLServer - all of the SQL statements are executed in BulkFetch mode with a RowSetSize of 25. SQLServer is not a problem and I cannot confirm this, but I think Oracle 12 was not a problem either.
In Oracle 19c, if one of the columns in the SELECT statement is a CLOB column, then the following happens:
- all of the data in the other columns come back correct - they each populate their array of 25 elements as expected
- for the CLOB column (and corresponding array),
- the first field (for the first row), is correct
- the second field (for the second row), is a duplicate of the first
- then every row after that is offset by one - the 3rd field (for the 3rd row) contains what should have been in the 2nd field, etc.
Here is an screen shot from our product - where CalculationExpression is the CLOB column. The red lines indicate how things are offset by 1.

Our Oracle Server is running 19.3, while our ODBC drivers are 19.0 - I can't seem to find a newer version of the driver, to see if that is the problem.

Does anyone have any experience with this? Or does this sound familiar at all? I've extracted our code to a C++ command line program that duplicates the problem - hitting our DB of course. I could clean this up and provide as a sample if requested.