I am converting an Informix SE to an IDS database. The programs I have use ODBC System DSNs to communicate with the database.
For SE, we use the sesoctcp protocol. The program code, would open a Recordset from the DSN, loop through each record and save each record to a local AccessDB (execute INSERT INTO), and then perform a MoveNext on the Recordset.
For IDS, we use the onsoctcp protocol. With the same code, the program throws an error on MoveNext.
I believe the Recordset is being closed... I added code to perform a MoveLast/MoveFirst on the Recordset before the loop and the MoveNext does not throw an error. This change will require me to update potentially 400 programs.
On the other hand, I can forego the code changes and instead change the DSN Cursor Behavior to "1 - Preserve" and the MoveNext does not throw an error. My limited understanding is that if I leave it on "0 - close", this tells the driver to decide when to close the recordset instead of letting the program decide.
The only documentation I could find for Cursor Behavior doesn't explain the values: https://www.ibm.com/support/knowledgecenter/en/SSGU8G_11.70.0/com.ibm.odbc.doc/ids_odbc_069.htm
So... what are the pitfalls of using "Preserve" for Cursor Behavior in Informix ODBC DSN?