You will find some changes in DBD-ODBC 1.42_1 which may be of interest to you. The interface between DBI and DBDs needs to change in order to support larger values of rows affected (it is an int right now). As this change would require all DBDs to be changed this is not going to happen right now. Until then I have made the following changes:
- Add an odbc_rows method which returns the same as execute would except there is no overflowing.
- changed execute so if it spots overflowing it will warn (if DBI Warn is set which it is by default) and then it returns INT_MAX so you can check for that.
I'd appreciate any feedback on this if you have a chance to try it out as you appear to be the first person to insert/update such a huge number of rows and notice the problem.