1--source include/restart_mysqld.inc 2--source ../include/xplugin_preamble.inc 3 4call mtr.add_suppression("Plugin mysqlx reported: '1.1: Unhandled message of type 12'"); 5call mtr.add_suppression("Plugin mysqlx reported: '2.1: Unhandled message of type 12'"); 6# wait a little to give time for internal temporary session to die out 7select sleep(1); 8--replace_regex /localhost[:0-9]*/localhost/ /Execute/Query/ 9SELECT `user`,`host`,`db`,`command`,`state`,`info` FROM INFORMATION_SCHEMA.PROCESSLIST WHERE `state` != 'cleaning up'; 10 11## Test starts here 12--write_file $MYSQL_TMP_DIR/session_reset.tmp 13 14#####Basic scenario: 15#1) Reset session 16Mysqlx.Session.Reset { 17} 18-->recv 19 20#2) Log back 21-->login root 22 23#3) Execute query 24Mysqlx.Sql.StmtExecute { 25 stmt: "select 1.1" 26} 27-->recvresult 28 29##### Check the pipelining: 30#1) Pipeline some queries 31Mysqlx.Sql.StmtExecute { 32 stmt: "select 2.1" 33} 34 35Mysqlx.Sql.StmtExecute { 36 stmt: "select 2.2" 37} 38 39 40#2) Reset session 41Mysqlx.Session.Reset { 42} 43 44 45#3) Receive messages from queries preceeding Reset 46-->recvresult 47-->recvresult 48-->recv 49 50-->login root 51 52 53######## Expect error and server disconnect trying to execute query after the session reset 54Mysqlx.Session.Reset { 55} 56 57-->recv 58 59Mysqlx.Sql.StmtExecute { 60 stmt: "select 3.1" 61} 62 63-->recv 64 65 66##### Ensure that a session after reset is not the same session as from before the reset 67-->newsession foo 68 69-->sql 70set @secret = 12345; 71-->endsql 72 73Mysqlx.Session.Reset { 74} 75-->recv 76-->login root 77 78-->sql 79select IF(@secret is NULL, 'OK', 'FAIL'); 80-->endsql 81-->closesession 82 83## 84-->closesession abort 85EOF 86 87--write_file $MYSQL_TMP_DIR/session_reset_single_frame.tmp 88 89-->binparse %SEL1% Mysqlx.Sql.StmtExecute { 90 stmt: "select 2.1" 91} 92 93-->binparse %SEL2% Mysqlx.Sql.StmtExecute { 94 stmt: "select 2.2" 95} 96 97-->binparse %RST% Mysqlx.Session.Reset { 98} 99 100-->binsend %SEL1%%RST%%SEL2% 101 102-->recvresult 103-->recv 104-->recv 105-->closesession abort 106 107 108EOF 109 110 111 112--exec $MYSQLXTEST -uroot --password='' --file=$MYSQL_TMP_DIR/session_reset.tmp 2>&1 113--remove_file $MYSQL_TMP_DIR/session_reset.tmp 114 115--exec $MYSQLXTEST -uroot --password='' --file=$MYSQL_TMP_DIR/session_reset_single_frame.tmp 2>&1 116--remove_file $MYSQL_TMP_DIR/session_reset_single_frame.tmp 117 118 119## Postamble 120uninstall plugin mysqlx; 121