Thanks for your reply.
I have not seen how exactly your application is running queries, but it is clear that if running PREPARE/EXECUTE sequence is not desirable then the program should not call SQLPrepare()/SQLExecute().
The change in the driver does not violate the ODBC API specifications. Therefore, internally the driver can do this optimization as long as it stays in line with the specifications.
In order to avoid inconveniences and breaking of the working code the client program should not rely on undocumented behavior such as calling SQLPrepare(), which does not do PREPARE for some types of queries. This can change without warning. For this reason using SQLExecDirect() would be a safer approach in your case.
However, it is entirely possible that something has been overlooked and there is a bug in the driver. If you believe this might be the case please report a bug here:
When reporting a new bug it would be great if you could provide a short working code to help us reproduce the problem.