MaxScale/maxscale-system-test/temporal_tables.cpp
2017-12-08 12:23:04 +02:00

63 lines
2.6 KiB
C++

/**
* Check temporary tables commands functionality (relates to bug 430)
*
* - create t1 table and put some data into it
* - create temporary table t1
* - insert different data into t1
* - check that SELECT FROM t1 gives data from temporary table
* - create other connections using all MaxScale services and check that SELECT
* via these connections gives data from main t1, not temporary
* - dropping temporary t1
* - check that data from main t1 is not affected
*/
#include "testconnections.h"
#include "sql_t1.h"
using namespace std;
int main(int argc, char *argv[])
{
TestConnections test(argc, argv);
test.maxscales->connect_maxscale(0);
test.tprintf("Create a table and insert two rows into it");
test.set_timeout(30);
execute_query(test.maxscales->conn_rwsplit[0], "USE test");
create_t1(test.maxscales->conn_rwsplit[0]);
execute_query(test.maxscales->conn_rwsplit[0], "INSERT INTO t1 (x1, fl) VALUES(0, 1)");
execute_query(test.maxscales->conn_rwsplit[0], "INSERT INTO t1 (x1, fl) VALUES(1, 1)");
test.tprintf("Create temporary table and insert one row");
test.set_timeout(30);
execute_query(test.maxscales->conn_rwsplit[0], "create temporary table t1 as (SELECT * FROM t1 WHERE fl=3)");
execute_query(test.maxscales->conn_rwsplit[0], "INSERT INTO t1 (x1, fl) VALUES(0, 1)");
test.tprintf("Check that the temporary table has one row");
test.set_timeout(90);
test.add_result(execute_select_query_and_check(test.maxscales->conn_rwsplit[0], "SELECT * FROM t1", 1),
"Current connection should show one row");
test.add_result(execute_select_query_and_check(test.maxscales->conn_master[0], "SELECT * FROM t1", 2),
"New connection should show two rows");
test.add_result(execute_select_query_and_check(test.maxscales->conn_slave[0], "SELECT * FROM t1", 2),
"New connection should show two rows");
printf("Drop temporary table and check that the real table has two rows");
test.set_timeout(90);
execute_query(test.maxscales->conn_rwsplit[0], "DROP TABLE t1");
test.add_result(execute_select_query_and_check(test.maxscales->conn_rwsplit[0], "SELECT * FROM t1", 2),
"check failed");
test.add_result(execute_select_query_and_check(test.maxscales->conn_master[0], "SELECT * FROM t1", 2),
"check failed");
test.add_result(execute_select_query_and_check(test.maxscales->conn_slave[0], "SELECT * FROM t1", 2),
"check failed");
test.maxscales->close_maxscale_connections(0);
return test.global_result;
}