Commit 9a03ae0c authored by Tomek Mrugalski's avatar Tomek Mrugalski 🛰
Browse files

Merge branch 'trac2143'

parents 7f11d6a7 0ed7d2f8
# Linux switches
CFLAGS=-g -O0 -Wall -pedantic -Wextra
CFLAGS= -Ofast -Wall -pedantic -Wextra
# Mac OS: We don't use pedantic as Mac OS version of MySQL (5.5.24) does use long long (not part of ISO C++)
#CFLAGS=-g -O0 -Wall -Wextra -I/opt/local/include
......
This diff is collapsed.
......@@ -34,6 +34,15 @@ MySQL_uBenchmark::MySQL_uBenchmark(const string& hostname, const string& user,
}
void MySQL_uBenchmark::stmt_failure(MYSQL_STMT * stmt, const char* operation) {
stringstream tmp;
tmp << "Error " << mysql_stmt_errno(stmt) << " during " << operation
<< ": " << mysql_stmt_error(stmt);
throw tmp.str();
}
void MySQL_uBenchmark::failure(const char* operation) {
stringstream tmp;
tmp << "Error " << mysql_errno(conn_) << " during " << operation
......@@ -408,6 +417,7 @@ void MySQL_uBenchmark::searchLease4Test() {
// 4th parameter: Client-id
response[3].buffer_type = MYSQL_TYPE_STRING;
response[3].buffer = &client_id;
response[3].buffer_length = sizeof(client_id);
// 5th parameter: valid-lifetime
response[4].buffer_type = MYSQL_TYPE_LONG;
......@@ -444,11 +454,24 @@ void MySQL_uBenchmark::searchLease4Test() {
}
int num_rows = 0;
if (!mysql_stmt_fetch(stmt)) {
int result = mysql_stmt_fetch(stmt);
switch (result) {
case 0: {
if (lease_addr != addr) {
failure("Returned data is bogus!");
}
num_rows++;
break;
}
case MYSQL_NO_DATA:
{
// that's ok. We randomized non-existing address
break;
}
default: {
stmt_failure(stmt, "RETRIEVE (mysql_stmt_fetch())");
}
}
// we could call mysql_stmt_fetch again to check that there are no
......
......@@ -80,8 +80,25 @@ protected:
/// Compared to its base version in uBenchmark class, this one logs additional
/// MySQL specific information using mysql_errno() and mysql_error() functions.
/// The outcome is the same: exception is thrown.
///
/// @param operation brief description of the operation that caused error
///
/// @sa stmt_failure()
void failure(const char* operation);
/// @brief Used to report compiled statement failures.
///
/// Compared to its base version in uBenchmark class, this one logs additional
/// MySQL specific information using mysql_stmt_errno() and mysql_stmt_error()
/// functions that are used for compiled statements error reporting.
///
/// @param stmt MySQL compiled statement structure
/// @param operation brief description of the operation that caused error
///
/// @sa failure()
void stmt_failure(MYSQL_STMT * stmt, const char* operation);
/// Handle to MySQL database connection.
MYSQL* conn_;
};
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment