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