Hello,
I'm maintaining a Visual Basic 6 legacy application that uses RDO (msrdo20.dll) via ODBC. On newly installed machines with OraClient12102_32bit I identified a strange issue: Statements that execute insert-statements that violate a unique constraint break the application. The application hangs up ("No reponse" in window title), starts eating memory. No error is trackable.
The issue only occurs on clients with OraClient12. It works fine with OraClient11 ODBC data sources. It is also working with Microsoft ODBC for Oracle. It's confirmed in Windows 7 and 10.
To demonstrate the issue I created two simple sample applications. One with Visual Basic 6 (SP6) and another one with .Net/Visual Studio 2013/C# Forms project. Both projects do reference COM library RDO (Microsoft Remote Data Object 2.0). You can get the source code and the compiled apps here (public OneDrive link): https://1drv.ms/f/s!AmMznNKZa7tk4xW4TRUbv9tOJI_3
ABSOLUTELY NO WARRANTY GIVEN FOR TRYING THE SOURCES/APPS.
- To test the apps/projects out you need to create the required table with CREATE TABLE ODBC_RDO_TEST_TBL (ID NUMBER(5, 0) NOT NULL, CONSTRAINT ODBC_RDO_TEST_TBL_PK PRIMARY KEY (ID) ENABLE); within the Oracle Schema you're going to test with.
- The apps connect with the Windows "Select datasource" dialog.
- When you hit the "Insert button" the 2nd time the issue occurs. It's doing nothing else than calling "insert into ODBC_RDO_TEST_TBL values (1)" via the RDO-object's Execute method.
- With non OraClient12 ODBC drivers the unique constraint violation gets reported as expected.
Looks like an awful bug within the Oracle 12 Client to me.
Any ideas?