41 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /**
 | |
|  * Test 10.1 compound statements
 | |
|  */
 | |
| 
 | |
| #include "testconnections.h"
 | |
| 
 | |
| int main(int argc, char** argv)
 | |
| {
 | |
|     TestConnections test(argc, argv);
 | |
| 
 | |
|     const char* sql =
 | |
|         "BEGIN NOT ATOMIC\n"
 | |
|         "  DECLARE EXIT HANDLER FOR SQLEXCEPTION\n"
 | |
|         "  BEGIN  \n"
 | |
|         "   ROLLBACK;\n"
 | |
|         "   RESIGNAL;\n"
 | |
|         "  END;\n"
 | |
|         "  START TRANSACTION;\n"
 | |
|         "    INSERT INTO test.t1 VALUES (1);\n"
 | |
|         "    UPDATE test.t1 SET id = 2 WHERE id = 1;\n"
 | |
|         "  COMMIT;\n"
 | |
|         "END\n";
 | |
| 
 | |
|     test.maxscales->connect();
 | |
|     test.try_query(test.maxscales->conn_rwsplit[0], "DROP TABLE IF EXISTS test.t1");
 | |
|     test.try_query(test.maxscales->conn_rwsplit[0], "CREATE TABLE test.t1(id INT)");
 | |
|     test.try_query(test.maxscales->conn_rwsplit[0], "%s", sql);
 | |
| 
 | |
|     // Do the select inside a transacttion so that it gets routed to the master
 | |
|     test.try_query(test.maxscales->conn_rwsplit[0], "BEGIN");
 | |
|     test.expect(execute_query_check_one(test.maxscales->conn_rwsplit[0], "SELECT id FROM test.t1", "2") == 0,
 | |
|                 "Table should contain one row with value 2");
 | |
|     test.try_query(test.maxscales->conn_rwsplit[0], "COMMIT");
 | |
| 
 | |
|     test.try_query(test.maxscales->conn_rwsplit[0], "DROP TABLE test.t1");
 | |
|     test.maxscales->disconnect();
 | |
| 
 | |
|     test.check_maxscale_alive();
 | |
|     return test.global_result;
 | |
| }
 | 
