61 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /**
 | |
|  * Test for MXS-1310.
 | |
|  * - Only explicit databases used -> shard containing the explicit database
 | |
|  * - Only implicit databases used -> shard containing current database
 | |
|  * - Mix of explicit and implicit databases -> shard containing current database
 | |
|  */
 | |
| 
 | |
| #include <maxtest/testconnections.hh>
 | |
| 
 | |
| int main(int argc, char* argv[])
 | |
| {
 | |
|     TestConnections test(argc, argv);
 | |
| 
 | |
|     // Get the @@server_id value from both shards
 | |
|     char server_id[2][1024];
 | |
|     test.repl->connect();
 | |
|     sprintf(server_id[0], "%d", test.repl->get_server_id(0));
 | |
|     sprintf(server_id[1], "%d", test.repl->get_server_id(1));
 | |
|     execute_query(test.repl->nodes[0],
 | |
|                   "CREATE DATABASE db1;"
 | |
|                   "CREATE TABLE db1.t1(id int);"
 | |
|                   "INSERT INTO db1.t1 VALUES (@@server_id)");
 | |
|     execute_query(test.repl->nodes[1],
 | |
|                   "CREATE DATABASE db2;"
 | |
|                   "CREATE TABLE db2.t2(id int);"
 | |
|                   "INSERT INTO db2.t2 VALUES (@@server_id)");
 | |
|     test.repl->sync_slaves();
 | |
| 
 | |
|     test.tprintf("Run test with sharded database as active database");
 | |
|     test.maxscales->connect_rwsplit(0);
 | |
|     test.try_query(test.maxscales->conn_rwsplit[0], "USE db2");
 | |
|     execute_query_check_one(test.maxscales->conn_rwsplit[0], "SELECT @@server_id, id FROM t2", server_id[1]);
 | |
|     execute_query_check_one(test.maxscales->conn_rwsplit[0],
 | |
|                             "SELECT @@server_id, id FROM db1.t1",
 | |
|                             server_id[0]);
 | |
|     execute_query_check_one(test.maxscales->conn_rwsplit[0],
 | |
|                             "SELECT @@server_id, a.id FROM t2 as a JOIN db1.t1 as b",
 | |
|                             server_id[1]);
 | |
|     test.maxscales->close_rwsplit(0);
 | |
| 
 | |
|     test.tprintf("Run test with a common database as active database");
 | |
|     test.maxscales->connect_rwsplit(0);
 | |
|     test.try_query(test.maxscales->conn_rwsplit[0], "USE db1");
 | |
|     execute_query_check_one(test.maxscales->conn_rwsplit[0], "SELECT @@server_id, id FROM t1", server_id[0]);
 | |
|     execute_query_check_one(test.maxscales->conn_rwsplit[0],
 | |
|                             "SELECT @@server_id, id FROM db2.t2",
 | |
|                             server_id[1]);
 | |
|     execute_query_check_one(test.maxscales->conn_rwsplit[0],
 | |
|                             "SELECT @@server_id, a.id FROM t1 as a JOIN db1.t1 as b",
 | |
|                             server_id[0]);
 | |
|     test.maxscales->close_rwsplit(0);
 | |
| 
 | |
|     //  Cleanup
 | |
|     execute_query(test.repl->nodes[0], "DROP DATABASE db1");
 | |
|     execute_query(test.repl->nodes[1], "DROP DATABASE db2");
 | |
| 
 | |
|     test.repl->fix_replication();
 | |
| 
 | |
|     return test.global_result;
 | |
| }
 | 
