1
0
mirror of https://github.com/mariadb-corporation/mariadb-connector-c.git synced 2025-08-07 02:42:49 +03:00

Merge branch '3.3' into 3.4

This commit is contained in:
Georg Richter
2025-01-20 09:58:34 +01:00
11 changed files with 152 additions and 74 deletions

View File

@@ -34,8 +34,12 @@ INCLUDE_DIRECTORIES(${CC_SOURCE_DIR}/include
${CC_SOURCE_DIR}/unittest/libmariadb)
ADD_DEFINITIONS(-DLIBMARIADB)
SET(API_TESTS "bulk1" "performance" "basic-t" "fetch" "charset" "logs" "cursor" "errors" "view" "ps" "ps_bugs" "sp" "result" "connection" "misc" "ps_new" "thread" "features-10_2")
IF($ENV{TRAVIS})
ADD_DEFINITIONS("-DHAVE_TRAVIS=1")
ENDIF()
IF(WITH_DYNCOL)
SET(API_TESTS ${API_TESTS} "dyncol")
ENDIF()

View File

@@ -547,6 +547,11 @@ static int test_bug30472(MYSQL *mysql)
diag("Test requires MySQL Server version 5.1 or above");
return SKIP;
}
if (mariadb_connection(mysql) && mysql_get_server_version(mysql) >= 110400)
{
diag("C/C 3.3 doesn't support all collations from 11.4 and above");
return SKIP;
}
/* Retrieve character set information. */
mysql_set_character_set(mysql, "latin1");
@@ -804,6 +809,12 @@ static int test_conc223(MYSQL *mysql)
SKIP_MYSQL(mysql);
if (mariadb_connection(mysql) && mysql_get_server_version(mysql) >= 110400)
{
diag("C/C 3.3 doesn't support all collations from 11.4 and above");
return SKIP;
}
/*
Test if we're running against an MDEV-27266 server.
It can be detected by the presense of the FULL_COLLATION_NAME

View File

@@ -27,14 +27,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "my_test.h"
static int kill_conn(MYSQL *mysql, unsigned long thread_id)
{
char query[128];
sprintf(query, "KILL %ld", thread_id);
return mysql_query(mysql, query);
}
static int test_conc66(MYSQL *my)
{
MYSQL *mysql= mysql_init(NULL);
@@ -2425,6 +2417,8 @@ static int test_conc748(MYSQL *my __attribute__((unused)))
int i;
const char *ciphers[3]= {"TLS_AES_128_GCM_SHA256", "TLS_AES_256_GCM_SHA384", "TLS_CHACHA20_POLY1305_SHA256"};
SKIP_MAXSCALE;
for (i=0; i < 3; i++)
{
const char *tls_version;
@@ -2455,12 +2449,13 @@ static int test_conc589(MYSQL *my)
MYSQL *mysql= mysql_init(NULL);
MYSQL_RES *result;
int rc;
my_bool reconnect= 1;
my_bool no= 0;
my_bool reconnect= 1, verify= 0;
unsigned long last_thread_id= 0;
mysql_options(mysql, MYSQL_OPT_SSL_VERIFY_SERVER_CERT, &no);
SKIP_MAXSCALE;
mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect);
mysql_options(mysql, MYSQL_OPT_SSL_VERIFY_SERVER_CERT, &verify);
if (!my_test_connect(mysql, hostname, username,
password, schema, port, socketname, CLIENT_REMEMBER_OPTIONS, 0))
@@ -2469,32 +2464,30 @@ static int test_conc589(MYSQL *my)
return FAIL;
}
FAIL_IF(mysql_thread_id(mysql) == last_thread_id, "Expected new connection id");
rc= mysql_query(mysql, "SET SESSION wait_timeout=5");
check_mysql_rc(rc, mysql);
last_thread_id= mysql_thread_id(mysql);
if ((rc= mysql_query(mysql, "SELECT 1")) || (result= mysql_store_result(mysql)) == NULL)
check_mysql_rc(rc, mysql);
mysql_free_result(result);
rc= kill_conn(my, last_thread_id);
check_mysql_rc(rc, my);
if ((rc= mysql_query(mysql, "SELECT 1")) || (result= mysql_store_result(mysql)) == NULL)
sleep(10);
if ((rc= mysql_query(mysql, "SELECT 2")) || (result= mysql_store_result(mysql)) == NULL)
check_mysql_rc(rc, mysql);
mysql_free_result(result);
FAIL_IF(mysql_thread_id(mysql) == last_thread_id, "Expected new connection id");
last_thread_id= mysql_thread_id(mysql);
rc= kill_conn(my, last_thread_id);
check_mysql_rc(rc, my);
if ((rc= mysql_query(mysql, "SELECT 1")) || (result= mysql_store_result(mysql)) == NULL)
mysql_kill(my, last_thread_id);
sleep(10);
if ((rc= mysql_query(mysql, "SELECT 3")) || (result= mysql_store_result(mysql)) == NULL)
check_mysql_rc(rc, mysql);
mysql_free_result(result);
FAIL_IF(mysql_thread_id(mysql) == last_thread_id, "Expected new connection id");
last_thread_id= mysql_thread_id(mysql);
rc= kill_conn(my, last_thread_id);
check_mysql_rc(rc, my);
if ((rc= mysql_query(mysql, "SELECT 1")) || (result= mysql_store_result(mysql)) == NULL)
check_mysql_rc(rc, mysql);
mysql_free_result(result);
FAIL_IF(mysql_thread_id(mysql) == last_thread_id, "Expected new connection id");
last_thread_id= mysql_thread_id(mysql);
mysql_close(mysql);
return OK;
}

View File

@@ -1544,7 +1544,10 @@ static int test_conc163(MYSQL *mysql)
FAIL_IF(mysql_info(mysql) != NULL, "mysql_info: expected NULL");
rc= mysql_query(mysql, "CREATE OR REPLACE TABLE t1 AS SELECT 1");
rc= mysql_query(mysql, "DROP TABLE IF EXISTS t1");
check_mysql_rc(rc, mysql);
rc= mysql_query(mysql, "CREATE TABLE t1 AS SELECT 1");
check_mysql_rc(rc, mysql);
FAIL_IF(mysql_info(mysql) == NULL, "mysql_info: expected != NULL");
@@ -1557,7 +1560,9 @@ static int test_conc163(MYSQL *mysql)
check_stmt_rc(rc, stmt);
FAIL_IF(mysql_info(mysql) != NULL, "mysql_info: expected NULL");
rc= mariadb_stmt_execute_direct(stmt, SL("CREATE OR REPLACE TABLE t1 AS SELECT 1"));
rc= mysql_query(mysql, "DROP TABLE IF EXISTS t1");
check_mysql_rc(rc, mysql);
rc= mariadb_stmt_execute_direct(stmt, SL("CREATE TABLE t1 AS SELECT 1"));
check_stmt_rc(rc, stmt);
FAIL_IF(mysql_info(mysql) == NULL, "mysql_info: expected != NULL");

View File

@@ -577,6 +577,15 @@ static int reset_connection(MYSQL *mysql) {
return OK;
}
static char *check_envvar(const char *envvar)
{
char *p = getenv(envvar);
if (p && p[0])
return p;
return NULL;
}
/*
* function get_envvars((
*
@@ -595,51 +604,44 @@ void get_envvars() {
if (getenv("TRAVIS_JOB_ID"))
travis_test= 1;
if (!hostname && (envvar= getenv("MYSQL_TEST_HOST")))
hostname= envvar;
if (!hostname)
hostname= check_envvar("MYSQL_TEST_HOST");
if (!username && !(username= check_envvar("MYSQL_TEST_USER")))
username= (char *)"root";
if (!username)
{
if ((envvar= getenv("MYSQL_TEST_USER")))
username= envvar;
else
username= (char *)"root";
}
if (!password && (envvar= getenv("MYSQL_TEST_PASSWD")))
password= envvar;
if (!schema && (envvar= getenv("MYSQL_TEST_DB")))
schema= envvar;
if (!schema)
if (!password)
password= check_envvar("MYSQL_TEST_PASSWD");
if (!schema && !(schema= check_envvar("MYSQL_TEST_DB")))
schema= "test";
if (!port)
{
if ((envvar= getenv("MYSQL_TEST_PORT")))
if ((envvar= check_envvar("MYSQL_TEST_PORT")) ||
(envvar= check_envvar("MASTER_MYPORT")))
port= atoi(envvar);
else if ((envvar= getenv("MASTER_MYPORT")))
port= atoi(envvar);
diag("port: %d", port);
}
if (!ssl_port)
{
if ((envvar= getenv("MYSQL_TEST_SSL_PORT")))
if ((envvar= check_envvar("MYSQL_TEST_SSL_PORT")))
ssl_port= atoi(envvar);
else
ssl_port = port;
diag("ssl_port: %d", ssl_port);
}
if (!force_tls && (envvar= getenv("MYSQL_TEST_TLS")))
if (!force_tls && (envvar= check_envvar("MYSQL_TEST_TLS")))
force_tls= atoi(envvar);
if (!socketname)
{
if ((envvar= getenv("MYSQL_TEST_SOCKET")))
socketname= envvar;
else if ((envvar= getenv("MASTER_MYSOCK")))
if ((envvar= check_envvar("MYSQL_TEST_SOCKET")) ||
(envvar= check_envvar("MASTER_MYSOCK")))
socketname= envvar;
diag("socketname: %s", socketname);
}
if ((envvar= getenv("MYSQL_TEST_PLUGINDIR")))
if ((envvar= check_envvar("MYSQL_TEST_PLUGINDIR")))
plugindir= envvar;
if (IS_XPAND())