## Test galaxy parallel session management behavior --source include/xplugin_preamble.inc --source include/xplugin_create_user.inc ## Test starts here --write_file $MYSQL_TMP_DIR/galaxy_parallel_simple.tmp ## Test data -->sql ## give access of galaxy session. CREATE USER 'x_root'@'galaxy' IDENTIFIED WITH 'mysql_native_password'; GRANT ALL ON *.*TO 'x_root'@'galaxy' WITH GRANT OPTION; FLUSH PRIVILEGES; ## disable the kill log set global galaxyx_enable_galaxy_kill_log = OFF; drop schema if exists xtest; create schema xtest; use xtest; create table mytable (pk int primary key auto_increment, data varchar(100)); delimiter // create procedure result_and_error () begin select 1; select * from invalid_table; end// -->endsql ## switch GSession ID to 2(1 is default session) -->switchsid 2 ## first start new session Mysqlx.Session.NewSession { } ## expect Mysqlx.Ok -->recv Mysqlx.Sql.GalaxyStmtExecute { stmt: "insert into mytable values (DEFAULT, \'one\')" db_name: "xtest" } ## expect Mysqlx.Sql.StmtExecuteOk -->recvresult Mysqlx.Sql.GalaxyStmtExecute { stmt: "insert into mytable values (DEFAULT, \'two\')" } ## expect Mysqlx.Sql.StmtExecuteOk -->recvresult Mysqlx.Sql.GalaxyStmtExecute { stmt: "insert into mytable values (DEFAULT, \'three\')" } ## expect Mysqlx.Sql.StmtExecuteOk -->recvresult Mysqlx.Sql.GalaxyStmtExecute { stmt: "select * from mytable" db_name: "xtest" token: 10000 } ## expect Mysqlx.Sql.StmtExecuteOk -->recvresult ## switch to another session and check behavior -->switchsid 3 Mysqlx.Sql.GalaxyStmtExecute { stmt: "select * from mytable" db_name: "xtest" token: 10000 } ## expect unknown session -->recverror ER_XPLUGIN_ERROR_MSG Mysqlx.Session.NewSession { } ## expect Mysqlx.Ok -->recv Mysqlx.Sql.GalaxyStmtExecute { stmt: "select * from mytable" db_name: "xtest" token: 10000 } ## expect Mysqlx.Sql.StmtExecuteOk -->recvresult ## Try kill not exists. Mysqlx.Session.KillSession { type: CONNECTION x_session_id: 4 } -->recverror ER_XPLUGIN_ERROR_MSG ## finish session Mysqlx.Session.Close { } ## expect Mysqlx.Ok -->recv ## Then enqueue normal query. Mysqlx.Sql.GalaxyStmtExecute { stmt: "select * from mytable" token: 10000 } -->recverror ER_XPLUGIN_ERROR_MSG ## Close session 2. -->switchsid 2 Mysqlx.Session.Close { } ## expect Mysqlx.Ok -->recv ## switch back to default session. -->switchsid 1 ## Cleanup -->sql set global galaxyx_enable_galaxy_kill_log = ON; drop schema if exists xtest; DROP USER 'x_root'@'galaxy'; FLUSH PRIVILEGES; -->endsql EOF --exec $GALAXYXTEST -ux_root --password='' --file=$MYSQL_TMP_DIR/galaxy_parallel_simple.tmp 2>&1 ## Cleanup --remove_file $MYSQL_TMP_DIR/galaxy_parallel_simple.tmp --source include/xplugin_drop_user.inc