Commit 22b171d3 authored by Sergei Golubchik's avatar Sergei Golubchik

MDEV-17852 Altered connection limits for user have no effect

update mqh in struct user_conn after taking it from the cache
parent fc0d9a47
...@@ -186,3 +186,30 @@ connection default; ...@@ -186,3 +186,30 @@ connection default;
drop user mysqltest_1@localhost; drop user mysqltest_1@localhost;
drop table t1; drop table t1;
set global max_user_connections= @my_max_user_connections; set global max_user_connections= @my_max_user_connections;
#
# End of 10.1 tests
#
#
# MDEV-17852 Altered connection limits for user have no effect
#
create user foo@'%' with max_user_connections 1;
connect con1,localhost,foo;
select current_user();
current_user()
foo@%
connect(localhost,foo,,test,MYSQL_PORT,MYSQL_SOCK);
connect con2,localhost,foo;
ERROR 42000: User 'foo' has exceeded the 'max_user_connections' resource (current value: 1)
connection default;
alter user foo with max_user_connections 2;
connect con3,localhost,foo;
select current_user();
current_user()
foo@%
disconnect con3;
disconnect con1;
connection default;
drop user foo@'%';
#
# End of 10.2 tests
#
...@@ -216,3 +216,29 @@ drop table t1; ...@@ -216,3 +216,29 @@ drop table t1;
--source include/wait_until_count_sessions.inc --source include/wait_until_count_sessions.inc
set global max_user_connections= @my_max_user_connections; set global max_user_connections= @my_max_user_connections;
--echo #
--echo # End of 10.1 tests
--echo #
--echo #
--echo # MDEV-17852 Altered connection limits for user have no effect
--echo #
create user foo@'%' with max_user_connections 1;
--connect con1,localhost,foo
select current_user();
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
--error ER_USER_LIMIT_REACHED
--connect con2,localhost,foo
--connection default
alter user foo with max_user_connections 2;
--connect con3,localhost,foo
select current_user();
--disconnect con3
--disconnect con1
--connection default
drop user foo@'%';
--echo #
--echo # End of 10.2 tests
--echo #
...@@ -85,7 +85,6 @@ int get_or_create_user_conn(THD *thd, const char *user, ...@@ -85,7 +85,6 @@ int get_or_create_user_conn(THD *thd, const char *user,
uc->host= uc->user + user_len + 1; uc->host= uc->user + user_len + 1;
uc->len= temp_len; uc->len= temp_len;
uc->connections= uc->questions= uc->updates= uc->conn_per_hour= 0; uc->connections= uc->questions= uc->updates= uc->conn_per_hour= 0;
uc->user_resources= *mqh;
uc->reset_utime= thd->thr_create_utime; uc->reset_utime= thd->thr_create_utime;
if (my_hash_insert(&hash_user_connections, (uchar*) uc)) if (my_hash_insert(&hash_user_connections, (uchar*) uc))
{ {
...@@ -95,6 +94,7 @@ int get_or_create_user_conn(THD *thd, const char *user, ...@@ -95,6 +94,7 @@ int get_or_create_user_conn(THD *thd, const char *user,
goto end; goto end;
} }
} }
uc->user_resources= *mqh;
thd->user_connect=uc; thd->user_connect=uc;
uc->connections++; uc->connections++;
end: end:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment