=== modified file 'driver/mysql_statement.cpp' --- driver/mysql_statement.cpp 2010-07-27 21:07:46 +0000 +++ driver/mysql_statement.cpp 2010-07-28 20:48:35 +0000 @@ -226,8 +226,10 @@ result.reset(tmp_ptr); tmp_type = sql::ResultSet::TYPE_SCROLL_INSENSITIVE; } - } catch (::sql::SQLException & /*e*/ ) { - return NULL; + } catch (::sql::SQLException & e ) { + CPP_ERR_FMT("Error during %s_result : %d:(%s) %s", resultset_type == sql::ResultSet::TYPE_FORWARD_ONLY? "use":"store", + proxy->errNo(), proxy->sqlstate().c_str(), proxy->error().c_str()); + throw e; } if (!result) { === modified file 'test/unit/bugs/bugs.cpp' --- test/unit/bugs/bugs.cpp 2010-07-02 15:19:57 +0000 +++ test/unit/bugs/bugs.cpp 2010-07-28 21:30:24 +0000 @@ -170,5 +170,31 @@ } +void bugs::getResultSet_54840() +{ + stmt->executeUpdate("DROP function if exists _getActivePost"); + stmt->executeUpdate("CREATE Function _getActivePost(_author INT) " + "RETURNS INT " + "DETERMINISTIC " + "BEGIN " + " RETURN 55;" + "END"); + + ASSERT(stmt->execute("select _getActivePost()")); + + try + { + res.reset(stmt->getResultSet()); + } + catch (::sql::SQLException & /*e*/) + { + stmt->executeUpdate("DROP function _getActivePost"); + return; /* Everything is fine */ + } + + stmt->executeUpdate("DROP function _getActivePost"); + FAIL("Exception wasn't thrown by getResultSet"); +} + } /* namespace regression */ } /* namespace testsuite */ === modified file 'test/unit/bugs/bugs.h' --- test/unit/bugs/bugs.h 2010-07-02 14:58:21 +0000 +++ test/unit/bugs/bugs.h 2010-07-28 21:23:40 +0000 @@ -35,6 +35,7 @@ { TEST_CASE(net_write_timeout39878); TEST_CASE(store_result_error_51562); + TEST_CASE(getResultSet_54840); } /** @@ -50,6 +51,8 @@ * http://bugs.mysql.com/bug.php?id=51562 */ void store_result_error_51562(); + + void getResultSet_54840(); }; REGISTER_FIXTURE(bugs);