# Note that MYSQL is present in the config.h file
AC_DEFINE([HAVE_MYSQL], [1], [MySQL is present])
- # Check is my_bool is defined.
+ # Check if my_bool is defined.
AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([#include <mysql.h>
const my_bool MLM_FALSE = 0;]
AC_DEFINE([HAVE_MYSQL_MY_BOOL], [1], [MySQL uses my_bool])],
[AC_MSG_RESULT([checking for MySQL my_bool... no])])
+ # Check if mysql_get_option is defined.
+ AC_MSG_CHECKING([for MySQL mysql_get_option])
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [#include <mysql.h>],
+ [MYSQL handle;
+ unsigned int timeout;
+ mysql_get_option(&handle, MYSQL_OPT_CONNECT_TIMEOUT, &timeout);]
+ )],
+ [AC_MSG_RESULT([yes])
+ AC_DEFINE([HAVE_MYSQL_GET_OPTION], [true], [MySQL has mysql_get_option defined.])],
+ [AC_MSG_RESULT([no])
+ AC_MSG_WARN([mysql_get_option program failed to build:
+
+$(cat conftest.cpp)
+
+$(cat conftest.err)])]
+ )
+
CPPFLAGS=$CPPFLAGS_SAVED
LIBS=$LIBS_SAVED
-
fi
# Solaris puts FIONREAD in filio.h
mysql_stmt_close(stmt);
}
-
/// @brief Tests inserting and retrieving data from the database.
///
/// In this test data carried in the bindings is inserted into the database.
EXPECT_THROW(conn.openDatabase(), DbInvalidPort);
}
-
-// Tests that valid connection timeout is accepted.
-TEST_F(MySqlConnectionTest, connectionTimeout) {
- std::string conn_str = connectionString(MYSQL_VALID_TYPE, VALID_NAME,
- VALID_HOST_TCP, VALID_USER,
- VALID_PASSWORD, VALID_TIMEOUT);
- MySqlConnection conn(DatabaseConnection::parse(conn_str));
- ASSERT_NO_THROW_LOG(conn.openDatabase());
-
- auto mysql = static_cast<MYSQL*>(conn.mysql_);
- ASSERT_TRUE(mysql);
- unsigned int timeout = 123;
- EXPECT_EQ(0, mysql_get_option(mysql, MYSQL_OPT_CONNECT_TIMEOUT, &timeout));
- EXPECT_EQ(10, timeout);
-}
-
// Tests that invalid timeout value type causes an error.
TEST_F(MySqlConnectionTest, connectionTimeoutInvalid) {
std::string conn_str = connectionString(MYSQL_VALID_TYPE, VALID_NAME,
EXPECT_THROW(conn.openDatabase(), DbInvalidTimeout);
}
+// Tests that an invalid read timeout causes an error.
+TEST_F(MySqlConnectionTest, readTimeoutInvalid) {
+ std::string conn_str = connectionString(MYSQL_VALID_TYPE, VALID_NAME,
+ VALID_HOST_TCP, VALID_USER,
+ VALID_PASSWORD, INVALID_READ_TIMEOUT_1);
+ MySqlConnection conn(DatabaseConnection::parse(conn_str));
+ EXPECT_THROW(conn.openDatabase(), DbInvalidTimeout);
+}
+
+// Tests that an invalid write timeout causes an error.
+TEST_F(MySqlConnectionTest, writeTimeoutInvalid) {
+ std::string conn_str = connectionString(MYSQL_VALID_TYPE, VALID_NAME,
+ VALID_HOST_TCP, VALID_USER,
+ VALID_PASSWORD, INVALID_WRITE_TIMEOUT_1);
+ MySqlConnection conn(DatabaseConnection::parse(conn_str));
+ EXPECT_THROW(conn.openDatabase(), DbInvalidTimeout);
+}
+
+#ifdef HAVE_MYSQL_GET_OPTION
+
+// Tests that valid connection timeout is accepted.
+TEST_F(MySqlConnectionTest, connectionTimeout) {
+ std::string conn_str = connectionString(MYSQL_VALID_TYPE, VALID_NAME,
+ VALID_HOST_TCP, VALID_USER,
+ VALID_PASSWORD, VALID_TIMEOUT);
+ MySqlConnection conn(DatabaseConnection::parse(conn_str));
+ ASSERT_NO_THROW_LOG(conn.openDatabase());
+
+ auto mysql = static_cast<MYSQL*>(conn.mysql_);
+ ASSERT_TRUE(mysql);
+ unsigned int timeout = 123;
+ EXPECT_EQ(0, mysql_get_option(mysql, MYSQL_OPT_CONNECT_TIMEOUT, &timeout));
+ EXPECT_EQ(10, timeout);
+}
+
// Tests that a valid read timeout is accepted.
TEST_F(MySqlConnectionTest, readTimeout) {
std::string conn_str = connectionString(MYSQL_VALID_TYPE, VALID_NAME,
EXPECT_EQ(0, timeout);
}
-// Tests that an invalid read timeout causes an error.
-TEST_F(MySqlConnectionTest, readTimeoutInvalid) {
- std::string conn_str = connectionString(MYSQL_VALID_TYPE, VALID_NAME,
- VALID_HOST_TCP, VALID_USER,
- VALID_PASSWORD, INVALID_READ_TIMEOUT_1);
- MySqlConnection conn(DatabaseConnection::parse(conn_str));
- EXPECT_THROW(conn.openDatabase(), DbInvalidTimeout);
-}
-
// Tests that a valid write timeout is accepted.
TEST_F(MySqlConnectionTest, writeTimeout) {
std::string conn_str = connectionString(MYSQL_VALID_TYPE, VALID_NAME,
EXPECT_EQ(0, timeout);
}
-// Tests that an invalid write timeout causes an error.
-TEST_F(MySqlConnectionTest, writeTimeoutInvalid) {
- std::string conn_str = connectionString(MYSQL_VALID_TYPE, VALID_NAME,
- VALID_HOST_TCP, VALID_USER,
- VALID_PASSWORD, INVALID_WRITE_TIMEOUT_1);
- MySqlConnection conn(DatabaseConnection::parse(conn_str));
- EXPECT_THROW(conn.openDatabase(), DbInvalidTimeout);
-}
+#endif // HAVE_MYSQL_GET_OPTION
TEST_F(MySqlConnectionWithPrimaryKeyTest, select) {
select();