Add tests.

This commit is contained in:
Vitaly Baranov 2020-06-02 00:43:16 +03:00
parent 15132d47c9
commit a5b70fbdda
12 changed files with 967 additions and 0 deletions

View File

@ -0,0 +1,108 @@
-- default
CREATE USER u1_01292
-- same as default
CREATE USER u2_01292
CREATE USER u3_01292
-- rename
CREATE USER u2_01292_renamed
-- authentication
CREATE USER u1_01292
CREATE USER u2_01292 IDENTIFIED WITH plaintext_password
CREATE USER u3_01292 IDENTIFIED WITH sha256_password
CREATE USER u4_01292 IDENTIFIED WITH sha256_password
CREATE USER u5_01292 IDENTIFIED WITH sha256_password
CREATE USER u6_01292 IDENTIFIED WITH double_sha1_password
CREATE USER u7_01292 IDENTIFIED WITH double_sha1_password
CREATE USER u1_01292 IDENTIFIED WITH sha256_password
CREATE USER u2_01292 IDENTIFIED WITH sha256_password
CREATE USER u3_01292 IDENTIFIED WITH sha256_password
CREATE USER u4_01292 IDENTIFIED WITH plaintext_password
CREATE USER u5_01292
-- host
CREATE USER u1_01292
CREATE USER u2_01292 HOST NONE
CREATE USER u3_01292 HOST LOCAL
CREATE USER u4_01292 HOST NAME \'myhost.com\'
CREATE USER u5_01292 HOST LOCAL, NAME \'myhost.com\'
CREATE USER u6_01292 HOST LOCAL, NAME \'myhost.com\'
CREATE USER u7_01292 HOST REGEXP \'.*\\\\.myhost\\\\.com\'
CREATE USER u8_01292
CREATE USER u9_01292 HOST LIKE \'%.myhost.com\'
CREATE USER u10_01292 HOST LIKE \'%.myhost.com\'
CREATE USER u11_01292 HOST LOCAL
CREATE USER u12_01292 HOST IP \'192.168.1.1\'
CREATE USER u13_01292 HOST IP \'192.168.0.0/16\'
CREATE USER u14_01292 HOST LOCAL
CREATE USER u15_01292 HOST IP \'2001:db8:11a3:9d7:1f34:8a2e:7a0:765d\'
CREATE USER u16_01292 HOST LOCAL, IP \'65:ff0c::/96\'
CREATE USER u1_01292 HOST NONE
CREATE USER u2_01292 HOST NAME \'myhost.com\'
CREATE USER u3_01292 HOST LOCAL, NAME \'myhost.com\'
CREATE USER u4_01292 HOST NONE
-- host after @
CREATE USER u1_01292
CREATE USER u1_01292
CREATE USER `u2_01292@%.myhost.com` HOST LIKE \'%.myhost.com\'
CREATE USER `u2_01292@%.myhost.com` HOST LIKE \'%.myhost.com\'
CREATE USER `u3_01292@192.168.%.%` HOST LIKE \'192.168.%.%\'
CREATE USER `u3_01292@192.168.%.%` HOST LIKE \'192.168.%.%\'
CREATE USER `u4_01292@::1` HOST LOCAL
CREATE USER `u4_01292@::1` HOST LOCAL
CREATE USER `u5_01292@65:ff0c::/96` HOST LIKE \'65:ff0c::/96\'
CREATE USER `u5_01292@65:ff0c::/96` HOST LIKE \'65:ff0c::/96\'
CREATE USER u1_01292 HOST LOCAL
CREATE USER `u2_01292@%.myhost.com`
-- settings
CREATE USER u1_01292
CREATE USER u2_01292 SETTINGS PROFILE default
CREATE USER u3_01292 SETTINGS max_memory_usage = 5000000
CREATE USER u4_01292 SETTINGS max_memory_usage MIN 5000000
CREATE USER u5_01292 SETTINGS max_memory_usage MAX 5000000
CREATE USER u6_01292 SETTINGS max_memory_usage READONLY
CREATE USER u7_01292 SETTINGS max_memory_usage WRITABLE
CREATE USER u8_01292 SETTINGS max_memory_usage = 5000000 MIN 4000000 MAX 6000000 READONLY
CREATE USER u9_01292 SETTINGS PROFILE default, max_memory_usage = 5000000 WRITABLE
CREATE USER u1_01292 SETTINGS readonly = 1
CREATE USER u2_01292 SETTINGS readonly = 1
CREATE USER u3_01292
-- default role
CREATE USER u1_01292
CREATE USER u2_01292 DEFAULT ROLE NONE
CREATE USER u3_01292 DEFAULT ROLE r1_01292
CREATE USER u4_01292 DEFAULT ROLE r1_01292, r2_01292
CREATE USER u5_01292 DEFAULT ROLE ALL EXCEPT r2_01292
CREATE USER u6_01292 DEFAULT ROLE ALL EXCEPT r1_01292, r2_01292
CREATE USER u1_01292 DEFAULT ROLE r1_01292
CREATE USER u2_01292 DEFAULT ROLE ALL EXCEPT r2_01292
CREATE USER u3_01292 DEFAULT ROLE r2_01292
CREATE USER u4_01292
CREATE USER u5_01292 DEFAULT ROLE ALL EXCEPT r1_01292
CREATE USER u6_01292 DEFAULT ROLE NONE
-- complex
CREATE USER u1_01292 IDENTIFIED WITH plaintext_password HOST LOCAL SETTINGS readonly = 1
CREATE USER u1_01292 HOST LIKE \'%.%.myhost.com\' DEFAULT ROLE NONE SETTINGS PROFILE default
-- multiple users in one command
CREATE USER u1_01292 DEFAULT ROLE NONE
CREATE USER u2_01292 DEFAULT ROLE NONE
CREATE USER u3_01292 HOST LIKE \'%.%.myhost.com\'
CREATE USER u4_01292 HOST LIKE \'%.%.myhost.com\'
CREATE USER `u5_01292@%.host.com` HOST LIKE \'%.host.com\'
CREATE USER `u6_01292@%.host.com` HOST LIKE \'%.host.com\'
CREATE USER `u7_01292@%.host.com` HOST LIKE \'%.host.com\'
CREATE USER `u8_01292@%.otherhost.com` HOST LIKE \'%.otherhost.com\'
CREATE USER u1_01292 DEFAULT ROLE NONE SETTINGS readonly = 1
CREATE USER u2_01292 DEFAULT ROLE r1_01292, r2_01292 SETTINGS readonly = 1
CREATE USER u3_01292 HOST LIKE \'%.%.myhost.com\' DEFAULT ROLE r1_01292, r2_01292
CREATE USER u4_01292 HOST LIKE \'%.%.myhost.com\' DEFAULT ROLE r1_01292, r2_01292
-- system.users
u1_01292 disk plaintext_password [] [] ['localhost'] [] [] 1 [] []
u2_01292 disk no_password [] [] [] [] ['%.%.myhost.com'] 0 [] []
u3_01292 disk sha256_password [] ['192.169.1.1','192.168.0.0/16'] ['localhost'] [] [] 0 ['r1_01292'] []
u4_01292 disk double_sha1_password [] ['::/0'] [] [] [] 1 [] ['r1_01292']
-- system.settings_profile_elements
\N u1_01292 \N 0 readonly 1 \N \N \N \N
\N u2_01292 \N 0 \N \N \N \N \N default
\N u3_01292 \N 0 max_memory_usage 5000000 4000000 6000000 0 \N
\N u4_01292 \N 0 \N \N \N \N \N default
\N u4_01292 \N 1 max_memory_usage 5000000 \N \N \N \N
\N u4_01292 \N 2 readonly 1 \N \N \N \N

View File

@ -0,0 +1,211 @@
DROP USER IF EXISTS u1_01292, u2_01292, u3_01292, u4_01292, u5_01292, u6_01292, u7_01292, u8_01292, u9_01292;
DROP USER IF EXISTS u10_01292, u11_01292, u12_01292, u13_01292, u14_01292, u15_01292, u16_01292;
DROP USER IF EXISTS u2_01292_renamed;
DROP USER IF EXISTS u1_01292@'%', 'u2_01292@%.myhost.com', u3_01292@'192.168.%.%', 'u4_01292@::1', u5_01292@'65:ff0c::/96';
DROP USER IF EXISTS u5_01292@'%.host.com', u6_01292@'%.host.com', u7_01292@'%.host.com', u8_01292@'%.otherhost.com';
DROP ROLE IF EXISTS r1_01292, r2_01292;
SELECT '-- default';
CREATE USER u1_01292;
SHOW CREATE USER u1_01292;
SELECT '-- same as default';
CREATE USER u2_01292 NOT IDENTIFIED HOST ANY SETTINGS NONE DEFAULT ROLE ALL;
CREATE USER u3_01292 DEFAULT ROLE ALL IDENTIFIED WITH no_password SETTINGS NONE HOST ANY;
SHOW CREATE USER u2_01292;
SHOW CREATE USER u3_01292;
SELECT '-- rename';
ALTER USER u2_01292 RENAME TO 'u2_01292_renamed';
SHOW CREATE USER u2_01292; -- { serverError 192 } -- User not found
SHOW CREATE USER u2_01292_renamed;
DROP USER u1_01292, u2_01292_renamed, u3_01292;
SELECT '-- authentication';
CREATE USER u1_01292 NOT IDENTIFIED;
CREATE USER u2_01292 IDENTIFIED WITH plaintext_password BY 'qwe123';
CREATE USER u3_01292 IDENTIFIED BY 'qwe123';
CREATE USER u4_01292 IDENTIFIED WITH sha256_password BY 'qwe123';
CREATE USER u5_01292 IDENTIFIED WITH sha256_hash BY '18138372FAD4B94533CD4881F03DC6C69296DD897234E0CEE83F727E2E6B1F63';
CREATE USER u6_01292 IDENTIFIED WITH double_sha1_password BY 'qwe123';
CREATE USER u7_01292 IDENTIFIED WITH double_sha1_hash BY '8DCDD69CE7D121DE8013062AEAEB2A148910D50E';
SHOW CREATE USER u1_01292;
SHOW CREATE USER u2_01292;
SHOW CREATE USER u3_01292;
SHOW CREATE USER u4_01292;
SHOW CREATE USER u5_01292;
SHOW CREATE USER u6_01292;
SHOW CREATE USER u7_01292;
ALTER USER u1_01292 IDENTIFIED BY '123qwe';
ALTER USER u2_01292 IDENTIFIED BY '123qwe';
ALTER USER u3_01292 IDENTIFIED BY '123qwe';
ALTER USER u4_01292 IDENTIFIED WITH plaintext_password BY '123qwe';
ALTER USER u5_01292 NOT IDENTIFIED;
SHOW CREATE USER u1_01292;
SHOW CREATE USER u2_01292;
SHOW CREATE USER u3_01292;
SHOW CREATE USER u4_01292;
SHOW CREATE USER u5_01292;
DROP USER u1_01292, u2_01292, u3_01292, u4_01292, u5_01292, u6_01292, u7_01292;
SELECT '-- host';
CREATE USER u1_01292 HOST ANY;
CREATE USER u2_01292 HOST NONE;
CREATE USER u3_01292 HOST LOCAL;
CREATE USER u4_01292 HOST NAME 'myhost.com';
CREATE USER u5_01292 HOST NAME 'myhost.com', LOCAL;
CREATE USER u6_01292 HOST LOCAL, NAME 'myhost.com';
CREATE USER u7_01292 HOST REGEXP '.*\\.myhost\\.com';
CREATE USER u8_01292 HOST LIKE '%';
CREATE USER u9_01292 HOST LIKE '%.myhost.com';
CREATE USER u10_01292 HOST LIKE '%.myhost.com', '%.myhost2.com';
CREATE USER u11_01292 HOST IP '127.0.0.1';
CREATE USER u12_01292 HOST IP '192.168.1.1';
CREATE USER u13_01292 HOST IP '192.168.0.0/16';
CREATE USER u14_01292 HOST IP '::1';
CREATE USER u15_01292 HOST IP '2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d';
CREATE USER u16_01292 HOST IP '65:ff0c::/96', '::1';
SHOW CREATE USER u1_01292;
SHOW CREATE USER u2_01292;
SHOW CREATE USER u3_01292;
SHOW CREATE USER u4_01292;
SHOW CREATE USER u5_01292;
SHOW CREATE USER u6_01292;
SHOW CREATE USER u7_01292;
SHOW CREATE USER u8_01292;
SHOW CREATE USER u9_01292;
SHOW CREATE USER u10_01292;
SHOW CREATE USER u11_01292;
SHOW CREATE USER u12_01292;
SHOW CREATE USER u13_01292;
SHOW CREATE USER u14_01292;
SHOW CREATE USER u15_01292;
SHOW CREATE USER u16_01292;
ALTER USER u1_01292 HOST NONE;
ALTER USER u2_01292 HOST NAME 'myhost.com';
ALTER USER u3_01292 ADD HOST NAME 'myhost.com';
ALTER USER u4_01292 DROP HOST NAME 'myhost.com';
SHOW CREATE USER u1_01292;
SHOW CREATE USER u2_01292;
SHOW CREATE USER u3_01292;
SHOW CREATE USER u4_01292;
DROP USER u1_01292, u2_01292, u3_01292, u4_01292, u5_01292, u6_01292, u7_01292, u8_01292, u9_01292;
DROP USER u10_01292, u11_01292, u12_01292, u13_01292, u14_01292, u15_01292, u16_01292;
SELECT '-- host after @';
CREATE USER u1_01292@'%';
CREATE USER u2_01292@'%.myhost.com';
CREATE USER u3_01292@'192.168.%.%';
CREATE USER u4_01292@'::1';
CREATE USER u5_01292@'65:ff0c::/96';
SHOW CREATE USER u1_01292@'%';
SHOW CREATE USER u1_01292;
SHOW CREATE USER u2_01292@'%.myhost.com';
SHOW CREATE USER 'u2_01292@%.myhost.com';
SHOW CREATE USER u3_01292@'192.168.%.%';
SHOW CREATE USER 'u3_01292@192.168.%.%';
SHOW CREATE USER u4_01292@'::1';
SHOW CREATE USER 'u4_01292@::1';
SHOW CREATE USER u5_01292@'65:ff0c::/96';
SHOW CREATE USER 'u5_01292@65:ff0c::/96';
ALTER USER u1_01292@'%' HOST LOCAL;
ALTER USER u2_01292@'%.myhost.com' HOST ANY;
SHOW CREATE USER u1_01292@'%';
SHOW CREATE USER u2_01292@'%.myhost.com';
DROP USER u1_01292@'%', 'u2_01292@%.myhost.com', u3_01292@'192.168.%.%', 'u4_01292@::1', u5_01292@'65:ff0c::/96';
SELECT '-- settings';
CREATE USER u1_01292 SETTINGS NONE;
CREATE USER u2_01292 SETTINGS PROFILE 'default';
CREATE USER u3_01292 SETTINGS max_memory_usage=5000000;
CREATE USER u4_01292 SETTINGS max_memory_usage MIN=5000000;
CREATE USER u5_01292 SETTINGS max_memory_usage MAX=5000000;
CREATE USER u6_01292 SETTINGS max_memory_usage READONLY;
CREATE USER u7_01292 SETTINGS max_memory_usage WRITABLE;
CREATE USER u8_01292 SETTINGS max_memory_usage=5000000 MIN 4000000 MAX 6000000 READONLY;
CREATE USER u9_01292 SETTINGS PROFILE 'default', max_memory_usage=5000000 WRITABLE;
SHOW CREATE USER u1_01292;
SHOW CREATE USER u2_01292;
SHOW CREATE USER u3_01292;
SHOW CREATE USER u4_01292;
SHOW CREATE USER u5_01292;
SHOW CREATE USER u6_01292;
SHOW CREATE USER u7_01292;
SHOW CREATE USER u8_01292;
SHOW CREATE USER u9_01292;
ALTER USER u1_01292 SETTINGS readonly=1;
ALTER USER u2_01292 SETTINGS readonly=1;
ALTER USER u3_01292 SETTINGS NONE;
SHOW CREATE USER u1_01292;
SHOW CREATE USER u2_01292;
SHOW CREATE USER u3_01292;
DROP USER u1_01292, u2_01292, u3_01292, u4_01292, u5_01292, u6_01292, u7_01292, u8_01292, u9_01292;
SELECT '-- default role';
CREATE ROLE r1_01292, r2_01292;
CREATE USER u1_01292 DEFAULT ROLE ALL;
CREATE USER u2_01292 DEFAULT ROLE NONE;
CREATE USER u3_01292 DEFAULT ROLE r1_01292;
CREATE USER u4_01292 DEFAULT ROLE r1_01292, r2_01292;
CREATE USER u5_01292 DEFAULT ROLE ALL EXCEPT r2_01292;
CREATE USER u6_01292 DEFAULT ROLE ALL EXCEPT r1_01292, r2_01292;
SHOW CREATE USER u1_01292;
SHOW CREATE USER u2_01292;
SHOW CREATE USER u3_01292;
SHOW CREATE USER u4_01292;
SHOW CREATE USER u5_01292;
SHOW CREATE USER u6_01292;
GRANT r1_01292, r2_01292 TO u1_01292, u2_01292, u3_01292, u4_01292, u5_01292, u6_01292;
ALTER USER u1_01292 DEFAULT ROLE r1_01292;
ALTER USER u2_01292 DEFAULT ROLE ALL EXCEPT r2_01292;
SET DEFAULT ROLE r2_01292 TO u3_01292;
SET DEFAULT ROLE ALL TO u4_01292;
SET DEFAULT ROLE ALL EXCEPT r1_01292 TO u5_01292;
SET DEFAULT ROLE NONE TO u6_01292;
SHOW CREATE USER u1_01292;
SHOW CREATE USER u2_01292;
SHOW CREATE USER u3_01292;
SHOW CREATE USER u4_01292;
SHOW CREATE USER u5_01292;
SHOW CREATE USER u6_01292;
DROP USER u1_01292, u2_01292, u3_01292, u4_01292, u5_01292, u6_01292;
SELECT '-- complex';
CREATE USER u1_01292 IDENTIFIED WITH plaintext_password BY 'qwe123' HOST LOCAL SETTINGS readonly=1;
SHOW CREATE USER u1_01292;
ALTER USER u1_01292 NOT IDENTIFIED HOST LIKE '%.%.myhost.com' DEFAULT ROLE NONE SETTINGS PROFILE 'default';
SHOW CREATE USER u1_01292;
DROP USER u1_01292;
SELECT '-- multiple users in one command';
CREATE USER u1_01292, u2_01292 DEFAULT ROLE NONE;
CREATE USER u3_01292, u4_01292 HOST LIKE '%.%.myhost.com';
CREATE USER u5_01292@'%.host.com', u6_01292@'%.host.com';
CREATE USER u7_01292@'%.host.com', u8_01292@'%.otherhost.com';
SHOW CREATE USER u1_01292, u2_01292, u3_01292, u4_01292, u5_01292@'%.host.com', u6_01292@'%.host.com';
SHOW CREATE USER u7_01292@'%.host.com', u8_01292@'%.otherhost.com';
ALTER USER u1_01292, u2_01292 SETTINGS readonly=1;
GRANT r1_01292, r2_01292 TO u2_01292, u3_01292, u4_01292;
SET DEFAULT ROLE r1_01292, r2_01292 TO u2_01292, u3_01292, u4_01292;
SHOW CREATE USER u1_01292, u2_01292, u3_01292, u4_01292;
DROP USER u1_01292, u2_01292, u3_01292, u4_01292, u5_01292@'%.host.com', u6_01292@'%.host.com';
DROP USER u7_01292@'%.host.com', u8_01292@'%.otherhost.com';
SELECT '-- system.users';
CREATE USER u1_01292 IDENTIFIED WITH plaintext_password BY 'qwe123' HOST LOCAL;
CREATE USER u2_01292 NOT IDENTIFIED HOST LIKE '%.%.myhost.com' DEFAULT ROLE NONE;
CREATE USER u3_01292 IDENTIFIED BY 'qwe123' HOST IP '192.168.0.0/16', '192.169.1.1', '::1' DEFAULT ROLE r1_01292;
CREATE USER u4_01292 IDENTIFIED WITH double_sha1_password BY 'qwe123' HOST ANY DEFAULT ROLE ALL EXCEPT r1_01292;
SELECT name, storage, auth_type, auth_params, host_ip, host_names, host_names_regexp, host_names_like, default_roles_all, default_roles_list, default_roles_except FROM system.users WHERE name LIKE 'u%\_01292' ORDER BY name;
DROP USER u1_01292, u2_01292, u3_01292, u4_01292;
SELECT '-- system.settings_profile_elements';
CREATE USER u1_01292 SETTINGS readonly=1;
CREATE USER u2_01292 SETTINGS PROFILE 'default';
CREATE USER u3_01292 SETTINGS max_memory_usage=5000000 MIN 4000000 MAX 6000000 WRITABLE;
CREATE USER u4_01292 SETTINGS PROFILE 'default', max_memory_usage=5000000, readonly=1;
CREATE USER u5_01292 SETTINGS NONE;
SELECT * FROM system.settings_profile_elements WHERE user_name LIKE 'u%\_01292' ORDER BY user_name, index;
DROP USER u1_01292, u2_01292, u3_01292, u4_01292, u5_01292;
DROP ROLE r1_01292, r2_01292;

View File

@ -0,0 +1,38 @@
-- default
CREATE ROLE r1_01293
-- same as default
CREATE ROLE r2_01293
-- rename
CREATE ROLE r2_01293_renamed
-- host after @
CREATE ROLE r1_01293
CREATE ROLE r1_01293
CREATE ROLE `r2_01293@%.myhost.com`
CREATE ROLE `r2_01293@%.myhost.com`
-- settings
CREATE ROLE r1_01293
CREATE ROLE r2_01293 SETTINGS PROFILE default
CREATE ROLE r3_01293 SETTINGS max_memory_usage = 5000000
CREATE ROLE r4_01293 SETTINGS max_memory_usage MIN 5000000
CREATE ROLE r5_01293 SETTINGS max_memory_usage MAX 5000000
CREATE ROLE r6_01293 SETTINGS max_memory_usage READONLY
CREATE ROLE r7_01293 SETTINGS max_memory_usage WRITABLE
CREATE ROLE r8_01293 SETTINGS max_memory_usage = 5000000 MIN 4000000 MAX 6000000 READONLY
CREATE ROLE r9_01293 SETTINGS PROFILE default, max_memory_usage = 5000000 WRITABLE
CREATE ROLE r1_01293 SETTINGS readonly = 1
CREATE ROLE r2_01293 SETTINGS readonly = 1
CREATE ROLE r3_01293
-- multiple roles in one command
CREATE ROLE r1_01293
CREATE ROLE r2_01293
CREATE ROLE r1_01293 SETTINGS readonly = 1
CREATE ROLE r2_01293 SETTINGS readonly = 1
-- system.roles
r1_01293 disk
-- system.settings_profile_elements
\N \N r1_01293 0 readonly 1 \N \N \N \N
\N \N r2_01293 0 \N \N \N \N \N default
\N \N r3_01293 0 max_memory_usage 5000000 4000000 6000000 0 \N
\N \N r4_01293 0 \N \N \N \N \N default
\N \N r4_01293 1 max_memory_usage 5000000 \N \N \N \N
\N \N r4_01293 2 readonly 1 \N \N \N \N

View File

@ -0,0 +1,74 @@
DROP ROLE IF EXISTS r1_01293, r2_01293, r3_01293, r4_01293, r5_01293, r6_01293, r7_01293, r8_01293, r9_01293;
DROP ROLE IF EXISTS r2_01293_renamed;
DROP ROLE IF EXISTS r1_01293@'%', 'r2_01293@%.myhost.com';
SELECT '-- default';
CREATE ROLE r1_01293;
SHOW CREATE ROLE r1_01293;
SELECT '-- same as default';
CREATE ROLE r2_01293 SETTINGS NONE;
SHOW CREATE ROLE r2_01293;
SELECT '-- rename';
ALTER ROLE r2_01293 RENAME TO 'r2_01293_renamed';
SHOW CREATE ROLE r2_01293; -- { serverError 511 } -- Role not found
SHOW CREATE ROLE r2_01293_renamed;
DROP ROLE r1_01293, r2_01293_renamed;
SELECT '-- host after @';
CREATE ROLE r1_01293@'%';
CREATE ROLE r2_01293@'%.myhost.com';
SHOW CREATE ROLE r1_01293@'%';
SHOW CREATE ROLE r1_01293;
SHOW CREATE ROLE r2_01293@'%.myhost.com';
SHOW CREATE ROLE 'r2_01293@%.myhost.com';
DROP ROLE r1_01293@'%', 'r2_01293@%.myhost.com';
SELECT '-- settings';
CREATE ROLE r1_01293 SETTINGS NONE;
CREATE ROLE r2_01293 SETTINGS PROFILE 'default';
CREATE ROLE r3_01293 SETTINGS max_memory_usage=5000000;
CREATE ROLE r4_01293 SETTINGS max_memory_usage MIN=5000000;
CREATE ROLE r5_01293 SETTINGS max_memory_usage MAX=5000000;
CREATE ROLE r6_01293 SETTINGS max_memory_usage READONLY;
CREATE ROLE r7_01293 SETTINGS max_memory_usage WRITABLE;
CREATE ROLE r8_01293 SETTINGS max_memory_usage=5000000 MIN 4000000 MAX 6000000 READONLY;
CREATE ROLE r9_01293 SETTINGS PROFILE 'default', max_memory_usage=5000000 WRITABLE;
SHOW CREATE ROLE r1_01293;
SHOW CREATE ROLE r2_01293;
SHOW CREATE ROLE r3_01293;
SHOW CREATE ROLE r4_01293;
SHOW CREATE ROLE r5_01293;
SHOW CREATE ROLE r6_01293;
SHOW CREATE ROLE r7_01293;
SHOW CREATE ROLE r8_01293;
SHOW CREATE ROLE r9_01293;
ALTER ROLE r1_01293 SETTINGS readonly=1;
ALTER ROLE r2_01293 SETTINGS readonly=1;
ALTER ROLE r3_01293 SETTINGS NONE;
SHOW CREATE ROLE r1_01293;
SHOW CREATE ROLE r2_01293;
SHOW CREATE ROLE r3_01293;
DROP ROLE r1_01293, r2_01293, r3_01293, r4_01293, r5_01293, r6_01293, r7_01293, r8_01293, r9_01293;
SELECT '-- multiple roles in one command';
CREATE ROLE r1_01293, r2_01293;
SHOW CREATE ROLE r1_01293, r2_01293;
ALTER ROLE r1_01293, r2_01293 SETTINGS readonly=1;
SHOW CREATE ROLE r1_01293, r2_01293;
DROP ROLE r1_01293, r2_01293;
SELECT '-- system.roles';
CREATE ROLE r1_01293;
SELECT name, storage from system.roles WHERE name='r1_01293';
DROP ROLE r1_01293;
SELECT '-- system.settings_profile_elements';
CREATE ROLE r1_01293 SETTINGS readonly=1;
CREATE ROLE r2_01293 SETTINGS PROFILE 'default';
CREATE ROLE r3_01293 SETTINGS max_memory_usage=5000000 MIN 4000000 MAX 6000000 WRITABLE;
CREATE ROLE r4_01293 SETTINGS PROFILE 'default', max_memory_usage=5000000, readonly=1;
CREATE ROLE r5_01293 SETTINGS NONE;
SELECT * FROM system.settings_profile_elements WHERE role_name LIKE 'r%\_01293' ORDER BY role_name, index;
DROP ROLE r1_01293, r2_01293, r3_01293, r4_01293, r5_01293;

View File

@ -0,0 +1,56 @@
-- default
CREATE SETTINGS PROFILE s1_01294
-- same as default
CREATE SETTINGS PROFILE s2_01294
CREATE SETTINGS PROFILE s3_01294
-- rename
CREATE SETTINGS PROFILE s2_01294_renamed
-- settings
CREATE SETTINGS PROFILE s1_01294
CREATE SETTINGS PROFILE s2_01294 SETTINGS INHERIT default
CREATE SETTINGS PROFILE s3_01294 SETTINGS max_memory_usage = 5000000
CREATE SETTINGS PROFILE s4_01294 SETTINGS max_memory_usage MIN 5000000
CREATE SETTINGS PROFILE s5_01294 SETTINGS max_memory_usage MAX 5000000
CREATE SETTINGS PROFILE s6_01294 SETTINGS max_memory_usage READONLY
CREATE SETTINGS PROFILE s7_01294 SETTINGS max_memory_usage WRITABLE
CREATE SETTINGS PROFILE s8_01294 SETTINGS max_memory_usage = 5000000 MIN 4000000 MAX 6000000 READONLY
CREATE SETTINGS PROFILE s9_01294 SETTINGS INHERIT default, max_memory_usage = 5000000 WRITABLE
CREATE SETTINGS PROFILE s10_01294 SETTINGS INHERIT s1_01294, INHERIT s3_01294, INHERIT default, readonly = 0, max_memory_usage MAX 6000000
CREATE SETTINGS PROFILE s1_01294 SETTINGS readonly = 0
CREATE SETTINGS PROFILE s2_01294 SETTINGS readonly = 1
CREATE SETTINGS PROFILE s3_01294
-- to roles
CREATE SETTINGS PROFILE s1_01294
CREATE SETTINGS PROFILE s2_01294 TO ALL
CREATE SETTINGS PROFILE s3_01294 TO r1_01294
CREATE SETTINGS PROFILE s4_01294 TO u1_01294
CREATE SETTINGS PROFILE s5_01294 TO r1_01294, u1_01294
CREATE SETTINGS PROFILE s6_01294 TO ALL EXCEPT r1_01294
CREATE SETTINGS PROFILE s7_01294 TO ALL EXCEPT r1_01294, u1_01294
CREATE SETTINGS PROFILE s1_01294 TO u1_01294
CREATE SETTINGS PROFILE s2_01294
-- complex
CREATE SETTINGS PROFILE s1_01294 SETTINGS readonly = 0 TO r1_01294
CREATE SETTINGS PROFILE s1_01294 SETTINGS INHERIT default
-- multiple profiles in one command
CREATE SETTINGS PROFILE s1_01294 SETTINGS max_memory_usage = 5000000
CREATE SETTINGS PROFILE s2_01294 SETTINGS max_memory_usage = 5000000
CREATE SETTINGS PROFILE s3_01294 TO ALL
CREATE SETTINGS PROFILE s4_01294 TO ALL
CREATE SETTINGS PROFILE s1_01294 SETTINGS max_memory_usage = 6000000
CREATE SETTINGS PROFILE s2_01294 SETTINGS max_memory_usage = 6000000 TO r1_01294
CREATE SETTINGS PROFILE s3_01294 SETTINGS max_memory_usage = 6000000 TO r1_01294
CREATE SETTINGS PROFILE s4_01294 TO r1_01294
-- system.settings_profiles
s1_01294 disk 0 0 [] []
s2_01294 disk 1 0 ['r1_01294'] []
s3_01294 disk 1 0 ['r1_01294'] []
s4_01294 disk 1 0 ['r1_01294'] []
s5_01294 disk 3 1 [] ['r1_01294']
-- system.settings_profile_elements
s2_01294 \N \N 0 readonly 0 \N \N \N \N
s3_01294 \N \N 0 max_memory_usage 5000000 4000000 6000000 1 \N
s4_01294 \N \N 0 max_memory_usage 5000000 \N \N \N \N
s5_01294 \N \N 0 \N \N \N \N \N default
s5_01294 \N \N 1 readonly 0 \N \N \N \N
s5_01294 \N \N 2 max_memory_usage \N \N 6000000 0 \N

View File

@ -0,0 +1,103 @@
DROP SETTINGS PROFILE IF EXISTS s1_01294, s2_01294, s3_01294, s4_01294, s5_01294, s6_01294, s7_01294, s8_01294, s9_01294, s10_01294;
DROP SETTINGS PROFILE IF EXISTS s2_01294_renamed;
DROP USER IF EXISTS u1_01294;
DROP ROLE IF EXISTS r1_01294;
SELECT '-- default';
CREATE SETTINGS PROFILE s1_01294;
SHOW CREATE SETTINGS PROFILE s1_01294;
SELECT '-- same as default';
CREATE SETTINGS PROFILE s2_01294 SETTINGS NONE TO NONE;
CREATE PROFILE s3_01294;
SHOW CREATE PROFILE s2_01294;
SHOW CREATE SETTINGS PROFILE s3_01294;
SELECT '-- rename';
ALTER SETTINGS PROFILE s2_01294 RENAME TO 's2_01294_renamed';
SHOW CREATE SETTINGS PROFILE s2_01294; -- { serverError 180 } -- Profile not found
SHOW CREATE SETTINGS PROFILE s2_01294_renamed;
DROP SETTINGS PROFILE s1_01294, s2_01294_renamed, s3_01294;
SELECT '-- settings';
CREATE PROFILE s1_01294 SETTINGS NONE;
CREATE PROFILE s2_01294 SETTINGS INHERIT 'default';
CREATE PROFILE s3_01294 SETTINGS max_memory_usage=5000000;
CREATE PROFILE s4_01294 SETTINGS max_memory_usage MIN=5000000;
CREATE PROFILE s5_01294 SETTINGS max_memory_usage MAX=5000000;
CREATE PROFILE s6_01294 SETTINGS max_memory_usage READONLY;
CREATE PROFILE s7_01294 SETTINGS max_memory_usage WRITABLE;
CREATE PROFILE s8_01294 SETTINGS max_memory_usage=5000000 MIN 4000000 MAX 6000000 READONLY;
CREATE PROFILE s9_01294 SETTINGS INHERIT 'default', max_memory_usage=5000000 WRITABLE;
CREATE PROFILE s10_01294 SETTINGS INHERIT s1_01294, s3_01294, INHERIT default, readonly=0, max_memory_usage MAX 6000000;
SHOW CREATE PROFILE s1_01294;
SHOW CREATE PROFILE s2_01294;
SHOW CREATE PROFILE s3_01294;
SHOW CREATE PROFILE s4_01294;
SHOW CREATE PROFILE s5_01294;
SHOW CREATE PROFILE s6_01294;
SHOW CREATE PROFILE s7_01294;
SHOW CREATE PROFILE s8_01294;
SHOW CREATE PROFILE s9_01294;
SHOW CREATE PROFILE s10_01294;
ALTER PROFILE s1_01294 SETTINGS readonly=0;
ALTER PROFILE s2_01294 SETTINGS readonly=1;
ALTER PROFILE s3_01294 SETTINGS NONE;
SHOW CREATE PROFILE s1_01294;
SHOW CREATE PROFILE s2_01294;
SHOW CREATE PROFILE s3_01294;
DROP PROFILE s1_01294, s2_01294, s3_01294, s4_01294, s5_01294, s6_01294, s7_01294, s8_01294, s9_01294, s10_01294;
SELECT '-- to roles';
CREATE ROLE r1_01294;
CREATE USER u1_01294;
CREATE PROFILE s1_01294 TO NONE;
CREATE PROFILE s2_01294 TO ALL;
CREATE PROFILE s3_01294 TO r1_01294;
CREATE PROFILE s4_01294 TO u1_01294;
CREATE PROFILE s5_01294 TO r1_01294, u1_01294;
CREATE PROFILE s6_01294 TO ALL EXCEPT r1_01294;
CREATE PROFILE s7_01294 TO ALL EXCEPT r1_01294, u1_01294;
SHOW CREATE PROFILE s1_01294;
SHOW CREATE PROFILE s2_01294;
SHOW CREATE PROFILE s3_01294;
SHOW CREATE PROFILE s4_01294;
SHOW CREATE PROFILE s5_01294;
SHOW CREATE PROFILE s6_01294;
SHOW CREATE PROFILE s7_01294;
ALTER PROFILE s1_01294 TO u1_01294;
ALTER PROFILE s2_01294 TO NONE;
SHOW CREATE PROFILE s1_01294;
SHOW CREATE PROFILE s2_01294;
DROP PROFILE s1_01294, s2_01294, s3_01294, s4_01294, s5_01294, s6_01294, s7_01294;
SELECT '-- complex';
CREATE SETTINGS PROFILE s1_01294 SETTINGS readonly=0 TO r1_01294;
SHOW CREATE SETTINGS PROFILE s1_01294;
ALTER SETTINGS PROFILE s1_01294 SETTINGS INHERIT 'default' TO NONE;
SHOW CREATE SETTINGS PROFILE s1_01294;
DROP SETTINGS PROFILE s1_01294;
SELECT '-- multiple profiles in one command';
CREATE PROFILE s1_01294, s2_01294 SETTINGS max_memory_usage=5000000;
CREATE PROFILE s3_01294, s4_01294 TO ALL;
SHOW CREATE PROFILE s1_01294, s2_01294, s3_01294, s4_01294;
ALTER PROFILE s1_01294, s2_01294, s3_01294 SETTINGS max_memory_usage=6000000;
ALTER PROFILE s2_01294, s3_01294, s4_01294 TO r1_01294;
SHOW CREATE PROFILE s1_01294, s2_01294, s3_01294, s4_01294;
DROP PROFILE s1_01294, s2_01294, s3_01294, s4_01294;
SELECT '-- system.settings_profiles';
CREATE PROFILE s1_01294;
CREATE PROFILE s2_01294 SETTINGS readonly=0 TO r1_01294;;
CREATE PROFILE s3_01294 SETTINGS max_memory_usage=5000000 MIN 4000000 MAX 6000000 READONLY TO r1_01294;
CREATE PROFILE s4_01294 SETTINGS max_memory_usage=5000000 TO r1_01294;
CREATE PROFILE s5_01294 SETTINGS INHERIT default, readonly=0, max_memory_usage MAX 6000000 WRITABLE TO ALL EXCEPT r1_01294;
SELECT name, storage, num_elements, apply_to_all, apply_to_list, apply_to_except FROM system.settings_profiles WHERE name LIKE 's%\_01294' ORDER BY name;
SELECT '-- system.settings_profile_elements';
SELECT * FROM system.settings_profile_elements WHERE profile_name LIKE 's%\_01294' ORDER BY profile_name, index;
DROP PROFILE s1_01294, s2_01294, s3_01294, s4_01294, s5_01294;
DROP ROLE r1_01294;
DROP USER u1_01294;

View File

@ -0,0 +1,35 @@
-- default
CREATE ROW POLICY p1_01295 ON db.table
-- same as default
CREATE ROW POLICY p2_01295 ON db.table
CREATE ROW POLICY p3_01295 ON db.table
-- rename
CREATE ROW POLICY p2_01295_renamed ON db.table
-- filter
CREATE ROW POLICY p1_01295 ON db.table FOR SELECT USING (a < b) AND (c > d)
CREATE ROW POLICY p2_01295 ON db.table AS restrictive FOR SELECT USING id = currentUser()
CREATE ROW POLICY p3_01295 ON db.table FOR SELECT USING 1
CREATE ROW POLICY p1_01295 ON db.table AS restrictive FOR SELECT USING 0
-- to roles
CREATE ROW POLICY p1_01295 ON db.table
CREATE ROW POLICY p2_01295 ON db.table TO ALL
CREATE ROW POLICY p3_01295 ON db.table TO r1_01295
CREATE ROW POLICY p4_01295 ON db.table TO u1_01295
CREATE ROW POLICY p5_01295 ON db.table TO r1_01295, u1_01295
CREATE ROW POLICY p6_01295 ON db.table TO ALL EXCEPT r1_01295
CREATE ROW POLICY p7_01295 ON db.table TO ALL EXCEPT r1_01295, u1_01295
CREATE ROW POLICY p1_01295 ON db.table TO u1_01295
CREATE ROW POLICY p2_01295 ON db.table
-- multiple policies in one command
CREATE ROW POLICY p1_01295 ON db.table FOR SELECT USING 1
CREATE ROW POLICY p2_01295 ON db.table FOR SELECT USING 1
CREATE ROW POLICY p3_01295 ON db.table TO u1_01295
CREATE ROW POLICY p3_01295 ON db2.table2 TO u1_01295
CREATE ROW POLICY p4_01295 ON db.table FOR SELECT USING a = b
CREATE ROW POLICY p5_01295 ON db2.table2 FOR SELECT USING a = b
CREATE ROW POLICY p1_01295 ON db.table FOR SELECT USING 1 TO ALL
CREATE ROW POLICY p2_01295 ON db.table FOR SELECT USING 1 TO ALL
-- system.row_policies
p1_01295 ON db.table p1_01295 db table disk (a < b) AND (c > d) 0 0 [] []
p2_01295 ON db.table p2_01295 db table disk id = currentUser() 1 0 ['u1_01295'] []
p3_01295 ON db.table p3_01295 db table disk 1 0 1 [] ['r1_01295']

View File

@ -0,0 +1,79 @@
DROP ROW POLICY IF EXISTS p1_01295, p2_01295, p3_01295, p4_01295, p5_01295, p6_01295, p7_01295, p8_01295, p9_01295, p10_01295 ON db.table;
DROP ROW POLICY IF EXISTS p2_01295_renamed ON db.table;
DROP ROW POLICY IF EXISTS p3_01295 ON db.table, db2.table2;
DROP ROW POLICY IF EXISTS p4_01295 ON db.table, p5_01295 ON db2.table2;
DROP USER IF EXISTS u1_01295;
DROP ROLE IF EXISTS r1_01295;
SELECT '-- default';
CREATE ROW POLICY p1_01295 ON db.table;
SHOW CREATE ROW POLICY p1_01295 ON db.table;
SELECT '-- same as default';
CREATE ROW POLICY p2_01295 ON db.table USING NONE TO NONE;
CREATE POLICY p3_01295 ON db.table;
SHOW CREATE POLICY p2_01295 ON db.table;
SHOW CREATE ROW POLICY p3_01295 ON db.table;
SELECT '-- rename';
ALTER ROW POLICY p2_01295 ON db.table RENAME TO 'p2_01295_renamed';
SHOW CREATE ROW POLICY p2_01295 ON db.table; -- { serverError 523 } -- Policy not found
SHOW CREATE ROW POLICY p2_01295_renamed ON db.table;
DROP ROW POLICY p1_01295, p2_01295_renamed, p3_01295 ON db.table;
SELECT '-- filter';
CREATE ROW POLICY p1_01295 ON db.table USING a<b AND c>d;
CREATE ROW POLICY p2_01295 ON db.table USING id=currentUser() AS RESTRICTIVE;
CREATE ROW POLICY p3_01295 ON db.table USING 1 AS PERMISSIVE;
SHOW CREATE POLICY p1_01295 ON db.table;
SHOW CREATE POLICY p2_01295 ON db.table;
SHOW CREATE POLICY p3_01295 ON db.table;
ALTER ROW POLICY p1_01295 ON db.table FOR SELECT USING 0 AS RESTRICTIVE;
SHOW CREATE POLICY p1_01295 ON db.table;
DROP ROW POLICY p1_01295, p2_01295, p3_01295 ON db.table;
SELECT '-- to roles';
CREATE ROLE r1_01295;
CREATE USER u1_01295;
CREATE POLICY p1_01295 ON db.table TO NONE;
CREATE POLICY p2_01295 ON db.table TO ALL;
CREATE POLICY p3_01295 ON db.table TO r1_01295;
CREATE POLICY p4_01295 ON db.table TO u1_01295;
CREATE POLICY p5_01295 ON db.table TO r1_01295, u1_01295;
CREATE POLICY p6_01295 ON db.table TO ALL EXCEPT r1_01295;
CREATE POLICY p7_01295 ON db.table TO ALL EXCEPT r1_01295, u1_01295;
SHOW CREATE POLICY p1_01295 ON db.table;
SHOW CREATE POLICY p2_01295 ON db.table;
SHOW CREATE POLICY p3_01295 ON db.table;
SHOW CREATE POLICY p4_01295 ON db.table;
SHOW CREATE POLICY p5_01295 ON db.table;
SHOW CREATE POLICY p6_01295 ON db.table;
SHOW CREATE POLICY p7_01295 ON db.table;
ALTER POLICY p1_01295 ON db.table TO u1_01295;
ALTER POLICY p2_01295 ON db.table TO NONE;
SHOW CREATE POLICY p1_01295 ON db.table;
SHOW CREATE POLICY p2_01295 ON db.table;
DROP POLICY p1_01295, p2_01295, p3_01295, p4_01295, p5_01295, p6_01295, p7_01295 ON db.table;
SELECT '-- multiple policies in one command';
CREATE ROW POLICY p1_01295, p2_01295 ON db.table USING 1;
CREATE ROW POLICY p3_01295 ON db.table, db2.table2 TO u1_01295;
CREATE ROW POLICY p4_01295 ON db.table, p5_01295 ON db2.table2 USING a=b;
SHOW CREATE POLICY p1_01295, p2_01295 ON db.table;
SHOW CREATE POLICY p3_01295 ON db.table, db2.table2;
SHOW CREATE POLICY p4_01295 ON db.table, p5_01295 ON db2.table2;
ALTER POLICY p1_01295, p2_01295 ON db.table TO ALL;
SHOW CREATE POLICY p1_01295, p2_01295 ON db.table;
DROP POLICY p1_01295, p2_01295 ON db.table;
DROP POLICY p3_01295 ON db.table, db2.table2;
DROP POLICY p4_01295 ON db.table, p5_01295 ON db2.table2;
SELECT '-- system.row_policies';
CREATE ROW POLICY p1_01295 ON db.table USING a<b AND c>d;
CREATE ROW POLICY p2_01295 ON db.table USING id=currentUser() AS RESTRICTIVE TO u1_01295;
CREATE ROW POLICY p3_01295 ON db.table USING 1 AS PERMISSIVE TO ALL EXCEPT r1_01295;
SELECT name, short_name, database, table, storage, select_filter, is_restrictive, apply_to_all, apply_to_list, apply_to_except from system.row_policies WHERE short_name LIKE 'p%\_01295' ORDER BY name;
DROP ROW POLICY p1_01295, p2_01295, p3_01295 ON db.table;
DROP ROLE r1_01295;
DROP USER u1_01295;

View File

@ -0,0 +1,20 @@
-- one policy
CREATE ROW POLICY p1_01296 ON db_01296.table
CREATE ROW POLICY p1_01296 ON db_01296.table
CREATE ROW POLICY p1_01296 ON db_01296.table FOR SELECT USING 1
CREATE ROW POLICY p1_01296 ON db_01296.table FOR SELECT USING 1
-- multiple policies
CREATE ROW POLICY p1_01296 ON db_01296.table FOR SELECT USING 1
CREATE ROW POLICY p2_01296 ON db_01296.table FOR SELECT USING 1
CREATE ROW POLICY p3_01296 ON db_01296.table TO u1_01296
CREATE ROW POLICY p3_01296 ON db_01296.table2 TO u1_01296
CREATE ROW POLICY p4_01296 ON db_01296.table FOR SELECT USING a = b
CREATE ROW POLICY p5_01296 ON db_01296.table2 FOR SELECT USING a = b
CREATE ROW POLICY p1_01296 ON db_01296.table FOR SELECT USING 1
CREATE ROW POLICY p2_01296 ON db_01296.table FOR SELECT USING 1
CREATE ROW POLICY p3_01296 ON db_01296.table TO u1_01296
CREATE ROW POLICY p3_01296 ON db_01296.table2 TO u1_01296
CREATE ROW POLICY p4_01296 ON db_01296.table FOR SELECT USING a = b
CREATE ROW POLICY p5_01296 ON db_01296.table2 FOR SELECT USING a = b
CREATE ROW POLICY p1_01296 ON db_01296.table FOR SELECT USING 1 TO ALL
CREATE ROW POLICY p2_01296 ON db_01296.table FOR SELECT USING 1 TO ALL

View File

@ -0,0 +1,51 @@
DROP ROW POLICY IF EXISTS p1_01296, p2_01296, p3_01296, p4_01296, p5_01296 ON db_01296.table;
DROP ROW POLICY IF EXISTS p3_01296, p5_01296 ON db_01296.table2;
DROP DATABASE IF EXISTS db_01296;
DROP USER IF EXISTS u1_01296;
CREATE DATABASE db_01296;
USE db_01296;
SELECT '-- one policy';
CREATE POLICY p1_01296 ON table;
SHOW CREATE POLICY p1_01296 ON db_01296.table;
SHOW CREATE POLICY p1_01296 ON table;
ALTER POLICY p1_01296 ON table USING 1;
SHOW CREATE POLICY p1_01296 ON db_01296.table;
SHOW CREATE POLICY p1_01296 ON table;
DROP POLICY p1_01296 ON table;
DROP POLICY p1_01296 ON db_01296.table; -- { serverError 523 } -- Policy not found
SELECT '-- multiple policies';
CREATE ROW POLICY p1_01296, p2_01296 ON table USING 1;
CREATE USER u1_01296;
CREATE ROW POLICY p3_01296 ON table, table2 TO u1_01296;
CREATE ROW POLICY p4_01296 ON table, p5_01296 ON table2 USING a=b;
SHOW CREATE POLICY p1_01296 ON table;
SHOW CREATE POLICY p2_01296 ON table;
SHOW CREATE POLICY p3_01296 ON table;
SHOW CREATE POLICY p3_01296 ON table2;
SHOW CREATE POLICY p4_01296 ON table;
SHOW CREATE POLICY p5_01296 ON table2;
SHOW CREATE POLICY p1_01296 ON db_01296.table;
SHOW CREATE POLICY p2_01296 ON db_01296.table;
SHOW CREATE POLICY p3_01296 ON db_01296.table;
SHOW CREATE POLICY p3_01296 ON db_01296.table2;
SHOW CREATE POLICY p4_01296 ON db_01296.table;
SHOW CREATE POLICY p5_01296 ON db_01296.table2;
ALTER POLICY p1_01296, p2_01296 ON table TO ALL;
SHOW CREATE POLICY p1_01296 ON table;
SHOW CREATE POLICY p2_01296 ON table;
DROP POLICY p1_01296, p2_01296 ON table;
DROP POLICY p3_01296 ON table, table2;
DROP POLICY p4_01296 ON table, p5_01296 ON table2;
DROP POLICY p1_01296 ON db_01296.table; -- { serverError 523 } -- Policy not found
DROP POLICY p2_01296 ON db_01296.table; -- { serverError 523 } -- Policy not found
DROP POLICY p3_01296 ON db_01296.table; -- { serverError 523 } -- Policy not found
DROP POLICY p3_01296 ON db_01296.table2; -- { serverError 523 } -- Policy not found
DROP POLICY p4_01296 ON db_01296.table; -- { serverError 523 } -- Policy not found
DROP POLICY p5_01296 ON db_01296.table2; -- { serverError 523 } -- Policy not found
USE default;
DROP DATABASE db_01296;
DROP USER u1_01296;

View File

@ -0,0 +1,63 @@
-- default
CREATE QUOTA q1_01297
-- same as default
CREATE QUOTA q2_01297
CREATE QUOTA q3_01297
CREATE QUOTA q4_01297
-- rename
CREATE QUOTA q2_01297_renamed
-- key
CREATE QUOTA q1_01297
CREATE QUOTA q2_01297 KEYED BY user_name
CREATE QUOTA q3_01297 KEYED BY ip_address
CREATE QUOTA q4_01297 KEYED BY client_key
CREATE QUOTA q5_01297 KEYED BY client_key, user_name
CREATE QUOTA q6_01297 KEYED BY client_key, ip_address
CREATE QUOTA q7_01297
CREATE QUOTA q8_01297 KEYED BY user_name
CREATE QUOTA q9_01297 KEYED BY ip_address
CREATE QUOTA q10_01297 KEYED BY client_key
CREATE QUOTA q11_01297 KEYED BY client_key, user_name
CREATE QUOTA q12_01297 KEYED BY client_key, ip_address
CREATE QUOTA q1_01297 KEYED BY user_name
CREATE QUOTA q2_01297 KEYED BY client_key, user_name
CREATE QUOTA q3_01297
-- intervals
CREATE QUOTA q1_01297 FOR INTERVAL 5 day MAX errors = 3
CREATE QUOTA q2_01297 FOR INTERVAL 30 minute MAX errors = 4
CREATE QUOTA q3_01297 FOR INTERVAL 1 hour MAX errors = 5
CREATE QUOTA q4_01297 FOR INTERVAL 2000 second MAX errors = 5
CREATE QUOTA q5_01297 FOR RANDOMIZED INTERVAL 1 year MAX queries = 100, errors = 11
CREATE QUOTA q6_01297 FOR INTERVAL 2 month MAX queries = 100, errors = 11, result_rows = 1000, result_bytes = 10000, read_rows = 1001, read_bytes = 10001, execution_time = 2.5
CREATE QUOTA q7_01297 FOR INTERVAL 1 quarter MAX queries = 100, errors = 11
CREATE QUOTA q8_01297 FOR INTERVAL 2 month MAX result_rows = 1002, FOR INTERVAL 2 quarter MAX queries = 100, errors = 11
CREATE QUOTA q1_01297
CREATE QUOTA q2_01297 FOR INTERVAL 30 minute TRACKING ONLY
CREATE QUOTA q3_01297 FOR INTERVAL 1 hour MAX queries = 70, FOR INTERVAL 2 hour MAX errors = 10
CREATE QUOTA q4_01297 FOR RANDOMIZED INTERVAL 2000 second MAX errors = 5
CREATE QUOTA q5_01297 FOR INTERVAL 1 year MAX errors = 111
-- to roles
CREATE QUOTA q1_01297
CREATE QUOTA q2_01297 TO ALL
CREATE QUOTA q3_01297 TO r1_01297
CREATE QUOTA q4_01297 TO u1_01297
CREATE QUOTA q5_01297 TO r1_01297, u1_01297
CREATE QUOTA q6_01297 TO ALL EXCEPT r1_01297
CREATE QUOTA q7_01297 TO ALL EXCEPT r1_01297, u1_01297
CREATE QUOTA q1_01297 TO u1_01297
CREATE QUOTA q2_01297
-- multiple quotas in one command
CREATE QUOTA q1_01297 FOR INTERVAL 1 day MAX errors = 5
CREATE QUOTA q2_01297 FOR INTERVAL 1 day MAX errors = 5
CREATE QUOTA q1_01297 FOR INTERVAL 1 day TRACKING ONLY TO r1_01297
CREATE QUOTA q2_01297 FOR INTERVAL 1 day TRACKING ONLY TO r1_01297
-- system.quotas
q1_01297 disk ['user_name'] [] 0 ['r1_01297'] []
q2_01297 disk [] [5259492] 0 ['r1_01297','u1_01297'] []
q3_01297 disk ['client_key','user_name'] [5259492,15778476] 0 [] []
q4_01297 disk [] [604800] 1 [] ['u1_01297']
-- system.quota_limits
q2_01297 5259492 0 100 11 1000 10000 1001 10001 2.5
q3_01297 5259492 0 \N \N 1002 \N \N \N \N
q3_01297 15778476 0 100 11 \N \N \N \N \N
q4_01297 604800 0 \N \N \N \N \N \N \N

View File

@ -0,0 +1,129 @@
DROP QUOTA IF EXISTS q1_01297, q2_01297, q3_01297, q4_01297, q5_01297, q6_01297, q7_01297, q8_01297, q9_01297, q10_01297;
DROP QUOTA IF EXISTS q11_01297, q12_01297;
DROP QUOTA IF EXISTS q2_01297_renamed;
DROP USER IF EXISTS u1_01297;
DROP ROLE IF EXISTS r1_01297;
SELECT '-- default';
CREATE QUOTA q1_01297;
SHOW CREATE QUOTA q1_01297;
SELECT '-- same as default';
CREATE QUOTA q2_01297 TO NONE;
CREATE QUOTA q3_01297 FOR INTERVAL 1 HOUR NO LIMITS NOT KEYED TO NONE;
CREATE QUOTA q4_01297 KEYED BY none FOR 1 hour NO LIMITS;
SHOW CREATE QUOTA q2_01297;
SHOW CREATE QUOTA q3_01297;
SHOW CREATE QUOTA q4_01297;
SELECT '-- rename';
ALTER QUOTA q2_01297 RENAME TO 'q2_01297_renamed';
SHOW CREATE QUOTA q2_01297; -- { serverError 199 } -- Policy not found
SHOW CREATE QUOTA q2_01297_renamed;
DROP QUOTA q1_01297, q2_01297_renamed, q3_01297, q4_01297;
SELECT '-- key';
CREATE QUOTA q1_01297 NOT KEYED;
CREATE QUOTA q2_01297 KEY BY user_name;
CREATE QUOTA q3_01297 KEY BY ip_address;
CREATE QUOTA q4_01297 KEY BY client_key;
CREATE QUOTA q5_01297 KEY BY client_key, user_name;
CREATE QUOTA q6_01297 KEY BY client_key, ip_address;
CREATE QUOTA q7_01297 KEYED BY 'none';
CREATE QUOTA q8_01297 KEYED BY 'user name';
CREATE QUOTA q9_01297 KEYED BY 'IP_ADDRESS';
CREATE QUOTA q10_01297 KEYED BY CLIENT_KEY;
CREATE QUOTA q11_01297 KEYED BY 'client key or user name';
CREATE QUOTA q12_01297 KEYED BY 'client key or ip address';
SHOW CREATE QUOTA q1_01297;
SHOW CREATE QUOTA q2_01297;
SHOW CREATE QUOTA q3_01297;
SHOW CREATE QUOTA q4_01297;
SHOW CREATE QUOTA q5_01297;
SHOW CREATE QUOTA q6_01297;
SHOW CREATE QUOTA q7_01297;
SHOW CREATE QUOTA q8_01297;
SHOW CREATE QUOTA q9_01297;
SHOW CREATE QUOTA q10_01297;
SHOW CREATE QUOTA q11_01297;
SHOW CREATE QUOTA q12_01297;
ALTER QUOTA q1_01297 KEY BY user_name;
ALTER QUOTA q2_01297 KEY BY client_key, user_name;
ALTER QUOTA q3_01297 NOT KEYED;
SHOW CREATE QUOTA q1_01297;
SHOW CREATE QUOTA q2_01297;
SHOW CREATE QUOTA q3_01297;
DROP QUOTA q1_01297, q2_01297, q3_01297, q4_01297, q5_01297, q6_01297, q7_01297, q8_01297, q9_01297, q10_01297, q11_01297, q12_01297;
SELECT '-- intervals';
CREATE QUOTA q1_01297 FOR INTERVAL 5 DAY MAX ERRORS = 3;
CREATE QUOTA q2_01297 FOR INTERVAL 30 minute MAX ERRORS 4;
CREATE QUOTA q3_01297 FOR 1 HOUR errors MAX 5;
CREATE QUOTA q4_01297 FOR 2000 SECOND errors MAX 5;
CREATE QUOTA q5_01297 FOR RANDOMIZED INTERVAL 1 YEAR MAX errors = 11, MAX queries = 100;
CREATE QUOTA q6_01297 FOR 2 MONTH MAX errors = 11, queries = 100, result_rows = 1000, result_bytes = 10000, read_rows = 1001, read_bytes = 10001, execution_time=2.5;
CREATE QUOTA q7_01297 FOR 1 QUARTER MAX errors 11, queries 100;
CREATE QUOTA q8_01297 FOR 0.5 year ERRORS MAX 11, QUERIES MAX 100, FOR 2 MONTH RESULT ROWS MAX 1002;
SHOW CREATE QUOTA q1_01297;
SHOW CREATE QUOTA q2_01297;
SHOW CREATE QUOTA q3_01297;
SHOW CREATE QUOTA q4_01297;
SHOW CREATE QUOTA q5_01297;
SHOW CREATE QUOTA q6_01297;
SHOW CREATE QUOTA q7_01297;
SHOW CREATE QUOTA q8_01297;
ALTER QUOTA q1_01297 FOR INTERVAL 5 DAY NO LIMITS;
ALTER QUOTA q2_01297 FOR INTERVAL 30 MINUTE TRACKING ONLY;
ALTER QUOTA q3_01297 FOR INTERVAL 2 HOUR MAX errors = 10, FOR INTERVAL 1 HOUR MAX queries = 70;
ALTER QUOTA q4_01297 FOR RANDOMIZED INTERVAL 2000 SECOND errors MAX 5;
ALTER QUOTA q5_01297 FOR 1 YEAR MAX errors = 111;
SHOW CREATE QUOTA q1_01297;
SHOW CREATE QUOTA q2_01297;
SHOW CREATE QUOTA q3_01297;
SHOW CREATE QUOTA q4_01297;
SHOW CREATE QUOTA q5_01297;
DROP QUOTA q1_01297, q2_01297, q3_01297, q4_01297, q5_01297, q6_01297, q7_01297, q8_01297;
SELECT '-- to roles';
CREATE ROLE r1_01297;
CREATE USER u1_01297;
CREATE QUOTA q1_01297 TO NONE;
CREATE QUOTA q2_01297 TO ALL;
CREATE QUOTA q3_01297 TO r1_01297;
CREATE QUOTA q4_01297 TO u1_01297;
CREATE QUOTA q5_01297 TO r1_01297, u1_01297;
CREATE QUOTA q6_01297 TO ALL EXCEPT r1_01297;
CREATE QUOTA q7_01297 TO ALL EXCEPT r1_01297, u1_01297;
SHOW CREATE QUOTA q1_01297;
SHOW CREATE QUOTA q2_01297;
SHOW CREATE QUOTA q3_01297;
SHOW CREATE QUOTA q4_01297;
SHOW CREATE QUOTA q5_01297;
SHOW CREATE QUOTA q6_01297;
SHOW CREATE QUOTA q7_01297;
ALTER QUOTA q1_01297 TO u1_01297;
ALTER QUOTA q2_01297 TO NONE;
SHOW CREATE QUOTA q1_01297;
SHOW CREATE QUOTA q2_01297;
DROP QUOTA q1_01297, q2_01297, q3_01297, q4_01297, q5_01297, q6_01297, q7_01297;
SELECT '-- multiple quotas in one command';
CREATE QUOTA q1_01297, q2_01297 FOR 1 day MAX errors=5;
SHOW CREATE QUOTA q1_01297, q2_01297;
ALTER QUOTA q1_01297, q2_01297 FOR 1 day TRACKING ONLY TO r1_01297;
SHOW CREATE QUOTA q1_01297, q2_01297;
DROP QUOTA q1_01297, q2_01297;
SELECT '-- system.quotas';
CREATE QUOTA q1_01297 KEYED BY user_name TO r1_01297;
CREATE QUOTA q2_01297 FOR 2 MONTH MAX errors = 11, queries = 100, result_rows = 1000, result_bytes = 10000, read_rows = 1001, read_bytes = 10001, execution_time=2.5 TO r1_01297, u1_01297;
CREATE QUOTA q3_01297 KEYED BY client_key, user_name FOR 0.5 YEAR ERRORS MAX 11, QUERIES MAX 100, FOR 2 MONTH RESULT ROWS MAX 1002;
CREATE QUOTA q4_01297 FOR 1 WEEK TRACKING ONLY TO ALL EXCEPT u1_01297;
SELECT name, storage, keys, durations, apply_to_all, apply_to_list, apply_to_except FROM system.quotas WHERE name LIKE 'q%\_01297' ORDER BY name;
SELECT '-- system.quota_limits';
SELECT * FROM system.quota_limits WHERE quota_name LIKE 'q%\_01297' ORDER BY quota_name, duration;
DROP QUOTA q1_01297, q2_01297, q3_01297, q4_01297;
DROP ROLE r1_01297;
DROP USER u1_01297;