/** * Test SEQUENCE related commands * * This test is only enabled when the backend version is 10.3 */ #include "testconnections.h" #include int main(int argc, char** argv) { TestConnections::require_repl_version("10.3"); TestConnections test(argc, argv); test.maxscales->connect(); test.try_query(test.maxscales->conn_rwsplit[0], "CREATE SEQUENCE seq"); std::vector> statements = { {"SELECT NEXT VALUE FOR seq", "1"}, {"SELECT PREVIOUS VALUE FOR seq", "1"}, {"SELECT NEXTVAL(seq)", "2"}, {"SELECT LASTVAL(seq)", "2"}, }; for (auto a : statements) { test.expect(execute_query_check_one(test.maxscales->conn_rwsplit[0], a.first, a.second) == 0, "Expected '%s' for query: %s", a.second, a.first); } test.try_query(test.maxscales->conn_rwsplit[0], "SET SQL_MODE='ORACLE'"); std::vector> oracle_statements = { {"SELECT seq.nextval", "3"}, {"SELECT seq.currval", "3"}, }; for (auto a : oracle_statements) { test.expect(execute_query_check_one(test.maxscales->conn_rwsplit[0], a.first, a.second) == 0, "Expected '%s' for query: %s", a.second, a.first); } test.try_query(test.maxscales->conn_rwsplit[0], "DROP SEQUENCE seq"); test.maxscales->disconnect(); return test.global_result; }