polardbxengine/mysql-test/suite/x/r/admin_xkill.result

1494 lines
45 KiB
Plaintext

call mtr.add_suppression("Plugin mysqlx reported: 'Unhandled network error: Bad file descriptor'");
create user sslcon@localhost identified by 'sslcon';
grant all on *.* to sslcon@localhost;
RUN create user abc@localhost identified by 'abc'
0 rows affected
RUN create user xplugin@localhost identified by 'xplugin'
0 rows affected
RUN grant all on *.* to xplugin@localhost
0 rows affected
RUN create user process@localhost identified by 'process'
0 rows affected
RUN grant process on *.* to process@localhost
0 rows affected
RUN create user expire@localhost identified by 'expire'
0 rows affected
RUN grant all on *.* to expire@localhost
0 rows affected
RUN alter user expire@localhost password expire
0 rows affected
RUN select sleep(1)
sleep(1)
0
0 rows affected
Test data
client_id user host sql_session
1 x_root localhost $SESSION
command ok
expect Mysqlx_stmt_list_clients=1 and Mysqlx_stmt_kill_client=0
Verify [Status variable "Mysqlx_stmt_kill_client" needs to have a value of 0]
Verify [Status variable "Mysqlx_stmt_list_clients" needs to have a value of 1]
Verify [Status variable "Mysqlx_sessions" needs to have a value of 1]
create and activate new session
connecting...
active session is now 'aux'
client_id user host
1 x_root localhost
2 x_root localhost
command ok
expect Mysqlx_stmt_list_clients=1 and Mysqlx_stmt_kill_client=0 even with another new x_root session
Verify [Status variable "Mysqlx_stmt_kill_client" needs to have a value of 0]
Verify [Status variable "Mysqlx_stmt_list_clients" needs to have a value of 1]
Verify [Status variable "Mysqlx_sessions" needs to have a value of 2]
switch back to default session
switched to session default
client_id user host
1 x_root localhost
2 x_root localhost
command ok
expect Mysqlx_stmt_list_clients=2 and Mysqlx_stmt_kill_client=0 with default x_root session where list_clients already executed
Verify [Status variable "Mysqlx_stmt_kill_client" needs to have a value of 0]
Verify [Status variable "Mysqlx_stmt_list_clients" needs to have a value of 2]
Verify [Status variable "Mysqlx_sessions" needs to have a value of 2]
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 2]
command ok
Verify [Status variable "Mysqlx_sessions" needs to have a value of 1]
client_id user host
1 x_root localhost
command ok
expect Mysqlx_stmt_list_clients=3 and Mysqlx_stmt_kill_client=1 with default x_root session where list_clients executed 3 times and kill_client once
Verify [Status variable "Mysqlx_stmt_kill_client" needs to have a value of 1]
Verify [Status variable "Mysqlx_stmt_list_clients" needs to have a value of 3]
Verify [Status variable "Mysqlx_sessions" needs to have a value of 1]
create and activate new session abc
expect only abc user session id
connecting...
active session is now 'abc'
client_id user host
3 abc localhost
command ok
killing x_root user session with unprivileged user 'abc' which should be unsuccessful
RUN [stmtadmin kill_client 1]
Got expected error: You are not owner of thread (code 1095)
expect Mysqlx_stmt_list_clients=1 and Mysqlx_stmt_kill_client=1 with session abc where list_clients and kill_client executed once
Verify [Status variable "Mysqlx_stmt_kill_client" needs to have a value of 1]
Verify [Status variable "Mysqlx_stmt_list_clients" needs to have a value of 1]
Verify [Status variable "Mysqlx_sessions" needs to have a value of 2]
RUN select user(),current_user()
user() current_user()
abc@localhost abc@localhost
0 rows affected
RUN show grants
Grants for abc@localhost
GRANT USAGE ON *.* TO `abc`@`localhost`
0 rows affected
open another session of abc user and kill first session of abc user,which should be successful
connecting...
active session is now 'abc1'
client_id user host
3 abc localhost
4 abc localhost
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 3]
command ok
Verify [Status variable "Mysqlx_sessions" needs to have a value of 2]
client_id user host
4 abc localhost
command ok
expect Mysqlx_stmt_list_clients=2 and Mysqlx_stmt_kill_client=1 with new session abc where list_clients executed twice and kill_client executed once
Verify [Status variable "Mysqlx_stmt_kill_client" needs to have a value of 1]
Verify [Status variable "Mysqlx_stmt_list_clients" needs to have a value of 2]
Verify [Status variable "Mysqlx_sessions" needs to have a value of 2]
RUN select user(),current_user()
user() current_user()
abc@localhost abc@localhost
0 rows affected
RUN show grants
Grants for abc@localhost
GRANT USAGE ON *.* TO `abc`@`localhost`
0 rows affected
killing abc user session with its own session 'abc' which should be successful
expect right error instead of End of File
send Mysqlx.Sql.StmtExecute {
stmt: "kill_client"
args {
type: SCALAR
scalar {
type: V_UINT
v_unsigned_int: 4
}
}
namespace: "xplugin"
}
Server disconnected
closing session abc1
switched to session default
Verify [Status variable "Mysqlx_sessions" needs to have a value of 1]
switch back to default session
switched to session default
client_id user host
1 x_root localhost
command ok
expect Mysqlx_stmt_list_clients=4 and Mysqlx_stmt_kill_client=1 with default x_root session where list_clients executed 4 times and kill_client once
Verify [Status variable "Mysqlx_stmt_kill_client" needs to have a value of 1]
Verify [Status variable "Mysqlx_stmt_list_clients" needs to have a value of 4]
Verify [Status variable "Mysqlx_sessions" needs to have a value of 1]
RUN select user(),current_user()
user() current_user()
x_root@localhost x_root@localhost
0 rows affected
RUN show grants
Grants for x_root@localhost
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `x_root`@`localhost` WITH GRANT OPTION
GRANT APPLICATION_PASSWORD_ADMIN,AUDIT_ADMIN,BACKUP_ADMIN,BINLOG_ADMIN,BINLOG_ENCRYPTION_ADMIN,CLONE_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,GROUP_REPLICATION_ADMIN,INNODB_REDO_LOG_ARCHIVE,PERSIST_RO_VARIABLES_ADMIN,REPLICATION_APPLIER,REPLICATION_SLAVE_ADMIN,RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER,ROLE_ADMIN,SERVICE_CONNECTION_ADMIN,SESSION_VARIABLES_ADMIN,SET_USER_ID,SYSTEM_USER,SYSTEM_VARIABLES_ADMIN,TABLE_ENCRYPTION_ADMIN,XA_RECOVER_ADMIN ON *.* TO `x_root`@`localhost` WITH GRANT OPTION
0 rows affected
open process only privileged user seession and kill x_root user session,expect error "You are not owner of thread"
connecting...
active session is now 'process'
client_id user host
5 process localhost
command ok
RUN [stmtadmin kill_client 1]
Got expected error: You are not owner of thread (code 1095)
Verify [Status variable "Mysqlx_sessions" needs to have a value of 2]
checking list of clients after x_root user session killed by xplugin user
client_id user host
5 process localhost
command ok
expect Mysqlx_stmt_list_clients=2 and Mysqlx_stmt_kill_client=1 with process user where list_clients executed 2 times and kill_client once
RUN show status like 'Mysqlx_stmt%client%'
Variable_name Value
Mysqlx_stmt_kill_client 1
Mysqlx_stmt_list_clients 2
0 rows affected
RUN select user(),current_user()
user() current_user()
process@localhost process@localhost
0 rows affected
RUN show grants
Grants for process@localhost
GRANT PROCESS ON *.* TO `process`@`localhost`
0 rows affected
open privileged user seession and kill x_root user session,expect success
connecting...
active session is now 'xplugin'
client_id user host
1 x_root localhost
5 process localhost
6 xplugin localhost
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 1]
command ok
Verify [Status variable "Mysqlx_sessions" needs to have a value of 2]
checking list of clients after x_root user session killed by xplugin user
client_id user host
5 process localhost
6 xplugin localhost
command ok
expect Mysqlx_stmt_list_clients=2 and Mysqlx_stmt_kill_client=1 with xplugin user where list_clients executed 2 times and kill_client once
RUN show status like 'Mysqlx_stmt%client%'
Variable_name Value
Mysqlx_stmt_kill_client 1
Mysqlx_stmt_list_clients 2
0 rows affected
RUN select user(),current_user()
user() current_user()
xplugin@localhost xplugin@localhost
0 rows affected
RUN show grants
Grants for xplugin@localhost
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `xplugin`@`localhost`
GRANT APPLICATION_PASSWORD_ADMIN,AUDIT_ADMIN,BACKUP_ADMIN,BINLOG_ADMIN,BINLOG_ENCRYPTION_ADMIN,CLONE_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,GROUP_REPLICATION_ADMIN,INNODB_REDO_LOG_ARCHIVE,PERSIST_RO_VARIABLES_ADMIN,REPLICATION_APPLIER,REPLICATION_SLAVE_ADMIN,RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER,ROLE_ADMIN,SERVICE_CONNECTION_ADMIN,SESSION_VARIABLES_ADMIN,SET_USER_ID,SYSTEM_USER,SYSTEM_VARIABLES_ADMIN,TABLE_ENCRYPTION_ADMIN,XA_RECOVER_ADMIN ON *.* TO `xplugin`@`localhost`
0 rows affected
Cleanup
RUN drop schema if exists xtest
0 rows affected
closing session xplugin
Mysqlx.Ok {
msg: "bye!"
}
ok
client_id user host
7 x_root localhost
command ok
expect error while killing client with data type other than usinged int
try killing xprotocol session with valid sql_session id once xprotocol connetion opened with kill_client,expect error
RUN [stmtadmin kill_client 11]
Got expected error: Unknown MySQLx client id 11 (code 1094)
send Mysqlx.Sql.StmtExecute {
stmt: "kill_client"
args {
type: SCALAR
scalar {
type: V_STRING
v_string {
value: "1"
}
}
}
namespace: "xplugin"
}
Got expected error: Invalid type for argument 'id' at #1 (should be unsigned int) (code 5016)
send Mysqlx.Sql.StmtExecute {
stmt: "kill_client"
args {
type: SCALAR
scalar {
type: V_BOOL
v_bool: true
}
}
namespace: "xplugin"
}
Got expected error: Invalid type for argument 'id' at #1 (should be unsigned int) (code 5016)
send Mysqlx.Sql.StmtExecute {
stmt: "kill_client"
args {
type: SCALAR
scalar {
type: V_BOOL
v_bool: false
}
}
namespace: "xplugin"
}
Got expected error: Invalid type for argument 'id' at #1 (should be unsigned int) (code 5016)
send Mysqlx.Sql.StmtExecute {
stmt: "kill_client"
args {
type: SCALAR
scalar {
type: V_BOOL
v_bool: false
}
}
namespace: "xplugin"
}
Got expected error: Invalid type for argument 'id' at #1 (should be unsigned int) (code 5016)
send Mysqlx.Sql.StmtExecute {
stmt: "kill_client"
args {
type: SCALAR
scalar {
type: V_BOOL
v_bool: true
}
}
namespace: "xplugin"
}
Got expected error: Invalid type for argument 'id' at #1 (should be unsigned int) (code 5016)
send Mysqlx.Sql.StmtExecute {
stmt: "kill_client"
args {
type: SCALAR
scalar {
type: V_FLOAT
v_float: 1
}
}
namespace: "xplugin"
}
Got expected error: Invalid type for argument 'id' at #1 (should be unsigned int) (code 5016)
send Mysqlx.Sql.StmtExecute {
stmt: "kill_client"
args {
type: SCALAR
scalar {
type: V_DOUBLE
v_double: 1
}
}
namespace: "xplugin"
}
Got expected error: Invalid type for argument 'id' at #1 (should be unsigned int) (code 5016)
send Mysqlx.Sql.StmtExecute {
stmt: "kill_client"
args {
type: SCALAR
scalar {
type: V_NULL
}
}
namespace: "xplugin"
}
Got expected error: Invalid type for argument 'id' at #1 (should be unsigned int) (code 5016)
send Mysqlx.Sql.StmtExecute {
stmt: "kill_client"
args {
type: SCALAR
scalar {
type: V_OCTETS
v_octets {
value: "1"
}
}
}
namespace: "xplugin"
}
Got expected error: Invalid type for argument 'id' at #1 (should be unsigned int) (code 5016)
send Mysqlx.Sql.StmtExecute {
stmt: "kill_client"
args {
type: SCALAR
scalar {
type: V_SINT
v_signed_int: -1
}
}
namespace: "xplugin"
}
Got expected error: Invalid type for argument 'id' at #1 (should be unsigned int) (code 5016)
expect Mysqlx_stmt_list_clients=1 and Mysqlx_stmt_kill_client=11 with x_root user even though kill_client returns errors
Verify [Status variable "Mysqlx_stmt_kill_client" needs to have a value of 11]
Verify [Status variable "Mysqlx_stmt_list_clients" needs to have a value of 1]
Verify [Status variable "Mysqlx_sessions" needs to have a value of 1]
Mysqlx.Ok {
msg: "bye!"
}
ok
NOTICE: Account password expired
expect error if list_clients and kill_client executed from password expired user session
RUN show processlist
While executing show processlist:
Got expected error: You must reset your password using ALTER USER statement before executing this statement. (code 1820)
send Mysqlx.Sql.StmtExecute {
stmt: "list_clients"
namespace: "xplugin"
}
Got expected error: You must reset your password using ALTER USER statement before executing this statement. (code 1820)
RUN [stmtadmin kill_client 8]
Got expected error: You must reset your password using ALTER USER statement before executing this statement. (code 1820)
Mysqlx.Ok {
msg: "bye!"
}
ok
checking list_clients and kill_client with mixed case, expect success as these commands are case insensitive
send Mysqlx.Sql.StmtExecute {
stmt: "LIST_clients"
namespace: "xplugin"
}
client_id user host
9 x_root localhost
command ok
Namespace 'xplugin' is deprecated, please use 'mysqlx' instead
send Mysqlx.Sql.StmtExecute {
stmt: "kill_CLIENT"
args {
type: SCALAR
scalar {
type: V_UINT
v_unsigned_int: 998
}
}
namespace: "xplugin"
}
Got expected error: Unknown MySQLx client id 998 (code 1094)
expect Mysqlx_stmt_list_clients=1 and Mysqlx_stmt_kill_client=1 with x_root user when these commads executed with mixed case
Verify [Status variable "Mysqlx_stmt_kill_client" needs to have a value of 1]
Verify [Status variable "Mysqlx_stmt_list_clients" needs to have a value of 1]
Verify [Status variable "Mysqlx_sessions" needs to have a value of 1]
Mysqlx.Ok {
msg: "bye!"
}
ok
checking list_clients and kill_client with default 100 connections, expect success for both list and kill
RUN set @@global.mysqlx_max_connections=60
0 rows affected
RUN create user xconnection1@localhost identified by 'xconnection1'
0 rows affected
RUN create user xconnection2@localhost identified by 'xconnection2'
0 rows affected
RUN create user xconnection3@localhost identified by 'xconnection3'
0 rows affected
RUN create user xconnection4@localhost identified by 'xconnection4'
0 rows affected
RUN create user xconnection5@localhost identified by 'xconnection5'
0 rows affected
RUN create user xconnection6@localhost identified by 'xconnection6'
0 rows affected
RUN create user xconnection7@localhost identified by 'xconnection7'
0 rows affected
RUN create user xconnection8@localhost identified by 'xconnection8'
0 rows affected
RUN create user xconnection9@localhost identified by 'xconnection9'
0 rows affected
RUN create user xconnection10@localhost identified by 'xconnection10'
0 rows affected
RUN create user xconnection11@localhost identified by 'xconnection11'
0 rows affected
RUN create user xconnection12@localhost identified by 'xconnection12'
0 rows affected
RUN create user xconnection13@localhost identified by 'xconnection13'
0 rows affected
RUN create user xconnection14@localhost identified by 'xconnection14'
0 rows affected
RUN create user xconnection15@localhost identified by 'xconnection15'
0 rows affected
RUN create user xconnection16@localhost identified by 'xconnection16'
0 rows affected
RUN create user xconnection17@localhost identified by 'xconnection17'
0 rows affected
RUN create user xconnection18@localhost identified by 'xconnection18'
0 rows affected
RUN create user xconnection19@localhost identified by 'xconnection19'
0 rows affected
RUN create user xconnection20@localhost identified by 'xconnection20'
0 rows affected
RUN create user xconnection21@localhost identified by 'xconnection21'
0 rows affected
RUN create user xconnection22@localhost identified by 'xconnection22'
0 rows affected
RUN create user xconnection23@localhost identified by 'xconnection23'
0 rows affected
RUN create user xconnection24@localhost identified by 'xconnection24'
0 rows affected
RUN create user xconnection25@localhost identified by 'xconnection25'
0 rows affected
RUN create user xconnection26@localhost identified by 'xconnection26'
0 rows affected
RUN create user xconnection27@localhost identified by 'xconnection27'
0 rows affected
RUN create user xconnection28@localhost identified by 'xconnection28'
0 rows affected
RUN create user xconnection29@localhost identified by 'xconnection29'
0 rows affected
RUN create user xconnection30@localhost identified by 'xconnection30'
0 rows affected
RUN create user xconnection31@localhost identified by 'xconnection31'
0 rows affected
RUN create user xconnection32@localhost identified by 'xconnection32'
0 rows affected
RUN create user xconnection33@localhost identified by 'xconnection33'
0 rows affected
RUN create user xconnection34@localhost identified by 'xconnection34'
0 rows affected
RUN create user xconnection35@localhost identified by 'xconnection35'
0 rows affected
RUN create user xconnection36@localhost identified by 'xconnection36'
0 rows affected
RUN create user xconnection37@localhost identified by 'xconnection37'
0 rows affected
RUN create user xconnection38@localhost identified by 'xconnection38'
0 rows affected
RUN create user xconnection39@localhost identified by 'xconnection39'
0 rows affected
RUN create user xconnection40@localhost identified by 'xconnection40'
0 rows affected
RUN create user xconnection41@localhost identified by 'xconnection41'
0 rows affected
RUN create user xconnection42@localhost identified by 'xconnection42'
0 rows affected
RUN create user xconnection43@localhost identified by 'xconnection43'
0 rows affected
RUN create user xconnection44@localhost identified by 'xconnection44'
0 rows affected
RUN create user xconnection45@localhost identified by 'xconnection45'
0 rows affected
RUN create user xconnection46@localhost identified by 'xconnection46'
0 rows affected
RUN create user xconnection47@localhost identified by 'xconnection47'
0 rows affected
RUN create user xconnection48@localhost identified by 'xconnection48'
0 rows affected
RUN create user xconnection49@localhost identified by 'xconnection49'
0 rows affected
RUN create user xconnection50@localhost identified by 'xconnection50'
0 rows affected
Test data
client_id user host sql_session
10 x_root localhost $SESSION
command ok
expect Mysqlx_stmt_list_clients=1 and Mysqlx_stmt_kill_client=0
RUN show status like 'Mysqlx_stmt%client%'
Variable_name Value
Mysqlx_stmt_kill_client 0
Mysqlx_stmt_list_clients 1
0 rows affected
create and activate new session xconnection1
connecting...
active session is now 'xconnection1'
connecting...
active session is now 'xconnection2'
connecting...
active session is now 'xconnection3'
connecting...
active session is now 'xconnection4'
connecting...
active session is now 'xconnection5'
connecting...
active session is now 'xconnection6'
connecting...
active session is now 'xconnection7'
connecting...
active session is now 'xconnection8'
connecting...
active session is now 'xconnection9'
connecting...
active session is now 'xconnection10'
connecting...
active session is now 'xconnection11'
connecting...
active session is now 'xconnection12'
connecting...
active session is now 'xconnection13'
connecting...
active session is now 'xconnection14'
connecting...
active session is now 'xconnection15'
connecting...
active session is now 'xconnection16'
connecting...
active session is now 'xconnection17'
connecting...
active session is now 'xconnection18'
connecting...
active session is now 'xconnection19'
connecting...
active session is now 'xconnection20'
connecting...
active session is now 'xconnection21'
connecting...
active session is now 'xconnection22'
connecting...
active session is now 'xconnection23'
connecting...
active session is now 'xconnection24'
connecting...
active session is now 'xconnection25'
connecting...
active session is now 'xconnection26'
connecting...
active session is now 'xconnection27'
connecting...
active session is now 'xconnection28'
connecting...
active session is now 'xconnection29'
connecting...
active session is now 'xconnection30'
connecting...
active session is now 'xconnection31'
connecting...
active session is now 'xconnection32'
connecting...
active session is now 'xconnection33'
connecting...
active session is now 'xconnection34'
connecting...
active session is now 'xconnection35'
connecting...
active session is now 'xconnection36'
connecting...
active session is now 'xconnection37'
connecting...
active session is now 'xconnection38'
connecting...
active session is now 'xconnection39'
connecting...
active session is now 'xconnection40'
connecting...
active session is now 'xconnection41'
connecting...
active session is now 'xconnection42'
connecting...
active session is now 'xconnection43'
connecting...
active session is now 'xconnection44'
connecting...
active session is now 'xconnection45'
connecting...
active session is now 'xconnection46'
connecting...
active session is now 'xconnection47'
connecting...
active session is now 'xconnection48'
connecting...
active session is now 'xconnection49'
connecting...
active session is now 'xconnection50'
client_id user host
60 xconnection50 localhost
command ok
switched to session default
list all connected clients
client_id user host
10 x_root localhost
11 xconnection1 localhost
12 xconnection2 localhost
13 xconnection3 localhost
14 xconnection4 localhost
15 xconnection5 localhost
16 xconnection6 localhost
17 xconnection7 localhost
18 xconnection8 localhost
19 xconnection9 localhost
20 xconnection10 localhost
21 xconnection11 localhost
22 xconnection12 localhost
23 xconnection13 localhost
24 xconnection14 localhost
25 xconnection15 localhost
26 xconnection16 localhost
27 xconnection17 localhost
28 xconnection18 localhost
29 xconnection19 localhost
30 xconnection20 localhost
31 xconnection21 localhost
32 xconnection22 localhost
33 xconnection23 localhost
34 xconnection24 localhost
35 xconnection25 localhost
36 xconnection26 localhost
37 xconnection27 localhost
38 xconnection28 localhost
39 xconnection29 localhost
40 xconnection30 localhost
41 xconnection31 localhost
42 xconnection32 localhost
43 xconnection33 localhost
44 xconnection34 localhost
45 xconnection35 localhost
46 xconnection36 localhost
47 xconnection37 localhost
48 xconnection38 localhost
49 xconnection39 localhost
50 xconnection40 localhost
51 xconnection41 localhost
52 xconnection42 localhost
53 xconnection43 localhost
54 xconnection44 localhost
55 xconnection45 localhost
56 xconnection46 localhost
57 xconnection47 localhost
58 xconnection48 localhost
59 xconnection49 localhost
60 xconnection50 localhost
command ok
expect Mysqlx_stmt_list_clients=2 and Mysqlx_stmt_kill_client=0
Verify [Status variable "Mysqlx_stmt_kill_client" needs to have a value of 0]
Verify [Status variable "Mysqlx_stmt_list_clients" needs to have a value of 2]
Verify [Status variable "Mysqlx_sessions" needs to have a value of 51]
killing all newly connected clients except x_root,one by one
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 11]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 12]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 13]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 14]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 15]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 16]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 17]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 18]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 19]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 20]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 21]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 22]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 23]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 24]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 25]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 26]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 27]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 28]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 29]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 30]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 31]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 32]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 33]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 34]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 35]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 36]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 37]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 38]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 39]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 40]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 41]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 42]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 43]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 44]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 45]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 46]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 47]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 48]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 49]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 50]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 51]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 52]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 53]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 54]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 55]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 56]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 57]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 58]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 59]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 60]
command ok
Verify [Status variable "Mysqlx_sessions" needs to have a value of 1]
client_id user host
10 x_root localhost
command ok
expect Mysqlx_stmt_list_clients=3 and Mysqlx_stmt_kill_client=50
Verify [Status variable "Mysqlx_stmt_kill_client" needs to have a value of 50]
Verify [Status variable "Mysqlx_stmt_list_clients" needs to have a value of 3]
Verify [Status variable "Mysqlx_sessions" needs to have a value of 1]
Verify [Status variable "Mysqlx_sessions_accepted" needs to have a value of 60]
Verify [Status variable "Mysqlx_sessions_closed" needs to have a value of 59]
Verify [Status variable "Mysqlx_sessions_fatal_error" needs to have a value of 0]
Verify [Status variable "Mysqlx_sessions_killed" needs to have a value of 54]
Verify [Status variable "Mysqlx_sessions_rejected" needs to have a value of 0]
RUN drop user xconnection1@localhost
0 rows affected
RUN drop user xconnection2@localhost
0 rows affected
RUN drop user xconnection3@localhost
0 rows affected
RUN drop user xconnection4@localhost
0 rows affected
RUN drop user xconnection5@localhost
0 rows affected
RUN drop user xconnection6@localhost
0 rows affected
RUN drop user xconnection7@localhost
0 rows affected
RUN drop user xconnection8@localhost
0 rows affected
RUN drop user xconnection9@localhost
0 rows affected
RUN drop user xconnection10@localhost
0 rows affected
RUN drop user xconnection11@localhost
0 rows affected
RUN drop user xconnection12@localhost
0 rows affected
RUN drop user xconnection13@localhost
0 rows affected
RUN drop user xconnection14@localhost
0 rows affected
RUN drop user xconnection15@localhost
0 rows affected
RUN drop user xconnection16@localhost
0 rows affected
RUN drop user xconnection17@localhost
0 rows affected
RUN drop user xconnection18@localhost
0 rows affected
RUN drop user xconnection19@localhost
0 rows affected
RUN drop user xconnection20@localhost
0 rows affected
RUN drop user xconnection21@localhost
0 rows affected
RUN drop user xconnection22@localhost
0 rows affected
RUN drop user xconnection23@localhost
0 rows affected
RUN drop user xconnection24@localhost
0 rows affected
RUN drop user xconnection25@localhost
0 rows affected
RUN drop user xconnection26@localhost
0 rows affected
RUN drop user xconnection27@localhost
0 rows affected
RUN drop user xconnection28@localhost
0 rows affected
RUN drop user xconnection29@localhost
0 rows affected
RUN drop user xconnection30@localhost
0 rows affected
RUN drop user xconnection31@localhost
0 rows affected
RUN drop user xconnection32@localhost
0 rows affected
RUN drop user xconnection33@localhost
0 rows affected
RUN drop user xconnection34@localhost
0 rows affected
RUN drop user xconnection35@localhost
0 rows affected
RUN drop user xconnection36@localhost
0 rows affected
RUN drop user xconnection37@localhost
0 rows affected
RUN drop user xconnection38@localhost
0 rows affected
RUN drop user xconnection39@localhost
0 rows affected
RUN drop user xconnection40@localhost
0 rows affected
RUN drop user xconnection41@localhost
0 rows affected
RUN drop user xconnection42@localhost
0 rows affected
RUN drop user xconnection43@localhost
0 rows affected
RUN drop user xconnection44@localhost
0 rows affected
RUN drop user xconnection45@localhost
0 rows affected
RUN drop user xconnection46@localhost
0 rows affected
RUN drop user xconnection47@localhost
0 rows affected
RUN drop user xconnection48@localhost
0 rows affected
RUN drop user xconnection49@localhost
0 rows affected
RUN drop user xconnection50@localhost
0 rows affected
Mysqlx.Ok {
msg: "bye!"
}
ok
execute list_clients,kill_client with sql namespace,expect error
change result file once error messages are fixed
send Mysqlx.Sql.StmtExecute {
stmt: "list_clients"
namespace: "sql"
}
expect Mysqlx.Sql.StmtExecuteOk
Got expected error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'list_clients' at line 1 (code 1064)
send Mysqlx.Sql.StmtExecute {
stmt: "kill_client"
args {
type: SCALAR
scalar {
type: V_UINT
v_unsigned_int: 11
}
}
namespace: "sql"
}
expect Mysqlx.Sql.StmtExecuteOk
Got expected error: Too many arguments (code 5015)
send Mysqlx.Sql.StmtExecute {
stmt: "kill_client"
args {
type: SCALAR
scalar {
type: V_UINT
v_unsigned_int: 11
}
}
namespace: ""
}
expect Mysqlx.Sql.StmtExecuteOk
Got expected error: Unknown namespace (code 5162)
send Mysqlx.Sql.StmtExecute {
stmt: "kill_client"
args {
type: SCALAR
scalar {
type: V_UINT
v_unsigned_int: 11
}
}
namespace: "invalid"
}
expect Mysqlx.Sql.StmtExecuteOk
Got expected error: Unknown namespace invalid (code 5162)
expect Mysqlx_stmt_list_clients=0 and Mysqlx_stmt_kill_client=0 as these are not executed on right namespace
in main, line 62:ERROR: Undefined macro Assert_status_variable
in main, line 63:ERROR: Undefined macro Assert_status_variable
in main, line 64:ERROR: Undefined macro Assert_status_variable
Mysqlx.Ok {
msg: "bye!"
}
ok
open xconnection with ssl and kill,expect success
RUN create user con1@localhost identified by 'con1'
0 rows affected
RUN create user con2@localhost identified by 'con2'
0 rows affected
RUN set @@global.mysqlx_max_connections=3
0 rows affected
Test data
client_id user host
62 sslcon localhost
command ok
expect Mysqlx_stmt_list_clients=1 and Mysqlx_stmt_kill_client=0
Verify [Status variable "Mysqlx_stmt_kill_client" needs to have a value of 0]
Verify [Status variable "Mysqlx_stmt_list_clients" needs to have a value of 1]
Verify [Status variable "Mysqlx_sessions" needs to have a value of 1]
create and activate new session con1
connecting...
active session is now 'con1'
client_id user host
63 con1 localhost
command ok
expect Mysqlx_stmt_list_clients=1 and Mysqlx_stmt_kill_client=0
Verify [Status variable "Mysqlx_stmt_kill_client" needs to have a value of 0]
Verify [Status variable "Mysqlx_stmt_list_clients" needs to have a value of 1]
Verify [Status variable "Mysqlx_sessions" needs to have a value of 2]
open 3rd xprotocol connection where 2 sessions already opened
connecting...
active session is now 'con2'
expect Mysqlx_stmt_list_clients=0 and Mysqlx_stmt_kill_client=0
Verify [Status variable "Mysqlx_stmt_kill_client" needs to have a value of 0]
Verify [Status variable "Mysqlx_stmt_list_clients" needs to have a value of 0]
Verify [Status variable "Mysqlx_sessions" needs to have a value of 3]
switched to session default
client_id user host
62 sslcon localhost
63 con1 localhost
64 con2 localhost
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 63]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 64]
command ok
Verify [Status variable "Mysqlx_sessions" needs to have a value of 1]
client_id user host
62 sslcon localhost
command ok
expect Mysqlx_stmt_list_clients=3 and Mysqlx_stmt_kill_client=2
RUN drop user con1@localhost
0 rows affected
RUN drop user con2@localhost
0 rows affected
Verify [Status variable "Mysqlx_stmt_kill_client" needs to have a value of 2]
Verify [Status variable "Mysqlx_stmt_list_clients" needs to have a value of 3]
Verify [Status variable "Mysqlx_sessions" needs to have a value of 1]
Mysqlx.Ok {
msg: "bye!"
}
ok
open xconnection with ssl x_root user kill,expect success
RUN create user con1@localhost identified by 'con1'
0 rows affected
RUN create user con2@localhost identified by 'con2'
0 rows affected
RUN set @@global.mysqlx_max_connections=3
0 rows affected
Test data
client_id user host
65 x_root localhost
command ok
create and activate new session con1
connecting...
active session is now 'con1 con1 con1'
client_id user host
65 x_root localhost
66 x_root localhost
command ok
open 3rd xprotocol connection where 2 sessions already opened
connecting...
active session is now 'con2 con2 con2'
switched to session default
client_id user host
65 x_root localhost
66 x_root localhost
67 x_root localhost
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 66]
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 67]
command ok
Verify [Status variable "Mysqlx_sessions" needs to have a value of 1]
client_id user host
65 x_root localhost
command ok
RUN drop user con1@localhost
0 rows affected
RUN drop user con2@localhost
0 rows affected
Mysqlx.Ok {
msg: "bye!"
}
ok
show status like 'Mysqlx_stmt%client%';
Variable_name Value
Mysqlx_stmt_kill_client 72
Mysqlx_stmt_list_clients 26
# restart:
drop user abc@localhost;
drop user xplugin@localhost;
drop user process@localhost;
drop user expire@localhost;
set @@global.mysqlx_max_connections=100;
show status like 'Mysqlx_stmt%client%';
Variable_name Value
Mysqlx_stmt_kill_client 0
Mysqlx_stmt_list_clients 0
select sleep(0.5);
sleep(0.5)
0
RUN create user abc@localhost identified by 'abc'
0 rows affected
RUN create user xplugin@localhost identified by 'xplugin'
0 rows affected
RUN grant all on *.* to xplugin@localhost
0 rows affected
RUN create user process@localhost identified by 'process'
0 rows affected
RUN grant process on *.* to process@localhost
0 rows affected
RUN create user expire@localhost identified by 'expire'
0 rows affected
RUN grant all on *.* to expire@localhost
0 rows affected
RUN alter user expire@localhost password expire
0 rows affected
Test data
client_id user host
1 x_root localhost
command ok
expect Mysqlx_stmt_list_clients=1 and Mysqlx_stmt_kill_client=0
Verify [Status variable "Mysqlx_stmt_kill_client" needs to have a value of 0]
Verify [Status variable "Mysqlx_stmt_list_clients" needs to have a value of 1]
Verify [Status variable "Mysqlx_sessions" needs to have a value of 1]
create and activate new session
connecting...
active session is now 'aux'
client_id user host
1 x_root localhost
2 x_root localhost
command ok
expect Mysqlx_stmt_list_clients=1 and Mysqlx_stmt_kill_client=0 even with another new x_root session
Verify [Status variable "Mysqlx_stmt_kill_client" needs to have a value of 0]
Verify [Status variable "Mysqlx_stmt_list_clients" needs to have a value of 1]
Verify [Status variable "Mysqlx_sessions" needs to have a value of 2]
switch back to default session
switched to session default
client_id user host
1 x_root localhost
2 x_root localhost
command ok
expect Mysqlx_stmt_list_clients=2 and Mysqlx_stmt_kill_client=0 with default x_root session where list_clients already executed
Verify [Status variable "Mysqlx_stmt_kill_client" needs to have a value of 0]
Verify [Status variable "Mysqlx_stmt_list_clients" needs to have a value of 2]
Verify [Status variable "Mysqlx_sessions" needs to have a value of 2]
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 2]
command ok
Verify [Status variable "Mysqlx_sessions" needs to have a value of 1]
client_id user host
1 x_root localhost
command ok
expect Mysqlx_stmt_list_clients=3 and Mysqlx_stmt_kill_client=1 with default x_root session where list_clients executed 3 times and kill_client once
Verify [Status variable "Mysqlx_stmt_kill_client" needs to have a value of 1]
Verify [Status variable "Mysqlx_stmt_list_clients" needs to have a value of 3]
Verify [Status variable "Mysqlx_sessions" needs to have a value of 1]
create and activate new session abc
expect only abc user session id
connecting...
active session is now 'abc'
client_id user host
3 abc localhost
command ok
killing x_root user session with unprivileged user 'abc' which should be unsuccessful
RUN [stmtadmin kill_client 1]
Got expected error: You are not owner of thread (code 1095)
expect ERROR: SELECT command denied to user 'abc'@'localhost' for table 'session_status' (code 1142) for show status command
Verify [Status variable "Mysqlx_stmt_kill_client" needs to have a value of 1]
Verify [Status variable "Mysqlx_stmt_list_clients" needs to have a value of 1]
Verify [Status variable "Mysqlx_sessions" needs to have a value of 2]
open another session of abc user and kill first session of abc user,which should be successful
connecting...
active session is now 'abc1'
client_id user host
3 abc localhost
4 abc localhost
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 3]
command ok
Verify [Status variable "Mysqlx_sessions" needs to have a value of 2]
client_id user host
4 abc localhost
command ok
expect ERROR: SELECT command denied to user 'abc'@'localhost' for table 'session_status' (code 1142) for show status command
Verify [Status variable "Mysqlx_stmt_kill_client" needs to have a value of 1]
Verify [Status variable "Mysqlx_stmt_list_clients" needs to have a value of 2]
Verify [Status variable "Mysqlx_sessions" needs to have a value of 2]
killing abc user session with its own session 'abc' which should be successful
expect right error instead of End of File
send Mysqlx.Sql.StmtExecute {
stmt: "kill_client"
args {
type: SCALAR
scalar {
type: V_UINT
v_unsigned_int: 4
}
}
namespace: "xplugin"
}
switch back to default session
Server disconnected
closing session abc1
switched to session default
Verify [Status variable "Mysqlx_sessions" needs to have a value of 1]
client_id user host
1 x_root localhost
command ok
expect Mysqlx_stmt_list_clients=4 and Mysqlx_stmt_kill_client=1 with default x_root session where list_clients executed 4 times and kill_client once
Verify [Status variable "Mysqlx_stmt_kill_client" needs to have a value of 1]
Verify [Status variable "Mysqlx_stmt_list_clients" needs to have a value of 4]
Verify [Status variable "Mysqlx_sessions" needs to have a value of 1]
open process only privileged user seession and kill x_root user session,expect error "You are not owner of thread"
connecting...
active session is now 'process'
client_id user host
5 process localhost
command ok
RUN [stmtadmin kill_client 1]
Got expected error: You are not owner of thread (code 1095)
Verify [Status variable "Mysqlx_sessions" needs to have a value of 2]
checking list of clients after x_root user session killed by xplugin user
client_id user host
5 process localhost
command ok
expect ERROR: SELECT command denied to user 'process'@'localhost' for table 'session_status' (code 1142) for show command
Verify [Status variable "Mysqlx_stmt_kill_client" needs to have a value of 1]
Verify [Status variable "Mysqlx_stmt_list_clients" needs to have a value of 2]
Verify [Status variable "Mysqlx_sessions" needs to have a value of 2]
open privileged user seession and kill x_root user session,expect success
connecting...
active session is now 'xplugin'
client_id user host
1 x_root localhost
5 process localhost
6 xplugin localhost
command ok
WAIT [count(*) information_schema.PROCESSLIST == 1 - only current process can be active]
RUN [stmtadmin kill_client 1]
command ok
Verify [Status variable "Mysqlx_sessions" needs to have a value of 2]
checking list of clients after x_root user session killed by xplugin user
client_id user host
5 process localhost
6 xplugin localhost
command ok
expect Mysqlx_stmt_list_clients=2 and Mysqlx_stmt_kill_client=1 with xplugin user where list_clients executed 2 times and kill_client once
Verify [Status variable "Mysqlx_stmt_kill_client" needs to have a value of 1]
Verify [Status variable "Mysqlx_stmt_list_clients" needs to have a value of 2]
Verify [Status variable "Mysqlx_sessions" needs to have a value of 2]
Cleanup
RUN drop schema if exists xtest
0 rows affected
closing session xplugin
Mysqlx.Ok {
msg: "bye!"
}
ok
show status like 'Mysqlx_stmt%client%';
Variable_name Value
Mysqlx_stmt_kill_client 6
Mysqlx_stmt_list_clients 12
drop user abc@localhost;
drop user xplugin@localhost;
drop user process@localhost;
drop user expire@localhost;
drop user sslcon@localhost;