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

[misc] test improvement

* adding SkySQL HA to test suite
* test server build 10.6
* test maxscale 2.5.3
This commit is contained in:
kolzeq
2021-01-19 10:23:14 +01:00
parent ef3d315796
commit 29fc3bc7bd
22 changed files with 855 additions and 317 deletions

View File

@@ -38,6 +38,7 @@ static int test_conc75(MYSQL *my)
my_bool reconnect= 1;
SKIP_SKYSQL;
SKIP_MAXSCALE;
mysql= mysql_init(NULL);
@@ -147,6 +148,7 @@ static int test_conc70(MYSQL *my)
SKIP_CONNECTION_HANDLER;
SKIP_SKYSQL;
SKIP_MAXSCALE;
mysql= mysql_init(NULL);
@@ -210,7 +212,7 @@ static int test_conc68(MYSQL *my)
SKIP_CONNECTION_HANDLER;
SKIP_SKYSQL;
SKIP_MAXSCALE;
mysql= mysql_init(NULL);
@@ -399,7 +401,7 @@ static int test_bad_union(MYSQL *mysql)
rc= mysql_stmt_prepare(stmt, SL(query));
FAIL_UNLESS(rc && mysql_errno(mysql) == 1222, "Error expected");
mysql_stmt_close(stmt);
free(stmt);
return OK;
}
@@ -420,9 +422,26 @@ static int test_mysql_insert_id(MYSQL *mysql)
check_mysql_rc(rc, mysql);
rc= mysql_query(mysql, "drop table if exists t2");
check_mysql_rc(rc, mysql);
rc= mysql_query(mysql, "drop table if exists t3");
check_mysql_rc(rc, mysql);
rc= mysql_query(mysql, "drop table if exists t4");
check_mysql_rc(rc, mysql);
/* table without auto_increment column */
rc= mysql_query(mysql, "create table t1 (f1 int, f2 varchar(255), key(f1))");
check_mysql_rc(rc, mysql);
rc= mysql_query(mysql, "create table t2 (f1 int not null primary key auto_increment, f2 varchar(255))");
check_mysql_rc(rc, mysql);
rc= mysql_query(mysql, "create table t3 (f1 int not null primary key auto_increment, f2 varchar(255)) engine=MyISAM");
check_mysql_rc(rc, mysql);
rc= mysql_query(mysql, "create table t4 (f1 int not null primary key "
"auto_increment, f2 varchar(200), unique (f2)) engine=MyISAM");
check_mysql_rc(rc, mysql);
rc= mysql_query(mysql, "FLUSH TABLES");
check_mysql_rc(rc, mysql);
rc= mysql_query(mysql, "START TRANSACTION");
check_mysql_rc(rc, mysql);
rc= mysql_query(mysql, "insert into t1 values (1,'a')");
check_mysql_rc(rc, mysql);
res= mysql_insert_id(mysql);
@@ -440,17 +459,12 @@ static int test_mysql_insert_id(MYSQL *mysql)
Test for bug #34889: mysql_client_test::test_mysql_insert_id test fails
sporadically
*/
rc= mysql_query(mysql, "create table t2 (f1 int not null primary key auto_increment, f2 varchar(255))");
check_mysql_rc(rc, mysql);
rc= mysql_query(mysql, "insert into t2 values (null,'b')");
check_mysql_rc(rc, mysql);
rc= mysql_query(mysql, "insert into t1 select 5,'c'");
check_mysql_rc(rc, mysql);
res= mysql_insert_id(mysql);
FAIL_UNLESS(res == 0, "");
rc= mysql_query(mysql, "drop table t2");
check_mysql_rc(rc, mysql);
rc= mysql_query(mysql, "insert into t1 select null,'d'");
check_mysql_rc(rc, mysql);
res= mysql_insert_id(mysql);
@@ -470,9 +484,7 @@ static int test_mysql_insert_id(MYSQL *mysql)
FAIL_UNLESS(res == 400, "");
/* table with auto_increment column */
rc= mysql_query(mysql, "create table t2 (f1 int not null primary key auto_increment, f2 varchar(255)) engine=MyISAM");
check_mysql_rc(rc, mysql);
rc= mysql_query(mysql, "insert into t2 values (1,'a')");
rc= mysql_query(mysql, "insert into t3 values (1,'a')");
check_mysql_rc(rc, mysql);
res= mysql_insert_id(mysql);
FAIL_UNLESS(res == 1, "");
@@ -482,11 +494,11 @@ static int test_mysql_insert_id(MYSQL *mysql)
res= mysql_insert_id(mysql);
FAIL_UNLESS(res == 0, "");
rc= mysql_query(mysql, "insert into t2 values (null,'b')");
rc= mysql_query(mysql, "insert into t3 values (null,'b')");
check_mysql_rc(rc, mysql);
res= mysql_insert_id(mysql);
FAIL_UNLESS(res == 2, "");
rc= mysql_query(mysql, "insert into t2 select 5,'c'");
rc= mysql_query(mysql, "insert into t3 select 5,'c'");
check_mysql_rc(rc, mysql);
res= mysql_insert_id(mysql);
/*
@@ -495,16 +507,16 @@ static int test_mysql_insert_id(MYSQL *mysql)
0. We try to be consistent with INSERT VALUES.
*/
FAIL_UNLESS(res == 5, "");
rc= mysql_query(mysql, "insert into t2 select null,'d'");
rc= mysql_query(mysql, "insert into t3 select null,'d'");
check_mysql_rc(rc, mysql);
res= mysql_insert_id(mysql);
FAIL_UNLESS(res == 6, "");
/* with more than one row */
rc= mysql_query(mysql, "insert into t2 values (10,'a'),(11,'b')");
rc= mysql_query(mysql, "insert into t3 values (10,'a'),(11,'b')");
check_mysql_rc(rc, mysql);
res= mysql_insert_id(mysql);
FAIL_UNLESS(res == 11, "");
rc= mysql_query(mysql, "insert into t2 select 12,'a' union select 13,'b'");
rc= mysql_query(mysql, "insert into t3 select 12,'a' union select 13,'b'");
check_mysql_rc(rc, mysql);
res= mysql_insert_id(mysql);
/*
@@ -513,34 +525,34 @@ static int test_mysql_insert_id(MYSQL *mysql)
return 0. We try to be consistent with INSERT VALUES.
*/
FAIL_UNLESS(res == 13, "");
rc= mysql_query(mysql, "insert into t2 values (null,'a'),(null,'b')");
rc= mysql_query(mysql, "insert into t3 values (null,'a'),(null,'b')");
check_mysql_rc(rc, mysql);
res= mysql_insert_id(mysql);
FAIL_UNLESS(res == 14, "");
rc= mysql_query(mysql, "insert into t2 select null,'a' union select null,'b'");
rc= mysql_query(mysql, "insert into t3 select null,'a' union select null,'b'");
check_mysql_rc(rc, mysql);
res= mysql_insert_id(mysql);
FAIL_UNLESS(res == 16, "");
rc= mysql_query(mysql, "insert into t2 select 12,'a' union select 13,'b'");
rc= mysql_query(mysql, "insert into t3 select 12,'a' union select 13,'b'");
FAIL_IF(!rc, "Error expected");
rc= mysql_query(mysql, "insert ignore into t2 select 12,'a' union select 13,'b'");
rc= mysql_query(mysql, "insert ignore into t3 select 12,'a' union select 13,'b'");
check_mysql_rc(rc, mysql);
res= mysql_insert_id(mysql);
FAIL_UNLESS(res == 0, "");
rc= mysql_query(mysql, "insert into t2 values (12,'a'),(13,'b')");
rc= mysql_query(mysql, "insert into t3 values (12,'a'),(13,'b')");
FAIL_IF(!rc, "Error expected");
res= mysql_insert_id(mysql);
FAIL_UNLESS(res == 0, "");
rc= mysql_query(mysql, "insert ignore into t2 values (12,'a'),(13,'b')");
rc= mysql_query(mysql, "insert ignore into t3 values (12,'a'),(13,'b')");
check_mysql_rc(rc, mysql);
res= mysql_insert_id(mysql);
FAIL_UNLESS(res == 0, "");
/* mixing autogenerated and explicit values */
rc= mysql_query(mysql, "insert into t2 values (null,'e'),(12,'a'),(13,'b')");
rc= mysql_query(mysql, "insert into t3 values (null,'e'),(12,'a'),(13,'b')");
FAIL_IF(!rc, "Error expected");
rc= mysql_query(mysql, "insert into t2 values (null,'e'),(12,'a'),(13,'b'),(25,'g')");
rc= mysql_query(mysql, "insert into t3 values (null,'e'),(12,'a'),(13,'b'),(25,'g')");
FAIL_IF(!rc, "Error expected");
rc= mysql_query(mysql, "insert into t2 values (null,last_insert_id(300))");
rc= mysql_query(mysql, "insert into t3 values (null,last_insert_id(300))");
check_mysql_rc(rc, mysql);
res= mysql_insert_id(mysql);
/*
@@ -550,20 +562,15 @@ static int test_mysql_insert_id(MYSQL *mysql)
diag("res: %lld", res);
FAIL_UNLESS(res == 20, "");
/* If first autogenerated number fails and 2nd works: */
rc= mysql_query(mysql, "drop table t2");
check_mysql_rc(rc, mysql);
rc= mysql_query(mysql, "create table t2 (f1 int not null primary key "
"auto_increment, f2 varchar(200), unique (f2)) engine=MyISAM");
check_mysql_rc(rc, mysql);
rc= mysql_query(mysql, "insert into t2 values (null,'e')");
rc= mysql_query(mysql, "insert into t4 values (null,'e')");
res= mysql_insert_id(mysql);
FAIL_UNLESS(res == 1, "");
rc= mysql_query(mysql, "insert ignore into t2 values (null,'e'),(null,'a'),(null,'e')");
rc= mysql_query(mysql, "insert ignore into t4 values (null,'e'),(null,'a'),(null,'e')");
check_mysql_rc(rc, mysql);
res= mysql_insert_id(mysql);
FAIL_UNLESS(res == 2, "");
/* If autogenerated fails and explicit works: */
rc= mysql_query(mysql, "insert ignore into t2 values (null,'e'),(12,'c'),(null,'d')");
rc= mysql_query(mysql, "insert ignore into t4 values (null,'e'),(12,'c'),(null,'d')");
check_mysql_rc(rc, mysql);
res= mysql_insert_id(mysql);
/*
@@ -572,24 +579,24 @@ static int test_mysql_insert_id(MYSQL *mysql)
*/
FAIL_UNLESS(res == 13, "");
/* UPDATE may update mysql_insert_id() if it uses LAST_INSERT_ID(#) */
rc= mysql_query(mysql, "update t2 set f1=14 where f1=12");
rc= mysql_query(mysql, "update t4 set f1=14 where f1=12");
check_mysql_rc(rc, mysql);
res= mysql_insert_id(mysql);
FAIL_UNLESS(res == 0, "");
rc= mysql_query(mysql, "update t2 set f1=0 where f1=14");
rc= mysql_query(mysql, "update t4 set f1=0 where f1=14");
check_mysql_rc(rc, mysql);
res= mysql_insert_id(mysql);
FAIL_UNLESS(res == 0, "");
rc= mysql_query(mysql, "update t2 set f2=last_insert_id(372) where f1=0");
rc= mysql_query(mysql, "update t4 set f2=last_insert_id(372) where f1=0");
check_mysql_rc(rc, mysql);
res= mysql_insert_id(mysql);
FAIL_UNLESS(res == 372, "");
/* check that LAST_INSERT_ID() does not update mysql_insert_id(): */
rc= mysql_query(mysql, "insert into t2 values (null,'g')");
rc= mysql_query(mysql, "insert into t4 values (null,'g')");
check_mysql_rc(rc, mysql);
res= mysql_insert_id(mysql);
FAIL_UNLESS(res == 15, "");
rc= mysql_query(mysql, "update t2 set f2=(@li:=last_insert_id()) where f1=15");
rc= mysql_query(mysql, "update t4 set f2=(@li:=last_insert_id()) where f1=15");
check_mysql_rc(rc, mysql);
res= mysql_insert_id(mysql);
FAIL_UNLESS(res == 0, "");
@@ -598,13 +605,13 @@ static int test_mysql_insert_id(MYSQL *mysql)
mysql_insert_id() returns the id of the row, instead of not being
affected.
*/
rc= mysql_query(mysql, "insert into t2 values (null,@li) on duplicate key "
rc= mysql_query(mysql, "insert into t4 values (null,@li) on duplicate key "
"update f2=concat('we updated ',f2)");
check_mysql_rc(rc, mysql);
res= mysql_insert_id(mysql);
FAIL_UNLESS(res == 15, "");
rc= mysql_query(mysql, "drop table t1,t2");
rc= mysql_query(mysql, "drop table t1,t2,t3,t4");
check_mysql_rc(rc, mysql);
return OK;
}

View File

@@ -513,6 +513,7 @@ static int bug30472_retrieve_charset_info(MYSQL *con,
static int test_bug30472(MYSQL *mysql)
{
SKIP_MAXSCALE;
int rc;
char character_set_name_1[MY_CS_NAME_SIZE];

View File

@@ -35,6 +35,7 @@ static int test_conc66(MYSQL *my)
char query[1024];
SKIP_SKYSQL;
SKIP_MAXSCALE;
if (!is_mariadb)
return SKIP;
@@ -91,6 +92,7 @@ static int test_bug20023(MYSQL *mysql)
int rc;
SKIP_SKYSQL;
SKIP_MAXSCALE;
if (!is_mariadb)
return SKIP;
@@ -527,6 +529,8 @@ static int test_opt_reconnect(MYSQL *mysql)
static int test_compress(MYSQL *mysql)
{
// maxscale doesn't support compression
SKIP_MAXSCALE;
MYSQL_RES *res;
MYSQL_ROW row;
int rc;
@@ -560,6 +564,7 @@ static int test_compress(MYSQL *mysql)
static int test_reconnect(MYSQL *mysql)
{
SKIP_MAXSCALE;
my_bool my_true= TRUE;
MYSQL *mysql1;
int rc;
@@ -582,7 +587,6 @@ static int test_reconnect(MYSQL *mysql)
socketname, 0)))
{
diag("connection failed");
mysql_close(mysql);
return FAIL;
}
@@ -606,6 +610,7 @@ static int test_reconnect(MYSQL *mysql)
int test_conc21(MYSQL *mysql)
{
SKIP_MAXSCALE;
int rc;
MYSQL_RES *res= NULL;
MYSQL_ROW row;
@@ -679,6 +684,7 @@ int test_connection_timeout2(MYSQL *unused __attribute__((unused)))
MYSQL *mysql;
SKIP_SKYSQL;
SKIP_MAXSCALE;
mysql= mysql_init(NULL);
mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT, (unsigned int *)&timeout);
@@ -744,6 +750,8 @@ int test_connection_timeout3(MYSQL *unused __attribute__((unused)))
/* test should run with valgrind */
static int test_conc118(MYSQL *mysql)
{
SKIP_SKYSQL;
SKIP_MAXSCALE;
int rc;
my_bool reconnect= 1;
@@ -1135,6 +1143,8 @@ static int test_reset(MYSQL *mysql)
static int test_auth256(MYSQL *my)
{
SKIP_MAXSCALE;
MYSQL *mysql= mysql_init(NULL);
int rc;
MYSQL_RES *res;
@@ -1427,6 +1437,9 @@ static int test_expired_pw(MYSQL *my)
static int test_conc315(MYSQL *mysql)
{
SKIP_SKYSQL;
SKIP_MAXSCALE;
int rc;
const char *csname;
@@ -1562,6 +1575,8 @@ static int test_conc327(MYSQL *unused __attribute__((unused)))
static int test_conc332(MYSQL *unused __attribute__((unused)))
{
SKIP_SKYSQL;
SKIP_MAXSCALE;
int rc;
MYSQL *mysql= mysql_init(NULL);
int server_status1, server_status2;
@@ -1676,6 +1691,7 @@ static int test_conc366(MYSQL *mysql)
MYSQL *my;
SKIP_SKYSQL;
SKIP_MAXSCALE;
if (!is_mariadb)
{
@@ -1755,6 +1771,8 @@ static int test_conc392(MYSQL *mysql)
static int test_conc443(MYSQL *my __attribute__((unused)))
{
SKIP_MAXSCALE;
my_bool x= 1;
unsigned long thread_id= 0;
char query[128];
@@ -1801,6 +1819,9 @@ static int test_conc443(MYSQL *my __attribute__((unused)))
static int test_default_auth(MYSQL *my __attribute__((unused)))
{
SKIP_SKYSQL;
SKIP_MAXSCALE;
MYSQL *mysql;
if (!is_mariadb)

View File

@@ -157,15 +157,11 @@ static int test_server_errors(MYSQL *mysql)
static int test_bug16143(MYSQL *mysql)
{
MYSQL_STMT *stmt;
stmt= mysql_stmt_init(mysql);
FAIL_IF(!stmt, mysql_error(mysql));
/* Check mysql_stmt_sqlstate return "no error" */
FAIL_UNLESS(strcmp(mysql_stmt_sqlstate(stmt), "00000") == 0, "Expected SQLstate 000000");
mysql_stmt_close(stmt);
free(stmt);
return OK;
}
@@ -180,13 +176,17 @@ static int test_cuted_rows(MYSQL *mysql)
return SKIP;
mysql_query(mysql, "DROP TABLE if exists t1");
check_mysql_rc(rc, mysql);
mysql_query(mysql, "DROP TABLE if exists t2");
check_mysql_rc(rc, mysql);
rc= mysql_query(mysql, "CREATE TABLE t1(c1 tinyint)");
check_mysql_rc(rc, mysql);
rc= mysql_query(mysql, "CREATE TABLE t2(c1 int not null)");
check_mysql_rc(rc, mysql);
rc= mysql_query(mysql, "FLUSH TABLES");
check_mysql_rc(rc, mysql);
rc= mysql_query(mysql, "START TRANSACTION");
check_mysql_rc(rc, mysql);
rc= mysql_query(mysql, "INSERT INTO t1 values(10), (NULL), (NULL)");
check_mysql_rc(rc, mysql);

View File

@@ -39,6 +39,7 @@ static int test_bug28075(MYSQL *mysql)
int rc;
SKIP_SKYSQL;
SKIP_MAXSCALE;
rc= mysql_dump_debug_info(mysql);
check_mysql_rc(rc, mysql);
@@ -172,6 +173,7 @@ static int bug31418_impl()
static int test_bug31418(MYSQL *unused __attribute__((unused)))
{
SKIP_MAXSCALE;
int i;
if (!is_mariadb)
@@ -806,12 +808,15 @@ static int test_bug49694(MYSQL *mysql)
static int test_conc49(MYSQL *mysql)
{
SKIP_LOAD_INFILE_DISABLE;
SKIP_SKYSQL;
int rc;
MYSQL_RES *res;
int i;
FILE *fp;
SKIP_SKYSQL;
fp= fopen("./sample.csv", "w");
for (i=1; i < 4; i++)
fprintf(fp, "\"%d\", \"%d\", \"%d\"\r\n", i, i, i);
@@ -983,6 +988,7 @@ static int test_conc_114(MYSQL *mysql)
/* run with valgrind */
static int test_conc117(MYSQL *unused __attribute__((unused)))
{
SKIP_MAXSCALE;
my_bool reconnect= 1;
MYSQL *my= mysql_init(NULL);
FAIL_IF(!my_test_connect(my, hostname, username, password, schema,
@@ -1000,6 +1006,7 @@ static int test_conc117(MYSQL *unused __attribute__((unused)))
static int test_read_timeout(MYSQL *unused __attribute__((unused)))
{
SKIP_MAXSCALE;
int timeout= 5, rc;
MYSQL *my= mysql_init(NULL);
mysql_options(my, MYSQL_OPT_READ_TIMEOUT, &timeout);
@@ -1206,12 +1213,12 @@ static int test_server_status(MYSQL *mysql)
{
int rc;
unsigned int server_status;
MYSQL_STMT *stmt;
// MYSQL_STMT *stmt;
if (mysql_get_server_version(mysql) < 100200)
return SKIP;
stmt= mysql_stmt_init(mysql);
// stmt= mysql_stmt_init(mysql);
rc= mysql_autocommit(mysql, 1);
mariadb_get_infov(mysql, MARIADB_CONNECTION_SERVER_STATUS, &server_status);
@@ -1252,7 +1259,7 @@ static int test_server_status(MYSQL *mysql)
rc= mysql_select_db(mysql, schema);
check_mysql_rc(rc, mysql);
mysql_stmt_close(stmt);
// mysql_stmt_close(stmt);
return OK;
}
@@ -1478,7 +1485,7 @@ struct my_tests_st my_tests[] = {
{"test_conc117", test_conc117, TEST_CONNECTION_DEFAULT, 0, NULL, NULL},
{"test_conc_114", test_conc_114, TEST_CONNECTION_DEFAULT, 0, NULL, NULL},
{"test_connect_attrs", test_connect_attrs, TEST_CONNECTION_DEFAULT, 0, NULL, NULL},
{"test_conc49", test_conc49, TEST_CONNECTION_DEFAULT, 0, NULL, NULL},
{"test_conc49", test_conc49, TEST_CONNECTION_NEW, 0, NULL, NULL},
{"test_bug28075", test_bug28075, TEST_CONNECTION_DEFAULT, 0, NULL, NULL},
{"test_bug28505", test_bug28505, TEST_CONNECTION_DEFAULT, 0, NULL, NULL},
{"test_debug_example", test_debug_example, TEST_CONNECTION_DEFAULT, 0, NULL, NULL},

View File

@@ -73,6 +73,21 @@ if (IS_SKYSQL(hostname)) \
#define SKIP_NOTLS
#endif
#define IS_MAXSCALE() (getenv("MAXSCALE_TEST_DISABLE")!=NULL)
#define SKIP_MAXSCALE \
if (IS_MAXSCALE()) \
{ \
diag("test disabled with maxscale"); \
return SKIP; \
}
#define SKIP_LOAD_INFILE_DISABLE \
if (!((mysql->server_capabilities & CLIENT_LOCAL_FILES) && \
(mysql->options.client_flag & CLIENT_LOCAL_FILES))) { \
diag("Load local infile not supported"); \
return SKIP; \
}
#define MAX_KEY MAX_INDEXES
#define MAX_KEY_LENGTH_DECIMAL_WIDTH 4 /* strlen("4096") */
@@ -183,6 +198,7 @@ static const char *schema = 0;
static char *hostname = 0;
static char *password = 0;
static unsigned int port = 0;
static unsigned int ssl_port = 0;
static char *socketname = 0;
static char *username = 0;
static int force_tls= 0;
@@ -423,6 +439,7 @@ void get_options(int argc, char **argv)
break;
case 'P':
port= atoi(optarg);
ssl_port=port;
break;
case 'S':
socketname= optarg;
@@ -518,7 +535,7 @@ MYSQL *test_connect(struct my_tests_st *test)
static int reset_connection(MYSQL *mysql) {
int rc;
if (is_mariadb)
if (is_mariadb && !IS_MAXSCALE())
rc= mysql_change_user(mysql, username, password, schema);
else
rc= mysql_reset_connection(mysql);
@@ -565,6 +582,15 @@ void get_envvars() {
port= atoi(envvar);
diag("port: %d", port);
}
if (!ssl_port)
{
if ((envvar= getenv("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")))
force_tls= atoi(envvar);
if (!socketname)

View File

@@ -49,6 +49,7 @@ static int test_conc97(MYSQL *mysql)
static int test_conc83(MYSQL *unused __attribute__((unused)))
{
SKIP_MAXSCALE;
MYSQL_STMT *stmt;
int rc;
MYSQL *mysql= mysql_init(NULL);
@@ -99,7 +100,7 @@ static int test_conc60(MYSQL *mysql)
rc= mysql_stmt_prepare(stmt, SL(query));
if (rc && mysql_stmt_errno(stmt) == 1146) {
diag("Internal test - customer data not available");
mysql_stmt_close(stmt);
free(stmt);
return SKIP;
}
check_stmt_rc(rc, stmt);
@@ -458,6 +459,12 @@ static int test_prepare_syntax(MYSQL *mysql)
"id int, name varchar(50), extra int)");
check_mysql_rc(rc, mysql);
rc= mysql_query(mysql, "FLUSH TABLES");
check_mysql_rc(rc, mysql);
rc= mysql_query(mysql, "START TRANSACTION");
check_mysql_rc(rc, mysql);
strcpy(query, "INSERT INTO test_prepare_syntax VALUES(?");
stmt= mysql_stmt_init(mysql);
FAIL_IF(!stmt, mysql_error(mysql));
@@ -473,7 +480,7 @@ static int test_prepare_syntax(MYSQL *mysql)
rc= mysql_commit(mysql);
check_mysql_rc(rc, mysql);
mysql_stmt_close(stmt);
free(stmt);
rc= mysql_query(mysql, "DROP TABLE IF EXISTS test_prepare_syntax");
check_mysql_rc(rc, mysql);
@@ -1196,8 +1203,8 @@ static int test_long_data(MYSQL *mysql)
FAIL_IF(!stmt, mysql_error(mysql));
rc= mysql_stmt_prepare(stmt, SL(query));
FAIL_IF(!rc, "Error expected");
rc= mysql_stmt_close(stmt);
check_stmt_rc(rc, stmt);
// rc= mysql_stmt_close(stmt);
// check_stmt_rc(rc, stmt);
strcpy(query, "INSERT INTO test_long_data(col1, col2, col3) VALUES(?, ?, ?)");
stmt= mysql_stmt_init(mysql);
@@ -2537,6 +2544,12 @@ static int test_pure_coverage(MYSQL *mysql)
rc= mysql_query(mysql, "CREATE TABLE test_pure(c1 int, c2 varchar(20))");
check_mysql_rc(rc, mysql);
rc= mysql_query(mysql, "FLUSH TABLES");
check_mysql_rc(rc, mysql);
rc= mysql_query(mysql, "START TRANSACTION");
check_mysql_rc(rc, mysql);
stmt= mysql_stmt_init(mysql);
FAIL_IF(!stmt, mysql_error(mysql));
rc= mysql_stmt_prepare(stmt, SL("insert into test_pure(c67788) values(10)"));
@@ -3805,6 +3818,12 @@ static int test_null(MYSQL *mysql)
rc= mysql_query(mysql, "CREATE TABLE test_null(col1 int, col2 varchar(50))");
check_mysql_rc(rc, mysql);
rc= mysql_query(mysql, "FLUSH TABLES");
check_mysql_rc(rc, mysql);
rc= mysql_query(mysql, "START TRANSACTION");
check_mysql_rc(rc, mysql);
/* insert by prepare, wrong column name */
strcpy(query, "INSERT INTO test_null(col3, col2) VALUES(?, ?)");
stmt= mysql_stmt_init(mysql);

View File

@@ -519,6 +519,7 @@ static int test_bug11183(MYSQL *mysql)
static int test_bug12744(MYSQL *mysql)
{
SKIP_MAXSCALE;
MYSQL_STMT *stmt = NULL;
int rc;
@@ -817,7 +818,7 @@ static int test_bug16144(MYSQL *mysql)
mysql_stmt_attr_get(stmt, STMT_ATTR_UPDATE_MAX_LENGTH, (void*) &flag);
FAIL_UNLESS(flag == flag_orig, "flag != flag_orig");
mysql_stmt_close(stmt);
free(stmt);
return OK;
}
@@ -2065,6 +2066,7 @@ static int test_bug3117(MYSQL *mysql)
static int test_bug36004(MYSQL *mysql)
{
SKIP_MAXSCALE;
int rc, warning_count= 0;
MYSQL_STMT *stmt;
@@ -2715,8 +2717,8 @@ static int test_bug5194(MYSQL *mysql)
free(param_str);
free(query);
rc= mysql_stmt_close(stmt);
check_stmt_rc(rc, stmt);
// rc= mysql_stmt_close(stmt);
// check_stmt_rc(rc, stmt);
free(my_bind);
stmt_text= "drop table t1";
rc= mysql_real_query(mysql, SL(stmt_text));
@@ -2726,6 +2728,7 @@ static int test_bug5194(MYSQL *mysql)
static int test_bug5315(MYSQL *mysql)
{
SKIP_MAXSCALE;
MYSQL_STMT *stmt;
const char *stmt_text;
int rc;
@@ -3036,8 +3039,7 @@ static int test_bug7990(MYSQL *mysql)
MYSQL is not documented and is subject to change in 5.0
*/
FAIL_UNLESS(rc && mysql_stmt_errno(stmt) && mysql_errno(mysql), "Error expected");
mysql_stmt_close(stmt);
FAIL_UNLESS(!mysql_errno(mysql), "errno != 0");
free(stmt);
return OK;
}
@@ -3781,6 +3783,7 @@ static int test_stiny_bug(MYSQL *mysql)
static int test_bug53311(MYSQL *mysql)
{
SKIP_MAXSCALE;
int rc;
MYSQL_STMT *stmt;
int i;
@@ -4547,7 +4550,7 @@ static int test_conc217(MYSQL *mysql)
FAIL_IF(rc==0, "Expected error\n");
rc= mysql_query(mysql, "drop table if exists t_count");
check_mysql_rc(rc, mysql);
rc= mysql_stmt_close(stmt);
free(stmt);
check_mysql_rc(rc, mysql);
return OK;
}
@@ -5206,7 +5209,7 @@ static int test_returning(MYSQL *mysql)
int rc;
diag("MDEV-23768 not fixed yet");
mysql_stmt_close(stmt);
free(stmt);
return SKIP;
rc= mysql_query(mysql, "CREATE TEMPORARY TABLE t1 (a int not null auto_increment primary key, b json)");

View File

@@ -927,6 +927,9 @@ static int test_bug9992(MYSQL *mysql)
static int test_multi_statements(MYSQL *mysql)
{
SKIP_SKYSQL;
SKIP_MAXSCALE;
MYSQL *mysql_local;
MYSQL_RES *result;
int rc;

View File

@@ -140,7 +140,7 @@ static int test_ssl(MYSQL *mysql)
create_ssl_user("ssluser", 0);
FAIL_IF(!mysql_real_connect(my, hostname, ssluser, sslpw, schema,
port, socketname, 0), mysql_error(my));
ssl_port, socketname, 0), mysql_error(my));
mariadb_get_infov(my, MARIADB_CONNECTION_TLS_VERSION_ID, &iversion);
diag("iversion: %d", iversion);
@@ -221,7 +221,7 @@ static int test_ssl_cipher(MYSQL *unused __attribute__((unused)))
mysql_ssl_set(my,0, 0, sslca, 0, 0);
FAIL_IF(!mysql_real_connect(my, hostname, ssluser, sslpw, schema,
port, socketname, 0), mysql_error(my));
ssl_port, socketname, 0), mysql_error(my));
rc= mysql_query(my, "SHOW session status like 'Ssl_version'");
check_mysql_rc(rc, my);
@@ -254,7 +254,7 @@ static int test_conc95(MYSQL *unused __attribute__((unused)))
NULL);
if (!mysql_real_connect(mysql, hostname, "ssluser1", sslpw, schema,
port, socketname, 0))
ssl_port, socketname, 0))
{
diag("could not establish x509 connection. Error: %s", mysql_error(mysql));
mysql_close(mysql);
@@ -283,7 +283,7 @@ static int test_multi_ssl_connections(MYSQL *unused __attribute__((unused)))
my= mysql_init(NULL);
FAIL_IF(!my,"mysql_init() failed");
FAIL_IF(!mysql_real_connect(my, hostname, ssluser, sslpw, schema,
port, socketname, 0), mysql_error(my));
ssl_port, socketname, 0), mysql_error(my));
rc= mysql_query(my, "SHOW STATUS LIKE 'Ssl_accepts'");
check_mysql_rc(rc, my);
@@ -301,7 +301,7 @@ static int test_multi_ssl_connections(MYSQL *unused __attribute__((unused)))
mysql_ssl_set(mysql[i], 0, 0, sslca, 0, 0);
mysql_real_connect(mysql[i], hostname, ssluser, sslpw, schema,
port, socketname, 0);
ssl_port, socketname, 0);
if (mysql_errno(mysql[i]))
{
diag("loop: %d error: %d %s", i, mysql_errno(mysql[i]), mysql_error(mysql[i]));
@@ -345,7 +345,7 @@ DWORD WINAPI ssl_thread(void *dummy)
mysql_ssl_set(mysql, 0, 0, sslca, 0, 0);
if(!mysql_real_connect(mysql, hostname, ssluser, sslpw, schema,
port, socketname, 0))
ssl_port, socketname, 0))
{
diag(">Error: %s", mysql_error(mysql));
goto end;
@@ -435,7 +435,7 @@ static int test_phpbug51647(MYSQL *unused __attribute__((unused)))
sslca, 0, 0);
FAIL_IF(!mysql_real_connect(mysql, hostname, ssluser, sslpw, schema,
port, socketname, 0), mysql_error(mysql));
ssl_port, socketname, 0), mysql_error(mysql));
diag("%s", mysql_get_ssl_cipher(mysql));
mysql_close(mysql);
@@ -459,7 +459,7 @@ static int test_password_protected(MYSQL *unused __attribute__((unused)))
mysql_options(mysql, MARIADB_OPT_TLS_PASSPHRASE, "qwerty");
FAIL_IF(!mysql_real_connect(mysql, hostname, ssluser, sslpw, schema,
port, socketname, 0), mysql_error(mysql));
ssl_port, socketname, 0), mysql_error(mysql));
diag("%s", mysql_get_ssl_cipher(mysql));
mysql_close(mysql);
@@ -480,7 +480,7 @@ static int test_conc50(MYSQL *unused __attribute__((unused)))
mysql_ssl_set(mysql, NULL, NULL, "./non_exisiting_cert.pem", NULL, NULL);
mysql_real_connect(mysql, hostname, ssluser, sslpw, schema,
port, socketname, 0);
ssl_port, socketname, 0);
diag("Error: %d %s", mysql_errno(mysql), mysql_error(mysql));
FAIL_IF(mysql_errno(mysql) != 2026, "Expected errno 2026");
mysql_close(mysql);
@@ -509,7 +509,7 @@ static int test_conc50_1(MYSQL *unused __attribute__((unused)))
mysql_ssl_set(mysql, NULL, NULL, sslca, NULL, NULL);
mysql_real_connect(mysql, hostname, ssluser, sslpw, schema,
port, socketname, 0);
ssl_port, socketname, 0);
if (mysql_errno(mysql))
diag("Error: %d %s", mysql_errno(mysql), mysql_error(mysql));
FAIL_IF(mysql_errno(mysql), "No error expected");
@@ -532,7 +532,7 @@ static int test_conc50_2(MYSQL *unused __attribute__((unused)))
mysql_ssl_set(mysql, NULL, NULL, "./non_exisiting_cert.pem", NULL, NULL);
mysql_real_connect(mysql, hostname, ssluser, sslpw, schema,
port, socketname, 0);
ssl_port, socketname, 0);
FAIL_IF(mysql_errno(mysql) != 2026, "Expected errno 2026");
mysql_close(mysql);
@@ -555,7 +555,7 @@ static int test_conc127(MYSQL *unused __attribute__((unused)))
mysql_ssl_set(mysql, NULL, NULL, "./non_exisiting.pem", NULL, NULL);
mysql_real_connect(mysql, hostname, ssluser, sslpw, schema,
port, socketname, 0);
ssl_port, socketname, 0);
diag("Error: %s", mysql_error(mysql));
FAIL_IF(mysql_errno(mysql) == 0, "Error expected (invalid certificate)");
mysql_close(mysql);
@@ -576,7 +576,7 @@ static int test_conc50_3(MYSQL *unused __attribute__((unused)))
FAIL_IF(!mysql, "Can't allocate memory");
mysql_real_connect(mysql, hostname, ssluser, sslpw, schema,
port, socketname, 0);
ssl_port, socketname, 0);
FAIL_IF(!mysql_errno(mysql), "Error expected, SSL connection required!");
mysql_close(mysql);
@@ -586,7 +586,7 @@ static int test_conc50_3(MYSQL *unused __attribute__((unused)))
mysql_ssl_set(mysql, NULL, NULL, sslca, NULL, NULL);
mysql_real_connect(mysql, hostname, ssluser, sslpw, schema,
port, socketname, 0);
ssl_port, socketname, 0);
diag("Error: %s<", mysql_error(mysql));
FAIL_IF(mysql_errno(mysql), "No error expected");
mysql_close(mysql);
@@ -607,7 +607,7 @@ static int test_conc50_4(MYSQL *unused __attribute__((unused)))
mysql_ssl_set(mysql, NULL, sslca, NULL, NULL, NULL);
mysql_real_connect(mysql, hostname, ssluser, sslpw, schema,
port, socketname, 0);
ssl_port, socketname, 0);
FAIL_IF(!mysql_errno(mysql) , "Error expected");
mysql_close(mysql);
@@ -634,7 +634,7 @@ static int verify_ssl_server_cert(MYSQL *unused __attribute__((unused)))
mysql_options(mysql, MYSQL_OPT_SSL_VERIFY_SERVER_CERT, &verify);
mysql_real_connect(mysql, hostname, ssluser, sslpw, schema,
port, socketname, 0);
ssl_port, socketname, 0);
FAIL_IF(!mysql_errno(mysql), "Expected error");
diag("Error (expected): %s", mysql_error(mysql));
@@ -656,7 +656,7 @@ static int test_bug62743(MYSQL *unused __attribute__((unused)))
mysql_ssl_set(mysql, "dummykey", NULL, NULL, NULL, NULL);
mysql_real_connect(mysql, hostname, ssluser, sslpw, schema,
port, socketname, 0);
ssl_port, socketname, 0);
diag("Error: %s", mysql_error(mysql));
FAIL_IF(mysql_errno(mysql) != 2026, "Expected errno 2026");
mysql_close(mysql);
@@ -667,7 +667,7 @@ static int test_bug62743(MYSQL *unused __attribute__((unused)))
mysql_ssl_set(mysql, sslkey, NULL, NULL, NULL, NULL);
mysql_real_connect(mysql, hostname, ssluser, sslpw, schema,
port, socketname, 0);
ssl_port, socketname, 0);
diag("Error with key: %s", mysql_error(mysql));
FAIL_IF(mysql_errno(mysql) != 2026, "Expected errno 2026");
mysql_close(mysql);
@@ -679,7 +679,7 @@ static int test_bug62743(MYSQL *unused __attribute__((unused)))
sslcert, NULL, NULL, NULL);
mysql_real_connect(mysql, hostname, ssluser, sslpw, schema,
port, socketname, 0);
ssl_port, socketname, 0);
FAIL_IF(mysql_errno(mysql) != 0, "Expected no error");
mysql_close(mysql);
@@ -689,7 +689,7 @@ static int test_bug62743(MYSQL *unused __attribute__((unused)))
mysql_ssl_set(mysql, sslkey, "blablubb", NULL, NULL, NULL);
mysql_real_connect(mysql, hostname, ssluser, sslpw, schema,
port, socketname, 0);
ssl_port, socketname, 0);
diag("Error with cert: %s", mysql_error(mysql));
FAIL_IF(mysql_errno(mysql) == 0, "Expected error");
mysql_close(mysql);
@@ -716,7 +716,7 @@ DWORD WINAPI thread_conc102(void)
mysql_ssl_set(mysql,0, 0, sslca, 0, 0);
if(!mysql_real_connect(mysql, hostname, username, password, schema,
port, socketname, 0))
ssl_port, socketname, 0))
{
diag(">Error: %s", mysql_error(mysql));
goto end;
@@ -813,12 +813,12 @@ static int test_ssl_fp(MYSQL *unused __attribute__((unused)))
mysql_options(my, MARIADB_OPT_SSL_FP, bad_cert_finger_print);
FAIL_IF(mysql_real_connect(my, hostname, username, password, schema,
port, socketname, 0), mysql_error(my));
ssl_port, socketname, 0), mysql_error(my));
mysql_options(my, MARIADB_OPT_SSL_FP, ssl_cert_finger_print);
FAIL_IF(!mysql_real_connect(my, hostname, username, password, schema,
port, socketname, 0), mysql_error(my));
ssl_port, socketname, 0), mysql_error(my));
FAIL_IF(check_cipher(my) != 0, "Invalid cipher");
@@ -854,7 +854,7 @@ static int test_ssl_fp_list(MYSQL *unused __attribute__((unused)))
mysql_options(my, MARIADB_OPT_SSL_FP_LIST, CERT_PATH "/server-cert.sha1");
if(!mysql_real_connect(my, hostname, username, password, schema,
port, socketname, 0))
ssl_port, socketname, 0))
{
diag("Error: %s", mysql_error(my));
mysql_close(my);
@@ -880,7 +880,7 @@ static int test_ssl_version(MYSQL *unused __attribute__((unused)))
mysql_ssl_set(my,0, 0, sslca, 0, 0);
FAIL_IF(!mysql_real_connect(my, hostname, ssluser, sslpw, schema,
port, socketname, 0), mysql_error(my));
ssl_port, socketname, 0), mysql_error(my));
diag("cipher: %s", mysql_get_ssl_cipher(my));
mariadb_get_infov(my, MARIADB_CONNECTION_TLS_VERSION_ID, &iversion);
@@ -911,7 +911,7 @@ static int test_schannel_cipher(MYSQL *unused __attribute__((unused)))
mysql_ssl_set(my,0, 0, sslca, 0, 0);
mysql_options(my, MARIADB_OPT_TLS_CIPHER_STRENGTH, &cipher_strength);
FAIL_IF(!mysql_real_connect(my, hostname, ssluser, sslpw, schema,
port, socketname, 0), mysql_error(my));
ssl_port, socketname, 0), mysql_error(my));
diag("cipher: %s", mysql_get_ssl_cipher(my));
@@ -969,7 +969,7 @@ static int test_cipher_mapping(MYSQL *unused __attribute__((unused)))
mysql->options.use_ssl= 1;
FAIL_IF(!mysql_real_connect(mysql, hostname, username, password, schema,
port, socketname, 0), mysql_error(mysql));
ssl_port, socketname, 0), mysql_error(mysql));
if (!(cipher= mysql_get_ssl_cipher(mysql)) ||
strcmp(ciphers[i], cipher) != 0)
{
@@ -1038,14 +1038,14 @@ static int test_openssl_1(MYSQL *mysql)
my= mysql_init(NULL);
mysql_ssl_set(my, NULL, NULL, NULL, NULL, "AES128-SHA");
FAIL_IF(!mysql_real_connect(my, hostname, "ssluser1", NULL, schema,
port, socketname, 0), mysql_error(my));
ssl_port, socketname, 0), mysql_error(my));
FAIL_IF(!mysql_get_ssl_cipher(my), "No TLS connection");
mysql_close(my);
my= mysql_init(NULL);
mysql_options(my, MYSQL_OPT_SSL_ENFORCE, &val);
FAIL_IF(!mysql_real_connect(my, hostname, "ssluser1", NULL, schema,
port, socketname, 0), mysql_error(my));
ssl_port, socketname, 0), mysql_error(my));
FAIL_IF(!mysql_get_ssl_cipher(my), "No TLS connection");
mysql_close(my);
@@ -1059,7 +1059,7 @@ static int test_openssl_1(MYSQL *mysql)
my= mysql_init(NULL);
mysql_options(my, MYSQL_OPT_SSL_ENFORCE, &val);
mysql_real_connect(my, hostname, "ssluser2", NULL, schema,
port, socketname, 0);
ssl_port, socketname, 0);
if (!mysql_error(my) &&
strcmp(mysql_get_ssl_cipher(my), "AES256-SHA"))
{
@@ -1075,7 +1075,7 @@ static int test_openssl_1(MYSQL *mysql)
my= mysql_init(NULL);
mysql_ssl_set(my, NULL, NULL, NULL, NULL, "AES256-SHA");
FAIL_IF(!mysql_real_connect(my, hostname, "ssluser2", NULL, schema,
port, socketname, 0), mysql_error(my));
ssl_port, socketname, 0), mysql_error(my));
FAIL_IF(strcmp("AES256-SHA", mysql_get_ssl_cipher(my)) != 0, "expected cipher AES256-SHA");
mysql_close(my);
}
@@ -1085,7 +1085,7 @@ static int test_openssl_1(MYSQL *mysql)
my= mysql_init(NULL);
mysql_ssl_set(my, NULL, NULL, NULL, NULL, "AES128-SHA");
FAIL_IF(mysql_real_connect(my, hostname, "ssluser2", NULL, schema,
port, socketname, 0), "Error expected");
ssl_port, socketname, 0), "Error expected");
mysql_close(my);
@@ -1100,7 +1100,7 @@ static int test_openssl_1(MYSQL *mysql)
my= mysql_init(NULL);
mysql_ssl_set(my, NULL, NULL, NULL, NULL, "AES256-SHA");
FAIL_IF(mysql_real_connect(my, hostname, "ssluser3", NULL, schema,
port, socketname, 0), "Error expected");
ssl_port, socketname, 0), "Error expected");
mysql_close(my);
/* ssluser3 connect with cipher and certs */
@@ -1111,7 +1111,7 @@ static int test_openssl_1(MYSQL *mysql)
NULL,
"AES256-SHA");
FAIL_IF(!mysql_real_connect(my, hostname, "ssluser3", NULL, schema,
port, socketname, 0), mysql_error(my));
ssl_port, socketname, 0), mysql_error(my));
mysql_close(my);
@@ -1124,7 +1124,7 @@ static int test_openssl_1(MYSQL *mysql)
my= mysql_init(NULL);
mysql_ssl_set(my, NULL, NULL, NULL, NULL, "AES256-SHA");
FAIL_IF(mysql_real_connect(my, hostname, "ssluser4", NULL, schema,
port, socketname, 0), "Error expected");
ssl_port, socketname, 0), "Error expected");
mysql_close(my);
/* ssluser4 connect with cipher and certs */
@@ -1135,7 +1135,7 @@ static int test_openssl_1(MYSQL *mysql)
NULL,
"AES256-SHA");
FAIL_IF(!mysql_real_connect(my, hostname, "ssluser4", NULL, schema,
port, socketname, 0), mysql_error(my));
ssl_port, socketname, 0), mysql_error(my));
mysql_close(my);
}
diag("drop users");
@@ -1163,7 +1163,7 @@ static int test_ssl_timeout(MYSQL *unused __attribute__((unused)))
mysql_options(mysql, MYSQL_OPT_READ_TIMEOUT, &read_timeout);
mysql->options.use_ssl= 1;
FAIL_IF(!mysql_real_connect(mysql, hostname, username, password, schema,
port, socketname, 0), mysql_error(mysql));
ssl_port, socketname, 0), mysql_error(mysql));
diag("cipher: %s\n", mysql_get_ssl_cipher(mysql));
rc= mysql_query(mysql, "SELECT SLEEP(600)");
if (!rc)
@@ -1200,7 +1200,7 @@ static int test_conc286(MYSQL *unused __attribute__((unused)))
mysql_options(my, MARIADB_OPT_SSL_FP, ssl_cert_finger_print);
FAIL_IF(!mysql_real_connect(my, hostname, username, password, schema,
port, socketname, 0), mysql_error(my));
ssl_port, socketname, 0), mysql_error(my));
FAIL_IF(check_cipher(my) != 0, "Invalid cipher");
@@ -1276,7 +1276,7 @@ static int test_mdev14101(MYSQL *my __attribute__((unused)))
mysql_options(mysql, MYSQL_OPT_SSL_ENFORCE, &val);
mysql_options(mysql, MARIADB_OPT_TLS_VERSION, combinations[i].opt_tls_version);
FAIL_IF(!mysql_real_connect(mysql, hostname, username, password, schema,
port, socketname, 0), mysql_error(mysql));
ssl_port, socketname, 0), mysql_error(mysql));
mariadb_get_infov(mysql, MARIADB_CONNECTION_TLS_VERSION, &tls_version);
diag("options: %s", combinations[i].opt_tls_version);
diag("protocol: %s expected: %s", tls_version, combinations[i].expected);
@@ -1296,7 +1296,7 @@ static int test_conc386(MYSQL *mysql)
NULL,
NULL);
FAIL_IF(!mysql_real_connect(mysql, hostname, username, password, schema,
port, socketname, 0), mysql_error(mysql));
ssl_port, socketname, 0), mysql_error(mysql));
FAIL_IF(check_cipher(mysql) != 0, "Invalid cipher");
mysql_close(mysql);
return OK;
@@ -1316,7 +1316,7 @@ static int test_ssl_verify(MYSQL *my __attribute__((unused)))
mysql_options(mysql, MYSQL_OPT_SSL_ENFORCE, &enforce);
mysql_options(mysql, MYSQL_OPT_SSL_VERIFY_SERVER_CERT, &verify);
FAIL_IF(mysql_real_connect(mysql, hostname, username, password, schema,
port, socketname, 0), "Error expected");
ssl_port, socketname, 0), "Error expected");
diag("error expected: %s\n", mysql_error(mysql));
mysql_close(mysql);
@@ -1338,13 +1338,13 @@ static int test_ssl_verify(MYSQL *my __attribute__((unused)))
mysql_ssl_set(mysql,0, 0, sslca, 0, 0);
mysql_options(mysql, MYSQL_OPT_SSL_VERIFY_SERVER_CERT, &verify);
FAIL_IF(!mysql_real_connect(mysql, hostname, username, password, schema,
port, socketname, 0), mysql_error(mysql));
ssl_port, socketname, 0), mysql_error(mysql));
mysql_close(mysql);
mysql= mysql_init(NULL);
mysql_options(mysql, MYSQL_OPT_SSL_ENFORCE, &enforce);
FAIL_IF(!mysql_real_connect(mysql, hostname, username, password, schema,
port, socketname, 0), mysql_error(mysql));
ssl_port, socketname, 0), mysql_error(mysql));
diag("cipher: %s", mysql_get_ssl_cipher(mysql));
mysql_close(mysql);