diff --git a/CMakeLists.txt b/CMakeLists.txt index f535b0a8..3caed1cb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -232,7 +232,7 @@ INCLUDE(${CC_SOURCE_DIR}/cmake/CheckFunctions.cmake) # check for various types INCLUDE(${CC_SOURCE_DIR}/cmake/CheckTypes.cmake) -IF(NOT WITH_SSL AND NOT WITH_SSL STREQUAL "OFF") +IF(NOT WITH_SSL OR WITH_SSL STREQUAL "OFF") IF(WIN32) SET(WITH_SSL "SCHANNEL") ELSE() diff --git a/include/mysql.h b/include/mysql.h index 40b8887e..7c4fd4ba 100644 --- a/include/mysql.h +++ b/include/mysql.h @@ -265,6 +265,10 @@ extern const char *SQLSTATE_UNKNOWN; MARIADB_CONNECTION_USER, MARIADB_MAX_ALLOWED_PACKET, MARIADB_NET_BUFFER_LENGTH, + MARIADB_CONNECTION_SERVER_STATUS, + MARIADB_CONNECTION_SERVER_CAPABILITIES, + MARIADB_CONNECTION_EXTENDED_SERVER_CAPABILITIES, + MARIADB_CONNECTION_CLIENT_CAPABILITIES }; enum mysql_status { MYSQL_STATUS_READY, @@ -519,7 +523,6 @@ int STDCALL mysql_kill(MYSQL *mysql,unsigned long pid); int STDCALL mysql_ping(MYSQL *mysql); char * STDCALL mysql_stat(MYSQL *mysql); char * STDCALL mysql_get_server_info(MYSQL *mysql); -unsigned int STDCALL mysql_get_server_status(MYSQL *mysql); unsigned long STDCALL mysql_get_server_version(MYSQL *mysql); char * STDCALL mysql_get_host_info(MYSQL *mysql); unsigned int STDCALL mysql_get_proto_info(MYSQL *mysql); @@ -738,7 +741,6 @@ struct st_mariadb_api { int (STDCALL *mysql_ping)(MYSQL *mysql); char * (STDCALL *mysql_stat)(MYSQL *mysql); char * (STDCALL *mysql_get_server_info)(MYSQL *mysql); - unsigned int (STDCALL *mysql_get_server_status)(MYSQL *mysql); unsigned long (STDCALL *mysql_get_server_version)(MYSQL *mysql); char * (STDCALL *mysql_get_host_info)(MYSQL *mysql); unsigned int (STDCALL *mysql_get_proto_info)(MYSQL *mysql); diff --git a/libmariadb/CMakeLists.txt b/libmariadb/CMakeLists.txt index 0df47a0f..c45a47b9 100644 --- a/libmariadb/CMakeLists.txt +++ b/libmariadb/CMakeLists.txt @@ -55,7 +55,6 @@ SET(MARIADB_LIB_SYMBOLS mysql_get_parameters mysql_get_proto_info mysql_get_server_info - mysql_get_server_status mysql_get_server_name mysql_get_server_version mysql_get_socket diff --git a/libmariadb/mariadb_lib.c b/libmariadb/mariadb_lib.c index 9c4ca4ee..2d7a4ed2 100644 --- a/libmariadb/mariadb_lib.c +++ b/libmariadb/mariadb_lib.c @@ -2523,12 +2523,6 @@ mysql_get_server_info(MYSQL *mysql) return((char*) mysql->server_version); } -unsigned int STDCALL -mysql_get_server_status(MYSQL *mysql) -{ - return mysql->server_status; -} - static size_t mariadb_server_version_id(MYSQL *mysql) { size_t major, minor, patch; @@ -3786,6 +3780,29 @@ my_bool STDCALL mariadb_get_infov(MYSQL *mysql, enum mariadb_value value, void * else goto error; break; + case MARIADB_CONNECTION_SERVER_STATUS: + if (mysql) + *((unsigned int *)arg)= mysql->server_status; + else + goto error; + break; + case MARIADB_CONNECTION_SERVER_CAPABILITIES: + if (mysql) + *((unsigned long *)arg)= mysql->server_capabilities; + else + goto error; + break; + case MARIADB_CONNECTION_EXTENDED_SERVER_CAPABILITIES: + if (mysql) + *((unsigned long *)arg)= mysql->extension->mariadb_server_capabilities; + else + goto error; + break; + case MARIADB_CONNECTION_CLIENT_CAPABILITIES: + if (mysql) + *((unsigned long *)arg)= mysql->client_flag; + else + goto error; default: va_end(ap); return(-1); @@ -3902,7 +3919,6 @@ struct st_mariadb_api MARIADB_API= mysql_ping, mysql_stat, mysql_get_server_info, - mysql_get_server_status, mysql_get_server_version, mysql_get_host_info, mysql_get_proto_info, diff --git a/libmariadb/mariadb_stmt.c b/libmariadb/mariadb_stmt.c index 30f27f16..37d5d3d1 100644 --- a/libmariadb/mariadb_stmt.c +++ b/libmariadb/mariadb_stmt.c @@ -638,7 +638,7 @@ unsigned char* mysql_stmt_execute_generate_request(MYSQL_STMT *stmt, size_t *req size_t length= 1024; size_t free_bytes= 0; - size_t null_byte_offset; + size_t null_byte_offset= 0; uint i, j, num_rows= 1; uchar *start= NULL, *p; diff --git a/plugins/auth/dialog.c b/plugins/auth/dialog.c index e86ab4bf..1064b871 100644 --- a/plugins/auth/dialog.c +++ b/plugins/auth/dialog.c @@ -138,7 +138,7 @@ static int auth_dialog_open(MYSQL_PLUGIN_VIO *vio, MYSQL *mysql) my_bool first_loop= TRUE; do { - if ((packet_length= vio->read_packet(vio, &packet)) == (size_t)-1) + if ((packet_length= vio->read_packet(vio, &packet)) == -1) /* read error */ return CR_ERROR; diff --git a/unittest/libmariadb/misc.c b/unittest/libmariadb/misc.c index cf8afb9c..d991090e 100644 --- a/unittest/libmariadb/misc.c +++ b/unittest/libmariadb/misc.c @@ -1133,24 +1133,49 @@ static int test_zerofill(MYSQL *mysql) static int test_server_status(MYSQL *mysql) { int rc; + unsigned long server_status; + MYSQL_STMT *stmt= mysql_stmt_init(mysql); rc= mysql_autocommit(mysql, 1); - FAIL_IF(!(mysql_get_server_status(mysql) & SERVER_STATUS_AUTOCOMMIT), + mariadb_get_infov(mysql, MARIADB_CONNECTION_SERVER_STATUS, &server_status); + FAIL_IF(!(server_status & SERVER_STATUS_AUTOCOMMIT), "autocommit flag not set"); rc= mysql_query(mysql, "DROP TABLE IF EXISTS t1"); check_mysql_rc(rc, mysql); - rc= mysql_query(mysql, "CREATE TABLE t1 (a int)"); + rc= mysql_query(mysql, "CREATE TABLE t1 (a int, b int)"); check_mysql_rc(rc, mysql); - rc= mysql_query(mysql, "INSERT INTO t1 VALUES (1),(2),(3),(4),(5)"); + rc= mysql_query(mysql, "INSERT INTO t1 (a) VALUES (1),(2),(3),(4),(5)"); check_mysql_rc(rc, mysql); rc= mysql_query(mysql, "UPDATE t1 SET a=9 WHERE a=8"); check_mysql_rc(rc, mysql); - FAIL_IF(!(mysql_get_server_status(mysql) & SERVER_QUERY_NO_INDEX_USED), "autocommit flag not set"); + mariadb_get_infov(mysql, MARIADB_CONNECTION_SERVER_STATUS, &server_status); + FAIL_IF(!(server_status & SERVER_QUERY_NO_INDEX_USED), "autocommit flag not set"); + + rc= mysql_query(mysql, "CREATE SCHEMA test_tmp"); + check_mysql_rc(rc, mysql); + + rc= mysql_select_db(mysql, "test_tmp"); + check_mysql_rc(rc, mysql); + + rc= mysql_query(mysql, "DROP SCHEMA test_tmp"); + check_mysql_rc(rc, mysql); + + mariadb_get_infov(mysql, MARIADB_CONNECTION_SERVER_STATUS, &server_status); + FAIL_IF(!(server_status & SERVER_STATUS_DB_DROPPED), + "DB_DROP flag not set"); + + FAIL_IF(!(server_status & SERVER_SESSION_STATE_CHANGED), + "SESSION_STATE_CHANGED flag not set"); + + rc= mysql_select_db(mysql, schema); + check_mysql_rc(rc, mysql); + + mysql_stmt_close(stmt); return OK; }