Merge branch '2.3' into 2.4
This commit is contained in:
		
							
								
								
									
										86
									
								
								system-test/mxs1808_long_data.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								system-test/mxs1808_long_data.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,86 @@ | ||||
| #include <maxtest/testconnections.hh> | ||||
| #include <iostream> | ||||
|  | ||||
| using namespace std; | ||||
|  | ||||
| void print_stmt_error(MYSQL_STMT* stmt, const char* msg) | ||||
| { | ||||
|     cout << "Error: " << msg << ": " << mysql_stmt_error(stmt) << endl; | ||||
| } | ||||
|  | ||||
| static int test_long_data(MYSQL* conn, int sqlsize) | ||||
| { | ||||
|     int data1size = sqlsize / 2; | ||||
|  | ||||
|     char* data1 = (char*) malloc(data1size); | ||||
|     memset(data1, 97, data1size); | ||||
|     char* data3 = (char*) malloc(sqlsize); | ||||
|     memset(data3, 99, sqlsize); | ||||
|  | ||||
|     MYSQL_STMT* stmt; | ||||
|     stmt = mysql_stmt_init(conn); | ||||
|     int int_data; | ||||
|     MYSQL_RES* result; | ||||
|     MYSQL_BIND my_bind[1]; | ||||
|  | ||||
|     mysql_autocommit(conn, 1); | ||||
|  | ||||
|     if (NULL == stmt) | ||||
|     { | ||||
|         fprintf(stderr, "%s", mysql_error(conn)); | ||||
|         return 0; | ||||
|     } | ||||
|     if (mysql_stmt_prepare(stmt, "select ?", strlen("select ?")) != 0) | ||||
|     { | ||||
|         print_stmt_error(stmt, "stmt prepare fail"); | ||||
|         return 0; | ||||
|     } | ||||
|  | ||||
|     memset((char*) my_bind, 0, sizeof(my_bind)); | ||||
|  | ||||
|     my_bind[0].buffer = (void*)&int_data; | ||||
|     my_bind[0].buffer_type = MYSQL_TYPE_STRING; | ||||
|  | ||||
|     if (mysql_stmt_bind_param(stmt, my_bind) != 0) | ||||
|     { | ||||
|         print_stmt_error(stmt, "bind param error"); | ||||
|         return 0; | ||||
|     } | ||||
|  | ||||
|     /* supply data in pieces */ | ||||
|     if (mysql_stmt_send_long_data(stmt, 0, data1, data1size) != 0) | ||||
|     { | ||||
|         print_stmt_error(stmt, "send long data1 failed"); | ||||
|         return 0; | ||||
|     } | ||||
|     if (mysql_stmt_send_long_data(stmt, 0, data3, sqlsize) != 0) | ||||
|     { | ||||
|         print_stmt_error(stmt, "send long data3 failed"); | ||||
|         return 0; | ||||
|     } | ||||
|  | ||||
|     /* execute */ | ||||
|     if (mysql_stmt_execute(stmt) != 0) | ||||
|     { | ||||
|         print_stmt_error(stmt, "execute prepare stmt failed"); | ||||
|         return 0; | ||||
|     } | ||||
|     /* get the result */ | ||||
|     result = mysql_store_result(conn); | ||||
|     mysql_free_result(result); | ||||
|     mysql_stmt_close(stmt); | ||||
|     free(data1); | ||||
|     free(data3); | ||||
|     return 1; | ||||
| } | ||||
|  | ||||
| int main(int argc, char** argv) | ||||
| { | ||||
|     TestConnections test(argc, argv); | ||||
|  | ||||
|     test.maxscales->connect(); | ||||
|     test.expect(test_long_data(test.maxscales->conn_rwsplit[0], 123456), "Test should work"); | ||||
|     test.maxscales->disconnect(); | ||||
|  | ||||
|     return test.global_result; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Esa Korhonen
					Esa Korhonen