Merge branch '2.3' into 2.4
This commit is contained in:
156
system-test/rwsplit_infile_outfile.cpp
Normal file
156
system-test/rwsplit_infile_outfile.cpp
Normal file
@ -0,0 +1,156 @@
|
||||
/**
|
||||
* @file bug519.cpp - Jira task is MAX-345
|
||||
* - fill t1 with data
|
||||
* - execute SELECT * INTO OUTFILE '/tmp/t1.csv' FROM t1; against all maxscales->routers[0]
|
||||
* - DROP TABLE t1
|
||||
* - LOAD DATA LOCAL INFILE 't1.csv' INTO TABLE t1; using RWSplit
|
||||
* - check if t1 contains right data
|
||||
* - DROP t1 again and repeat LOAD DATA LOCAL INFILE 't1.csv' INTO TABLE t1; using ReadConn master
|
||||
*/
|
||||
|
||||
/*
|
||||
*
|
||||
* It seems that LOAD DATA LOCAL INFILE is not handled by readwritesplit? Maybe it's a bigger problem
|
||||
* elsewhere in MaxScale?
|
||||
*
|
||||
* I can execute the command, it looks like it is getting sent to the master, but ... no data is actually
|
||||
* loaded. Does/can MaxScale handle LOAD DATA LOCAL INFILE?
|
||||
* Comment 1 Kolbe Kegel 2014-09-03 02:39:47 UTC
|
||||
* The LOAD DATA LOCAL INFILE statement is stuck in "Reading from net" until some timeout is hit:
|
||||
*
|
||||
| 22 | maxuser | 192.168.30.38:59996 | test | Query | 10 | Reading from net | load data local
|
||||
|infile '/Users/kolbe/Devel/seattleparking/Street_Parking_Signs.csv' into table parki | 0.000 |
|
||||
|
|
||||
| The client never sees the statement end, though, even after the server has long ago killed its
|
||||
|connection...
|
||||
|
|
||||
| When I start a *new* connection to MaxScale and I try to execute the LOAD DATA LOCAL INFILE statement
|
||||
|again, I have some problems:
|
||||
|
|
||||
| mysql 5.5.38-MariaDB (maxuser) [test]> source /Users/kolbe/Devel/seattleparking/loaddata.sql
|
||||
| ERROR 2013 (HY000) at line 1 in file: '/Users/kolbe/Devel/seattleparking/loaddata.sql': Lost connection to
|
||||
|MySQL server during query
|
||||
| mysql 5.5.38-MariaDB (maxuser) [test]> select @@wsrep_node_address;
|
||||
| ERROR 2006 (HY000): MySQL server has gone away
|
||||
| No connection. Trying to reconnect...
|
||||
| Connection id: 1709
|
||||
| Current database: test
|
||||
|
|
||||
+----------------------+
|
||||
| @@wsrep_node_address |
|
||||
+----------------------+
|
||||
| 192.168.30.32 |
|
||||
+----------------------+
|
||||
| 1 row in set (0.01 sec)
|
||||
|
|
||||
| mysql 5.5.38-MariaDB (maxuser) [test]> source /Users/kolbe/Devel/seattleparking/loaddata.sql
|
||||
| ERROR 2013 (HY000) at line 1 in file: '/Users/kolbe/Devel/seattleparking/loaddata.sql': Lost connection to
|
||||
|MySQL server during query
|
||||
| mysql 5.5.38-MariaDB (maxuser) [test]> select @@wsrep_node_address;
|
||||
| ERROR 2006 (HY000): MySQL server has gone away
|
||||
| No connection. Trying to reconnect...
|
||||
| Connection id: 1709
|
||||
| Current database: test
|
||||
|
|
||||
+----------------------+
|
||||
| @@wsrep_node_address |
|
||||
+----------------------+
|
||||
| 192.168.30.32 |
|
||||
+----------------------+
|
||||
| 1 row in set (0.01 sec)
|
||||
|
|
||||
| mysql 5.5.38-MariaDB (maxuser) [test]> source /Users/kolbe/Devel/seattleparking/loaddata.sql
|
||||
| ERROR 2013 (HY000) at line 1 in file: '/Users/kolbe/Devel/seattleparking/loaddata.sql': Lost connection to
|
||||
|MySQL server during query
|
||||
| mysql 5.5.38-MariaDB (maxuser) [test]> Bye
|
||||
*/
|
||||
|
||||
|
||||
#include <iostream>
|
||||
#include <maxtest/testconnections.hh>
|
||||
#include <maxtest/sql_t1.hh>
|
||||
|
||||
using namespace std;
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
TestConnections* Test = new TestConnections(argc, argv);
|
||||
int N = 4;
|
||||
int iterations = 2;
|
||||
if (Test->smoke)
|
||||
{
|
||||
iterations = 1;
|
||||
}
|
||||
char str[1024];
|
||||
Test->set_timeout(60);
|
||||
|
||||
Test->maxscales->connect_maxscale(0);
|
||||
Test->repl->connect();
|
||||
|
||||
Test->tprintf("Create t1\n");
|
||||
create_t1(Test->maxscales->conn_rwsplit[0]);
|
||||
Test->tprintf("Insert data into t1\n");
|
||||
Test->set_timeout(60);
|
||||
insert_into_t1(Test->maxscales->conn_rwsplit[0], N);
|
||||
Test->stop_timeout();
|
||||
Test->repl->sync_slaves();
|
||||
Test->set_timeout(200);
|
||||
|
||||
sprintf(str,
|
||||
"%s rm -f /tmp/t*.csv; %s chmod 777 /tmp",
|
||||
Test->repl->access_sudo[0],
|
||||
Test->repl->access_sudo[0]);
|
||||
Test->tprintf("%s\n", str);
|
||||
for (int k = 0; k < Test->repl->N; k++)
|
||||
{
|
||||
Test->repl->ssh_node(k, str, false);
|
||||
}
|
||||
// system(str);
|
||||
|
||||
Test->tprintf("Copying data from t1 to file...\n");
|
||||
Test->tprintf("using RWSplit: SELECT * INTO OUTFILE '/tmp/t1.csv' FROM t1;\n");
|
||||
Test->try_query(Test->maxscales->conn_rwsplit[0], (char*) "SELECT * INTO OUTFILE '/tmp/t1.csv' FROM t1;");
|
||||
Test->tprintf("using ReadConn master: SELECT * INTO OUTFILE '/tmp/t2.csv' FROM t1;\n");
|
||||
Test->try_query(Test->maxscales->conn_master[0], (char*) "SELECT * INTO OUTFILE '/tmp/t2.csv' FROM t1;");
|
||||
Test->tprintf("using ReadConn slave: SELECT * INTO OUTFILE '/tmp/t3.csv' FROM t1;\n");
|
||||
Test->try_query(Test->maxscales->conn_slave[0], (char*) "SELECT * INTO OUTFILE '/tmp/t3.csv' FROM t1;");
|
||||
|
||||
Test->tprintf("Copying t1.cvs from Maxscale machine:\n");
|
||||
Test->repl->copy_from_node_legacy("/tmp/t1.csv", "./t1.csv", 0);
|
||||
|
||||
MYSQL* srv[2];
|
||||
|
||||
srv[0] = Test->maxscales->conn_rwsplit[0];
|
||||
srv[1] = Test->maxscales->conn_master[0];
|
||||
for (int i = 0; i < iterations; i++)
|
||||
{
|
||||
Test->set_timeout(100);
|
||||
Test->tprintf("Dropping t1 \n");
|
||||
Test->try_query(Test->maxscales->conn_rwsplit[0], (char*) "DROP TABLE t1;");
|
||||
Test->stop_timeout();
|
||||
Test->repl->sync_slaves();
|
||||
|
||||
Test->set_timeout(200);
|
||||
Test->tprintf("Create t1\n");
|
||||
create_t1(Test->maxscales->conn_rwsplit[0]);
|
||||
Test->tprintf("Loading data to t1 from file\n");
|
||||
Test->try_query(srv[i], (char*) "LOAD DATA LOCAL INFILE 't1.csv' INTO TABLE t1;");
|
||||
Test->stop_timeout();
|
||||
Test->repl->sync_slaves();
|
||||
|
||||
Test->set_timeout(100);
|
||||
Test->tprintf("SELECT: rwsplitter\n");
|
||||
Test->add_result(select_from_t1(Test->maxscales->conn_rwsplit[0], N), "Wrong data in 't1'");
|
||||
Test->tprintf("SELECT: master\n");
|
||||
Test->add_result(select_from_t1(Test->maxscales->conn_master[0], N), "Wrong data in 't1'");
|
||||
Test->tprintf("SELECT: slave\n");
|
||||
Test->add_result(select_from_t1(Test->maxscales->conn_slave[0], N), "Wrong data in 't1'");
|
||||
}
|
||||
|
||||
Test->repl->close_connections();
|
||||
Test->check_maxscale_alive(0);
|
||||
|
||||
int rval = Test->global_result;
|
||||
delete Test;
|
||||
return rval;
|
||||
}
|
Reference in New Issue
Block a user