57 lines
1.9 KiB
C++
57 lines
1.9 KiB
C++
/**
|
|
* @file mxs957.cpp Execute given SQL through readwritesplit (with temporary tables usage)
|
|
*
|
|
*
|
|
* Execute the following SQL through readwritesplit without errors.
|
|
*
|
|
* CREATE OR REPLACE TABLE t1(`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY);
|
|
* CREATE OR REPLACE TABLE t2(`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY);
|
|
* CREATE TEMPORARY TABLE temp1(`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY);
|
|
* INSERT INTO temp1 values (1), (2), (3);
|
|
* INSERT INTO t1 values (1), (2), (3);
|
|
* INSERT INTO t2 values (1), (2), (3);
|
|
* CREATE TEMPORARY TABLE temp2
|
|
* SELECT DISTINCT p.id FROM temp1 p JOIN t1 t ON (t.id = p.id)
|
|
* LEFT JOIN t2 ON (t.id = t2.id)
|
|
* WHERE p.id IS NOT NULL AND @@server_id IS NOT NULL;
|
|
* SELECT * FROM temp2;
|
|
*/
|
|
|
|
|
|
#include <iostream>
|
|
#include <unistd.h>
|
|
#include "testconnections.h"
|
|
|
|
using namespace std;
|
|
|
|
const char* queries[] =
|
|
{
|
|
"USE test",
|
|
"CREATE OR REPLACE TABLE t1(`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY)",
|
|
"CREATE OR REPLACE TABLE t2(`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY)",
|
|
"CREATE TEMPORARY TABLE temp1(`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY)",
|
|
"INSERT INTO temp1 values (1), (2), (3)",
|
|
"INSERT INTO t1 values (1), (2), (3)",
|
|
"INSERT INTO t2 values (1), (2), (3)",
|
|
"CREATE TEMPORARY TABLE temp2 SELECT DISTINCT p.id FROM temp1 p JOIN t1 t ON (t.id = p.id) LEFT JOIN t2 ON (t.id = t2.id) WHERE p.id IS NOT NULL AND @@server_id IS NOT NULL",
|
|
"SELECT * FROM temp2",
|
|
"DROP TABLE t1",
|
|
"DROP TABLE t2",
|
|
NULL
|
|
};
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
TestConnections * Test = new TestConnections(argc, argv);
|
|
Test->connect_maxscale();
|
|
|
|
for (int i = 0; queries[i]; i++)
|
|
{
|
|
Test->set_timeout(30);
|
|
Test->try_query(Test->conn_rwsplit, queries[i]);
|
|
}
|
|
int rval = Test->global_result;
|
|
delete Test;
|
|
return rval;
|
|
}
|