diff options
Diffstat (limited to 'tests/mysql_client_test.c')
-rw-r--r-- | tests/mysql_client_test.c | 106 |
1 files changed, 75 insertions, 31 deletions
diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index c367e7ca35d..fc3e5470ddd 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -34,8 +34,22 @@ #include "mysql_client_fw.c" +static const my_bool my_true= 1; + + /* Query processing */ +static my_bool get_reconnect(MYSQL *mysql) +{ +#ifdef EMBEDDED_LIBRARY + return mysql->reconnect; +#else + my_bool reconnect; + mysql_get_option(mysql, MYSQL_OPT_RECONNECT, &reconnect); + return reconnect; +#endif +} + static void client_query() { int rc; @@ -447,7 +461,7 @@ static void test_prepare_simple() strmov(query, "SHOW SLAVE STATUS"); stmt= mysql_simple_prepare(mysql, query); check_stmt(stmt); - DIE_UNLESS(mysql_stmt_field_count(stmt) == 47); + DIE_UNLESS(mysql_stmt_field_count(stmt) == 50); mysql_stmt_close(stmt); /* show master status */ @@ -3124,7 +3138,7 @@ static void test_long_data_str1() int rc, i; char data[255]; long length; - ulong max_blob_length, blob_length, length1; + ulong max_blob_length, blob_length= 0, length1; my_bool true_value; MYSQL_RES *result; MYSQL_BIND my_bind[2]; @@ -4813,7 +4827,7 @@ static void test_stmt_close() myerror("connection failed"); exit(1); } - lmysql->reconnect= 1; + mysql_options(lmysql, MYSQL_OPT_RECONNECT, &my_true); if (!opt_silent) fprintf(stdout, "OK"); @@ -5497,7 +5511,7 @@ DROP TABLE IF EXISTS test_multi_tab"; fprintf(stdout, "\n connection failed(%s)", mysql_error(mysql_local)); exit(1); } - mysql_local->reconnect= 1; + mysql_options(mysql_local, MYSQL_OPT_RECONNECT, &my_true); rc= mysql_query(mysql_local, query); myquery(rc); @@ -5621,7 +5635,7 @@ static void test_prepare_multi_statements() fprintf(stderr, "\n connection failed(%s)", mysql_error(mysql_local)); exit(1); } - mysql_local->reconnect= 1; + mysql_options(mysql_local, MYSQL_OPT_RECONNECT, &my_true); strmov(query, "select 1; select 'another value'"); stmt= mysql_simple_prepare(mysql_local, query); check_stmt_r(stmt); @@ -6339,10 +6353,10 @@ static void test_pure_coverage() my_bind[0].buffer_type= MYSQL_TYPE_GEOMETRY; rc= mysql_stmt_bind_result(stmt, my_bind); - check_execute_r(stmt, rc); /* unsupported buffer type */ + check_execute(stmt, rc); /* MariaDB C/C converts geometry to string */ rc= mysql_stmt_store_result(stmt); - DIE_UNLESS(rc); + DIE_IF(rc); rc= mysql_stmt_store_result(stmt); DIE_UNLESS(rc); /* Old error must be reset first */ @@ -7226,7 +7240,7 @@ static void test_prepare_grant() mysql_close(lmysql); exit(1); } - lmysql->reconnect= 1; + mysql_options(lmysql, MYSQL_OPT_RECONNECT, &my_true); if (!opt_silent) fprintf(stdout, "OK"); @@ -7539,7 +7553,7 @@ static void test_explain_bug() verify_prepare_field(result, 5, "Extra", "EXTRA", mysql_get_server_version(mysql) <= 50000 ? MYSQL_TYPE_STRING : MYSQL_TYPE_VAR_STRING, - 0, 0, "information_schema", 27, 0); + 0, 0, "information_schema", 30, 0); mysql_free_result(result); mysql_stmt_close(stmt); @@ -7688,7 +7702,7 @@ static void test_drop_temp() mysql_close(lmysql); exit(1); } - lmysql->reconnect= 1; + mysql_options(lmysql, MYSQL_OPT_RECONNECT, &my_true); if (!opt_silent) fprintf(stdout, "OK"); @@ -13403,10 +13417,7 @@ static void test_bug9478() /* Fill in the fetch packet */ int4store(buff, stmt->stmt_id); buff[4]= 1; /* prefetch rows */ - rc= ((*mysql->methods->advanced_command)(mysql, COM_STMT_FETCH, - (uchar*) buff, - sizeof(buff), 0,0,1,NULL) || - (*mysql->methods->read_query_result)(mysql)); + rc= mysql_stmt_fetch(stmt); DIE_UNLESS(rc); if (!opt_silent && i == 0) printf("Got error (as expected): %s\n", mysql_error(mysql)); @@ -14993,7 +15004,7 @@ static void test_bug15510() static void test_opt_reconnect() { MYSQL *lmysql; - my_bool my_true= TRUE; + myheader("test_opt_reconnect"); @@ -15004,8 +15015,8 @@ static void test_opt_reconnect() } if (!opt_silent) - fprintf(stdout, "reconnect before mysql_options: %d\n", lmysql->reconnect); - DIE_UNLESS(lmysql->reconnect == 0); + fprintf(stdout, "reconnect before mysql_options: %d\n", get_reconnect(lmysql)); + DIE_UNLESS(get_reconnect(lmysql) == 0); if (mysql_options(lmysql, MYSQL_OPT_RECONNECT, &my_true)) { @@ -15015,8 +15026,8 @@ static void test_opt_reconnect() /* reconnect should be 1 */ if (!opt_silent) - fprintf(stdout, "reconnect after mysql_options: %d\n", lmysql->reconnect); - DIE_UNLESS(lmysql->reconnect == 1); + fprintf(stdout, "reconnect after mysql_options: %d\n", get_reconnect(lmysql)); + DIE_UNLESS(get_reconnect(lmysql) == 1); if (!(mysql_real_connect(lmysql, opt_host, opt_user, opt_password, current_db, opt_port, @@ -15029,8 +15040,8 @@ static void test_opt_reconnect() /* reconnect should still be 1 */ if (!opt_silent) fprintf(stdout, "reconnect after mysql_real_connect: %d\n", - lmysql->reconnect); - DIE_UNLESS(lmysql->reconnect == 1); + get_reconnect(lmysql)); + DIE_UNLESS(get_reconnect(lmysql) == 1); mysql_close(lmysql); @@ -15041,8 +15052,8 @@ static void test_opt_reconnect() } if (!opt_silent) - fprintf(stdout, "reconnect before mysql_real_connect: %d\n", lmysql->reconnect); - DIE_UNLESS(lmysql->reconnect == 0); + fprintf(stdout, "reconnect before mysql_real_connect: %d\n", get_reconnect(lmysql)); + DIE_UNLESS(get_reconnect(lmysql) == 0); if (!(mysql_real_connect(lmysql, opt_host, opt_user, opt_password, current_db, opt_port, @@ -15055,8 +15066,8 @@ static void test_opt_reconnect() /* reconnect should still be 0 */ if (!opt_silent) fprintf(stdout, "reconnect after mysql_real_connect: %d\n", - lmysql->reconnect); - DIE_UNLESS(lmysql->reconnect == 0); + get_reconnect(lmysql)); + DIE_UNLESS(get_reconnect(lmysql) == 0); mysql_close(lmysql); } @@ -15391,7 +15402,7 @@ static void test_mysql_insert_id() myheader("test_mysql_insert_id"); - rc= mysql_query(mysql, "drop table if exists t1"); + rc= mysql_query(mysql, "drop table if exists t1,t2"); myquery(rc); /* table without auto_increment column */ rc= mysql_query(mysql, "create table t1 (f1 int, f2 varchar(255), key(f1))"); @@ -16233,7 +16244,6 @@ static void test_change_user() const char *db= "mysqltest_user_test_database"; int rc; MYSQL* conn; - DBUG_ENTER("test_change_user"); myheader("test_change_user"); @@ -16246,6 +16256,9 @@ static void test_change_user() rc= mysql_query(mysql, buff); myquery(rc); + rc= mysql_query(mysql, "SET SQL_MODE=''"); + myquery(rc); + sprintf(buff, "grant select on %s.* to %s@'%%' identified by '%s'", db, @@ -17487,7 +17500,6 @@ static void test_wl4166_2() mysql_stmt_close(stmt); rc= mysql_query(mysql, "drop table t1"); myquery(rc); - } @@ -17988,7 +18000,8 @@ static void test_bug43560(void) strncpy(buffer, values[2], BUFSIZE); length= strlen(buffer); rc= mysql_stmt_execute(stmt); - DIE_UNLESS(rc && mysql_stmt_errno(stmt) == CR_SERVER_LOST); + DIE_UNLESS(rc && (mysql_stmt_errno(stmt) == CR_SERVER_LOST || + mysql_stmt_errno(stmt) == CR_SERVER_GONE_ERROR)); opt_drop_db= 0; client_disconnect(conn); @@ -18754,8 +18767,11 @@ static void test_progress_reporting() myheader("test_progress_reporting"); - conn= client_connect(CLIENT_PROGRESS, MYSQL_PROTOCOL_TCP, 0); - DIE_UNLESS(conn->client_flag & CLIENT_PROGRESS); + + conn= client_connect(CLIENT_PROGRESS_OBSOLETE, MYSQL_PROTOCOL_TCP, 0); + if (!(conn->server_capabilities & CLIENT_PROGRESS_OBSOLETE)) + return; + DIE_UNLESS(conn->client_flag & CLIENT_PROGRESS_OBSOLETE); mysql_options(conn, MYSQL_PROGRESS_CALLBACK, (void*) report_progress); rc= mysql_query(conn, "set @save=@@global.progress_report_time"); @@ -19488,6 +19504,33 @@ static void test_big_packet() } +static void test_prepare_analyze() +{ + MYSQL_STMT *stmt; + const char *query= "ANALYZE SELECT 1"; + int rc; + myheader("test_prepare_analyze"); + + stmt= mysql_stmt_init(mysql); + check_stmt(stmt); + rc= mysql_stmt_prepare(stmt, query, strlen(query)); + check_execute(stmt, rc); + + rc= mysql_stmt_execute(stmt); + check_execute(stmt, rc); + + rc= mysql_stmt_store_result(stmt); + check_execute(stmt, rc); + + while (!(rc= mysql_stmt_fetch(stmt))) + ; + + DIE_UNLESS(rc == MYSQL_NO_DATA); + + rc= mysql_stmt_close(stmt); + check_execute(stmt, rc); +} + static struct my_tests_st my_tests[]= { { "disable_query_logs", disable_query_logs }, { "test_view_sp_list_fields", test_view_sp_list_fields }, @@ -19764,6 +19807,7 @@ static struct my_tests_st my_tests[]= { #endif { "test_compressed_protocol", test_compressed_protocol }, { "test_big_packet", test_big_packet }, + { "test_prepare_analyze", test_prepare_analyze }, { 0, 0 } }; |