I’m in a situation where I need to make a call to a stored procedure from Rails. I can do it, but it either breaks the MySQL connection, or is a pseudo hack that requires weird changes to the stored procs. Plus the pseudo hack can’t return large sets of data.
Right now my solution is to use system() and call the mysql command line directly. I’m thinking that a less sad solution would be to open my own MySQL connection independent of Active Record’s connection.
I don’t know of any reasons why this would be bad. But I also don’t know the innards of the MySQL well enough to know it’s 100% safe.
It would solve my problem neatly, in that with the controller actions that need to call a stored proc would open a fresh database connection, make the call and close it. I might sacrifice some performance, but if it works that’s good enough. It also solves the issue of multiple users in the same process (we use mongrel, currently) in edge rails where it’s now finally thread safe, as the hack requires two sql queries and I don’t think I can guarantee I’m using the same database connection via Active Record.
So, is this a bad idea and/or dangerous?
We’ve since tried the latest mysql gem from github and even that doesn’t solve the problem.
We’ve patched the mysql adapter in Rails and that actually does work. All it does is make sure the MySQL connection has no more results before continuing on.
I’m not accepting this answer, yet, because I don’t feel 100% that the fix is a good one. We haven’t done quite enough testing. But I wanted to put it out there for anyone else looking at this question.