Clean up mariadb_func.h

Combined functions into one which only used different default
values. Removed unused functions. Used std::string where possible to make
their usage easier. Hid code that isn't used externally.
This commit is contained in:
Markus Mäkelä
2017-12-12 14:58:22 +02:00
parent fe75273874
commit dde85af83b
3 changed files with 131 additions and 233 deletions

View File

@ -15,13 +15,13 @@
#include <ctype.h> #include <ctype.h>
#include <sstream> #include <sstream>
int set_ssl(MYSQL * conn) int set_ssl(MYSQL* conn)
{ {
char client_key[1024]; char client_key[1024];
char client_cert[1024]; char client_cert[1024];
char ca[1024]; char ca[1024];
char * test_dir; char* test_dir = getenv("test_dir");
test_dir = getenv("test_dir");
if (test_dir == NULL) if (test_dir == NULL)
{ {
sprintf(client_key, "./ssl-cert/client-key.pem"); sprintf(client_key, "./ssl-cert/client-key.pem");
@ -37,10 +37,10 @@ int set_ssl(MYSQL * conn)
return mysql_ssl_set(conn, client_key, client_cert, ca, NULL, NULL); return mysql_ssl_set(conn, client_key, client_cert, ca, NULL, NULL);
} }
MYSQL * open_conn_db_flags(int port, const char* ip, const char* db, const char* User, const char* Password, MYSQL* open_conn_db_flags(int port, std::string ip, std::string db, std::string user, std::string password,
unsigned long flag, bool ssl) unsigned long flag, bool ssl)
{ {
MYSQL * conn = mysql_init(NULL); MYSQL* conn = mysql_init(NULL);
if (conn == NULL) if (conn == NULL)
{ {
@ -53,27 +53,15 @@ MYSQL * open_conn_db_flags(int port, const char* ip, const char* db, const char*
set_ssl(conn); set_ssl(conn);
} }
if (!mysql_real_connect(conn, mysql_real_connect(conn, ip.c_str(), user.c_str(), password.c_str(),
ip, db.c_str(), port, NULL, flag);
User,
Password,
db,
port,
NULL,
flag
))
{
//printf("Error: can't connect to database, error is %s:\n", mysql_error(conn));
return conn;
}
return conn; return conn;
} }
MYSQL * open_conn_db_timeout(int port, const char* ip, const char* db, const char* User, const char* Password, MYSQL* open_conn_db_timeout(int port, std::string ip, std::string db, std::string user, std::string password,
unsigned long timeout, bool ssl) unsigned int timeout, bool ssl)
{ {
MYSQL * conn = mysql_init(NULL); MYSQL* conn = mysql_init(NULL);
if (conn == NULL) if (conn == NULL)
{ {
@ -81,61 +69,21 @@ MYSQL * open_conn_db_timeout(int port, const char* ip, const char* db, const cha
return NULL; return NULL;
} }
unsigned int conn_timeout = timeout; mysql_options(conn, MYSQL_OPT_CONNECT_TIMEOUT, &timeout);
unsigned int read_timeout = timeout; mysql_options(conn, MYSQL_OPT_READ_TIMEOUT, &timeout);
unsigned int write_timeout = timeout; mysql_options(conn, MYSQL_OPT_WRITE_TIMEOUT, &timeout);
mysql_options(conn, MYSQL_OPT_CONNECT_TIMEOUT, &conn_timeout);
mysql_options(conn, MYSQL_OPT_READ_TIMEOUT, &read_timeout);
mysql_options(conn, MYSQL_OPT_WRITE_TIMEOUT, &write_timeout);
if (ssl)
{
if (ssl) if (ssl)
{ {
set_ssl(conn); set_ssl(conn);
} }
}
if (!mysql_real_connect(conn,
ip,
User,
Password,
db,
port,
NULL,
CLIENT_MULTI_STATEMENTS
))
{
//printf("Error: can't connect to database, error is %s:\n", mysql_error(conn));
return conn;
}
mysql_real_connect(conn, ip.c_str(), user.c_str(), password.c_str(),
db.c_str(), port, NULL, CLIENT_MULTI_STATEMENTS);
return conn; return conn;
} }
MYSQL* open_conn_db_timeout(int port, const std::string& ip, const std::string& db,
const std::string& user, const std::string& password,
unsigned long timeout, bool ssl)
{
return open_conn_db_timeout(port, ip.c_str(), db.c_str(), user.c_str(), password.c_str(), timeout, ssl);
}
MYSQL * open_conn_db(int port, const char* ip, const char* db, const char* User, const char* Password, int execute_query(MYSQL* conn, const char* format, ...)
bool ssl)
{
return open_conn_db_flags(port, ip, db, User, Password, CLIENT_MULTI_STATEMENTS, ssl);
}
MYSQL * open_conn(int port, const char* ip, const char* User, const char* Password, bool ssl)
{
return open_conn_db(port, ip, "test", User, Password, ssl);
}
MYSQL * open_conn_no_db(int port, const char* ip, const char*User, const char*Password, bool ssl)
{
return open_conn_db_flags(port, ip, NULL, User, Password, CLIENT_MULTI_STATEMENTS, ssl);
}
int execute_query(MYSQL *conn, const char *format, ...)
{ {
va_list valist; va_list valist;
@ -149,10 +97,10 @@ int execute_query(MYSQL *conn, const char *format, ...)
vsnprintf(sql, sizeof(sql), format, valist); vsnprintf(sql, sizeof(sql), format, valist);
va_end(valist); va_end(valist);
return execute_query1(conn, sql, false); return execute_query_silent(conn, sql, false);
} }
int execute_query_from_file(MYSQL *conn, FILE *file) int execute_query_from_file(MYSQL* conn, FILE* file)
{ {
int rc = -1; int rc = -1;
char buf[4096]; char buf[4096];
@ -175,7 +123,7 @@ int execute_query_from_file(MYSQL *conn, FILE *file)
if (*ptr) if (*ptr)
{ {
rc = execute_query1(conn, buf, false); rc = execute_query_silent(conn, buf, false);
} }
} }
@ -188,12 +136,7 @@ int execute_query_from_file(MYSQL *conn, FILE *file)
return rc; return rc;
} }
int execute_query_silent(MYSQL *conn, const char *sql) int execute_query_silent(MYSQL* conn, const char* sql, bool silent)
{
return execute_query1(conn, sql, true);
}
int execute_query1(MYSQL *conn, const char *sql, bool silent)
{ {
MYSQL_RES *res; MYSQL_RES *res;
if (conn != NULL) if (conn != NULL)
@ -229,7 +172,7 @@ int execute_query1(MYSQL *conn, const char *sql, bool silent)
} }
} }
int execute_query_check_one(MYSQL *conn, const char *sql, const char *expected) int execute_query_check_one(MYSQL* conn, const char* sql, const char* expected)
{ {
int r = 1; int r = 1;
@ -299,7 +242,7 @@ int execute_query_check_one(MYSQL *conn, const char *sql, const char *expected)
return r; return r;
} }
int execute_query_affected_rows(MYSQL *conn, const char *sql, my_ulonglong * affected_rows) int execute_query_affected_rows(MYSQL* conn, const char* sql, my_ulonglong* affected_rows)
{ {
MYSQL_RES *res; MYSQL_RES *res;
if (conn != NULL) if (conn != NULL)
@ -329,8 +272,8 @@ int execute_query_affected_rows(MYSQL *conn, const char *sql, my_ulonglong * aff
} }
} }
int execute_query_num_of_rows(MYSQL *conn, const char *sql, my_ulonglong num_of_rows[], int execute_query_num_of_rows(MYSQL* conn, const char* sql, my_ulonglong* num_of_rows,
unsigned long long * i) unsigned long long* i)
{ {
MYSQL_RES *res; MYSQL_RES *res;
my_ulonglong N; my_ulonglong N;
@ -376,7 +319,7 @@ int execute_query_num_of_rows(MYSQL *conn, const char *sql, my_ulonglong num_of_
} }
} }
int execute_stmt_num_of_rows(MYSQL_STMT * stmt, my_ulonglong num_of_rows[], unsigned long long * i) int execute_stmt_num_of_rows(MYSQL_STMT* stmt, my_ulonglong* num_of_rows, unsigned long long* i)
{ {
my_ulonglong N; my_ulonglong N;
@ -436,7 +379,7 @@ int execute_stmt_num_of_rows(MYSQL_STMT * stmt, my_ulonglong num_of_rows[], unsi
return 1; return 1;
} }
int execute_query_count_rows(MYSQL *conn, const char *sql) int execute_query_count_rows(MYSQL* conn, const char* sql)
{ {
int rval = -1; int rval = -1;
@ -456,7 +399,7 @@ int execute_query_count_rows(MYSQL *conn, const char *sql)
return rval; return rval;
} }
int get_conn_num(MYSQL *conn, char * ip, char *hostname, char * db) int get_conn_num(MYSQL* conn, std::string ip, std::string hostname, std::string db)
{ {
MYSQL_RES *res; MYSQL_RES *res;
MYSQL_ROW row; MYSQL_ROW row;
@ -464,15 +407,15 @@ int get_conn_num(MYSQL *conn, char * ip, char *hostname, char * db)
unsigned long long int rows; unsigned long long int rows;
unsigned long long int i; unsigned long long int i;
unsigned int conn_num = 0; unsigned int conn_num = 0;
const char * hostname_internal; const char* hostname_internal;
if (strcmp(ip, "127.0.0.1") == 0) if (ip == "127.0.0.1")
{ {
hostname_internal = "localhost"; hostname_internal = "localhost";
} }
else else
{ {
hostname_internal = hostname; hostname_internal = hostname.c_str();
} }
if (conn != NULL) if (conn != NULL)
@ -500,11 +443,11 @@ int get_conn_num(MYSQL *conn, char * ip, char *hostname, char * db)
row = mysql_fetch_row(res); row = mysql_fetch_row(res);
if ( (row[2] != NULL ) && (row[3] != NULL) ) if ( (row[2] != NULL ) && (row[3] != NULL) )
{ {
if ((strstr(row[2], ip) != NULL) && (strstr(row[3], db) != NULL)) if ((strstr(row[2], ip.c_str()) != NULL) && (strstr(row[3], db.c_str()) != NULL))
{ {
conn_num++; conn_num++;
} }
if ((strstr(row[2], hostname_internal) != NULL) && (strstr(row[3], db) != NULL)) if ((strstr(row[2], hostname_internal) != NULL) && (strstr(row[3], db.c_str()) != NULL))
{ {
conn_num++; conn_num++;
} }
@ -514,7 +457,7 @@ int get_conn_num(MYSQL *conn, char * ip, char *hostname, char * db)
mysql_free_result(res); mysql_free_result(res);
} }
} }
if (strcmp(ip, "127.0.0.1") == 0) if (ip == "127.0.0.1")
{ {
// one extra connection is visible in the process list // one extra connection is visible in the process list
// output in case of local test // output in case of local test
@ -524,7 +467,7 @@ int get_conn_num(MYSQL *conn, char * ip, char *hostname, char * db)
return conn_num; return conn_num;
} }
int find_field(MYSQL *conn, const char *sql, const char *field_name, char * value) int find_field(MYSQL* conn, const char* sql, const char* field_name, char* value)
{ {
MYSQL_RES *res; MYSQL_RES *res;
MYSQL_ROW row; MYSQL_ROW row;
@ -579,66 +522,7 @@ int find_field(MYSQL *conn, const char *sql, const char *field_name, char * valu
return ret; return ret;
} }
unsigned int get_seconds_behind_master(MYSQL *conn) int get_int_version(std::string version)
{
char SBM_str[16];
unsigned int SBM = 0;
if (find_field(
conn, (char *) "show slave status;",
(char *) "Seconds_Behind_Master", &SBM_str[0]
) != 1)
{
sscanf(SBM_str, "%u", &SBM);
}
return SBM;
}
int read_log(char * name, char ** err_log_content_p)
{
FILE *f;
*err_log_content_p = NULL;
char * err_log_content;
f = fopen(name, "rb");
if (f != NULL)
{
int prev = ftell(f);
fseek(f, 0L, SEEK_END);
long int size = ftell(f);
fseek(f, prev, SEEK_SET);
err_log_content = (char *)malloc(size + 2);
if (err_log_content != NULL)
{
fread(err_log_content, 1, size, f);
for (int i = 0; i < size; i++)
{
if (err_log_content[i] == 0)
{
//printf("null detected at position %d\n", i);
err_log_content[i] = '\n';
}
}
//printf("s=%ld\n", strlen(err_log_content));
err_log_content[size] = '\0';
//printf("s=%ld\n", strlen(err_log_content));
* err_log_content_p = err_log_content;
return 0;
}
else
{
printf("Error allocationg memory for the log\n");
return 1;
}
}
else
{
printf ("Error reading log %s \n", name);
return 1;
}
}
int get_int_version(const std::string& version)
{ {
std::istringstream str(version); std::istringstream str(version);
int major = 0; int major = 0;
@ -649,8 +533,3 @@ int get_int_version(const std::string& version)
str >> major >> dot >> minor >> dot >> patch; str >> major >> dot >> minor >> dot >> patch;
return major * 10000 + minor * 100 + patch; return major * 10000 + minor * 100 + patch;
} }
int get_int_version(const char* version)
{
return get_int_version(std::string(version));
}

View File

@ -31,13 +31,14 @@
* @param port DB server port * @param port DB server port
* @param ip DB server IP address * @param ip DB server IP address
* @param db name of DB to connect * @param db name of DB to connect
* @param User User name * @param user user name
* @param Password Password * @param password password
* @param flag Connections flags * @param flag Connections flags
* @param ssl true if ssl should be used * @param ssl true if ssl should be used
* @return MYSQL struct or NULL in case of error *
* @return MYSQL struct
*/ */
MYSQL * open_conn_db_flags(int port, const char* ip, const char* db, const char* User, const char* Password, MYSQL* open_conn_db_flags(int port, std::string ip, std::string db, std::string user, std::string password,
unsigned long flag, bool ssl); unsigned long flag, bool ssl);
@ -47,18 +48,15 @@ MYSQL * open_conn_db_flags(int port, const char* ip, const char* db, const char*
* @param port DB server port * @param port DB server port
* @param ip DB server IP address * @param ip DB server IP address
* @param db name of DB to connect * @param db name of DB to connect
* @param User User name * @param user user name
* @param Password Password * @param password password
* @param timeout timeout on seconds * @param timeout timeout on seconds
* @param ssl true if ssl should be used * @param ssl true if ssl should be used
* @return MYSQL struct or NULL in case of error *
* @return MYSQL struct
*/ */
MYSQL * open_conn_db_timeout(int port, const char* ip, const char* db, const char* User, const char* Password, MYSQL* open_conn_db_timeout(int port, std::string ip, std::string db, std::string user, std::string password,
unsigned long timeout, bool ssl); unsigned int timeout, bool ssl);
MYSQL* open_conn_db_timeout(int port, const std::string& ip, const std::string& db,
const std::string& user, const std::string& password,
unsigned long timeout, bool ssl);
/** /**
* Opens connection to DB with default flags * Opens connection to DB with default flags
@ -66,46 +64,49 @@ MYSQL* open_conn_db_timeout(int port, const std::string& ip, const std::string&
* @param port DB server port * @param port DB server port
* @param ip DB server IP address * @param ip DB server IP address
* @param db name of DB to connect * @param db name of DB to connect
* @param User User name * @param user user name
* @param Password Password * @param password password
* @param ssl true if ssl should be used * @param ssl true if ssl should be used
* @return MYSQL struct or NULL in case of error *
* @return MYSQL struct
*/ */
MYSQL * open_conn_db(int port, const char* ip, const char* db, const char* User, const char* Password, static MYSQL* open_conn_db(int port, std::string ip, std::string db, std::string user, std::string password,
bool ssl); bool ssl)
{
return open_conn_db_flags(port, ip, db, user, password, CLIENT_MULTI_STATEMENTS, ssl);
}
/** /**
* Opens connection to 'test' with default flags * Opens connection to 'test' with default flags
* *
* @param port DB server port * @param port DB server port
* @param ip DB server IP address * @param ip DB server IP address
* @param User User name * @param user user name
* @param Password Password * @param password password
* @param ssl true if ssl should be used * @param ssl true if ssl should be used
* @return MYSQL struct or NULL in case of error *
* @return MYSQL struct
*/ */
MYSQL * open_conn(int port, const char* ip, const char* User, const char* Password, bool ssl); static MYSQL* open_conn(int port, std::string ip, std::string user, std::string password, bool ssl)
{
return open_conn_db(port, ip.c_str(), "test", user.c_str(), password.c_str(), ssl);
}
/** /**
* Opens connection to with default flags without defning DB name (just conecto server) * Opens connection to with default flags without defning DB name (just conecto server)
* *
* @param port DB server port * @param port DB server port
* @param ip DB server IP address * @param ip DB server IP address
* @param User User name * @param user user name
* @param Password Password * @param password password
* @param ssl true if ssl should be used * @param ssl true if ssl should be used
* @return MYSQL struct or NULL in case of error *
* @return MYSQL struct
*/ */
MYSQL * open_conn_no_db(int port, const char* ip, const char* User, const char* Password, bool ssl); static MYSQL* open_conn_no_db(int port, std::string ip, std::string user, std::string password, bool ssl)
{
/** return open_conn_db_flags(port, ip, NULL, user, password, CLIENT_MULTI_STATEMENTS, ssl);
* @brief set_ssl Configure SSL for given connection }
* Function assumes that certificates are in test_dir/ssl-cert/ directory
* @param conn MYSQL handler
* @return return of mysql_ssl_set() (always 0, see mysql_ssl_set() documentation)
*/
int set_ssl(MYSQL * conn);
/** /**
* @brief Executes SQL query. Function also executes mysql_store_result() and mysql_free_result() to clean up returns * @brief Executes SQL query. Function also executes mysql_store_result() and mysql_free_result() to clean up returns
@ -114,7 +115,7 @@ int set_ssl(MYSQL * conn);
* @param ... Parameters for @c format * @param ... Parameters for @c format
* @return 0 in case of success * @return 0 in case of success
*/ */
int execute_query(MYSQL *conn, const char *format, ...); int execute_query(MYSQL* conn, const char* format, ...);
/** /**
* @brief execute_query_from_file Read a line from a file, trim leading and trailing whitespace and execute it. * @brief execute_query_from_file Read a line from a file, trim leading and trailing whitespace and execute it.
@ -122,7 +123,7 @@ int execute_query(MYSQL *conn, const char *format, ...);
* @param file file handler * @param file file handler
* @return 0 in case of success * @return 0 in case of success
*/ */
int execute_query_from_file(MYSQL *conn, FILE *file); int execute_query_from_file(MYSQL* conn, FILE* file);
/** /**
* @brief Executes SQL query. Function also executes mysql_store_result() and mysql_free_result() to clean up returns * @brief Executes SQL query. Function also executes mysql_store_result() and mysql_free_result() to clean up returns
@ -130,17 +131,7 @@ int execute_query_from_file(MYSQL *conn, FILE *file);
* @param sql SQL string * @param sql SQL string
* @return 0 in case of success * @return 0 in case of success
*/ */
int execute_query_silent(MYSQL *conn, const char *sql); int execute_query_silent(MYSQL* conn, const char* sql, bool silent = true);
/**
* @brief Executes SQL query. Function also executes mysql_store_result() and mysql_free_result() to clean up returns
* This function do not support 'printf' format for sql (in compare with execute_query()
* @param conn MYSQL connection struct
* @param sql SQL string
* @param silent if true function do not produce any printing
* @return 0 in case of success
*/
int execute_query1(MYSQL *conn, const char *sql, bool silent);
/** /**
* @brief Executes SQL query and store 'affected rows' number in affectet_rows parameter * @brief Executes SQL query and store 'affected rows' number in affectet_rows parameter
@ -149,7 +140,7 @@ int execute_query1(MYSQL *conn, const char *sql, bool silent);
* @param affected_rows pointer to variabe to store number of affected rows * @param affected_rows pointer to variabe to store number of affected rows
* @return 0 in case of success * @return 0 in case of success
*/ */
int execute_query_affected_rows(MYSQL *conn, const char *sql, my_ulonglong * affected_rows); int execute_query_affected_rows(MYSQL* conn, const char* sql, my_ulonglong* affected_rows);
/** /**
* @brief A more convenient form of execute_query_affected_rows() * @brief A more convenient form of execute_query_affected_rows()
@ -158,7 +149,7 @@ int execute_query_affected_rows(MYSQL *conn, const char *sql, my_ulonglong * aff
* @param sql The SQL statement to execute * @param sql The SQL statement to execute
* @return Number of rows or -1 on error * @return Number of rows or -1 on error
*/ */
int execute_query_count_rows(MYSQL *conn, const char *sql); int execute_query_count_rows(MYSQL* conn, const char* sql);
/** /**
* @brief Executes SQL query and get number of rows in the result * @brief Executes SQL query and get number of rows in the result
@ -170,7 +161,7 @@ int execute_query_count_rows(MYSQL *conn, const char *sql);
* @param i pointer to variable to store number of result sets * @param i pointer to variable to store number of result sets
* @return 0 in case of success * @return 0 in case of success
*/ */
int execute_query_num_of_rows(MYSQL *conn, const char *sql, my_ulonglong num_of_rows[], int execute_query_num_of_rows(MYSQL* conn, const char* sql, my_ulonglong* num_of_rows,
unsigned long long *i); unsigned long long *i);
/** /**
@ -182,7 +173,7 @@ int execute_query_num_of_rows(MYSQL *conn, const char *sql, my_ulonglong num_of_
* @param i pointer to variable to store number of result sets * @param i pointer to variable to store number of result sets
* @return 0 in case of success * @return 0 in case of success
*/ */
int execute_stmt_num_of_rows(MYSQL_STMT *stmt, my_ulonglong num_of_rows[], unsigned long long * i); int execute_stmt_num_of_rows(MYSQL_STMT* stmt, my_ulonglong* num_of_rows, unsigned long long * i);
/** /**
* @brief execute_query_check_one Executes query and check if first field of first row is equal to 'expected' * @brief execute_query_check_one Executes query and check if first field of first row is equal to 'expected'
@ -191,7 +182,7 @@ int execute_stmt_num_of_rows(MYSQL_STMT *stmt, my_ulonglong num_of_rows[], unsig
* @param expected Expected result * @param expected Expected result
* @return 0 in case of success * @return 0 in case of success
*/ */
int execute_query_check_one(MYSQL *conn, const char *sql, const char *expected); int execute_query_check_one(MYSQL* conn, const char* sql, const char* expected);
/** /**
* @brief Executes 'show processlist' and calculates number of connections from defined host to defined DB * @brief Executes 'show processlist' and calculates number of connections from defined host to defined DB
@ -200,7 +191,7 @@ int execute_query_check_one(MYSQL *conn, const char *sql, const char *expected);
* @param db name of DB to which connections are counted * @param db name of DB to which connections are counted
* @return number of connections * @return number of connections
*/ */
int get_conn_num(MYSQL *conn, char * ip, char * hostname, char * db); int get_conn_num(MYSQL* conn, std::string ip, std::string hostname, std::string db);
/** /**
* @brief Find given filed in the SQL query reply * @brief Find given filed in the SQL query reply
@ -211,25 +202,8 @@ int get_conn_num(MYSQL *conn, char * ip, char * hostname, char * db);
* @param value pointer to variable to store value of found field * @param value pointer to variable to store value of found field
* @return 0 in case of success * @return 0 in case of success
*/ */
int find_field(MYSQL *conn, const char * sql, const char * field_name, char * value); int find_field(MYSQL* conn, const char* sql, const char* field_name, char* value);
/** int get_int_version(std::string version);
* @brief Return the value of SECONDS_BEHIND_MASTER
* @param conn MYSQL connection struct
* @return value of SECONDS_BEHIND_MASTER
*/
unsigned int get_seconds_behind_master(MYSQL *conn);
/**
* @brief Read MaxScale log file
* @param name Name of log file (full path)
* @param err_log_content pointer to the buffer to store log file content
* @return 0 in case of success, 1 in case of error
*/
int read_log(char * name, char **err_log_content_p);
int get_int_version(const std::string& version);
int get_int_version(const char* version);
#endif // MARIADB_FUNC_H #endif // MARIADB_FUNC_H

View File

@ -1057,6 +1057,51 @@ void TestConnections::log_excludes(int m, const char* pattern)
add_result(log_matches(m, pattern), "Log matches pattern '%s'", pattern); add_result(log_matches(m, pattern), "Log matches pattern '%s'", pattern);
} }
static int read_log(const char* name, char **err_log_content_p)
{
FILE *f;
*err_log_content_p = NULL;
char * err_log_content;
f = fopen(name, "rb");
if (f != NULL)
{
int prev = ftell(f);
fseek(f, 0L, SEEK_END);
long int size = ftell(f);
fseek(f, prev, SEEK_SET);
err_log_content = (char *)malloc(size + 2);
if (err_log_content != NULL)
{
fread(err_log_content, 1, size, f);
for (int i = 0; i < size; i++)
{
if (err_log_content[i] == 0)
{
//printf("null detected at position %d\n", i);
err_log_content[i] = '\n';
}
}
//printf("s=%ld\n", strlen(err_log_content));
err_log_content[size] = '\0';
//printf("s=%ld\n", strlen(err_log_content));
* err_log_content_p = err_log_content;
return 0;
}
else
{
printf("Error allocationg memory for the log\n");
return 1;
}
}
else
{
printf ("Error reading log %s \n", name);
return 1;
}
}
void TestConnections::check_log_err(int m, const char * err_msg, bool expected) void TestConnections::check_log_err(int m, const char * err_msg, bool expected)
{ {
@ -1698,7 +1743,7 @@ int TestConnections::try_query(MYSQL *conn, const char *format, ...)
vsnprintf(sql, sizeof(sql), format, valist); vsnprintf(sql, sizeof(sql), format, valist);
va_end(valist); va_end(valist);
int res = execute_query1(conn, sql, false); int res = execute_query_silent(conn, sql, false);
add_result(res, "Query '%.*s%s' failed!\n", message_len < 100 ? message_len : 100, sql, add_result(res, "Query '%.*s%s' failed!\n", message_len < 100 ? message_len : 100, sql,
message_len < 100 ? "" : "..."); message_len < 100 ? "" : "...");
return res; return res;