Merge 10.5 into 10.6
This commit is contained in:
commit
a62a675fd2
@ -83,6 +83,7 @@ SET(HAVE_IPV6_V6ONLY 1 CACHE INTERNAL "")
|
||||
SET(HAVE_LANGINFO_H CACHE INTERNAL "")
|
||||
SET(HAVE_LDIV 1 CACHE INTERNAL "")
|
||||
SET(HAVE_LIMITS_H 1 CACHE INTERNAL "")
|
||||
SET(HAVE_LINUX_MMAN_H CACHE INTERNAL "")
|
||||
SET(HAVE_LOCALE_H 1 CACHE INTERNAL "")
|
||||
SET(HAVE_LOCALTIME_R 1 CACHE INTERNAL "")
|
||||
SET(HAVE_LRAND48 CACHE INTERNAL "")
|
||||
|
@ -42,6 +42,7 @@
|
||||
#cmakedefine HAVE_LIMITS_H 1
|
||||
#cmakedefine HAVE_LINK_H 1
|
||||
#cmakedefine HAVE_LINUX_UNISTD_H 1
|
||||
#cmakedefine HAVE_LINUX_MMAN_H 1
|
||||
#cmakedefine HAVE_LOCALE_H 1
|
||||
#cmakedefine HAVE_MALLOC_H 1
|
||||
#cmakedefine HAVE_MEMORY_H 1
|
||||
|
@ -223,6 +223,7 @@ CHECK_INCLUDE_FILES (sys/fpu.h HAVE_SYS_FPU_H)
|
||||
CHECK_INCLUDE_FILES (sys/ioctl.h HAVE_SYS_IOCTL_H)
|
||||
CHECK_INCLUDE_FILES ("sys/types.h;sys/malloc.h" HAVE_SYS_MALLOC_H)
|
||||
CHECK_INCLUDE_FILES (sys/mman.h HAVE_SYS_MMAN_H)
|
||||
CHECK_INCLUDE_FILES (linux/mman.h HAVE_LINUX_MMAN_H)
|
||||
CHECK_INCLUDE_FILES (sys/prctl.h HAVE_SYS_PRCTL_H)
|
||||
CHECK_INCLUDE_FILES (sys/resource.h HAVE_SYS_RESOURCE_H)
|
||||
CHECK_INCLUDE_FILES (sys/select.h HAVE_SYS_SELECT_H)
|
||||
|
4
debian/rules
vendored
4
debian/rules
vendored
@ -49,8 +49,8 @@ ifeq (32,$(DEB_HOST_ARCH_BITS))
|
||||
endif
|
||||
|
||||
# ColumnStore only attempts to build on a few platforms as dictated by CMake checks
|
||||
# Also note in debian/control the CS-only build deps marked '[i386 amd64]'
|
||||
ifeq ($(DEB_HOST_ARCH),$(filter $(DEB_HOST_ARCH),amd64 i386))
|
||||
# Also note in debian/control the CS-only build deps marked '[amd64]'
|
||||
ifeq ($(DEB_HOST_ARCH),$(filter $(DEB_HOST_ARCH),amd64))
|
||||
CMAKEFLAGS += -DPLUGIN_COLUMNSTORE=YES
|
||||
endif
|
||||
|
||||
|
@ -969,12 +969,6 @@ extern ulonglong my_getcputime(void);
|
||||
#define MAP_NORESERVE 0 /* For irix and AIX */
|
||||
#endif
|
||||
|
||||
/* Compatibility with pre linux 3.8 distributions */
|
||||
#ifdef __linux__
|
||||
#define MAP_HUGE_SHIFT 26
|
||||
#define MAP_HUGETLB 0x40000
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_MMAP64
|
||||
#define my_mmap(a,b,c,d,e,f) mmap64(a,b,c,d,e,f)
|
||||
#else
|
||||
|
@ -187,7 +187,7 @@ write_file $MYSQLD_DATADIR/mysql_test/do_not_delete;
|
||||
do_not_delete
|
||||
EOF
|
||||
|
||||
replace_result $MYSQLD_DATADIR ./ \\ / 41 39;
|
||||
replace_result $MYSQLD_DATADIR ./ \\ / 66 39 93 39 17 39 247 39 41 39 "File exists" "Directory not empty";
|
||||
error ER_DB_DROP_RMDIR;
|
||||
drop database mysql_test;
|
||||
select database();
|
||||
|
@ -624,7 +624,8 @@ Reload Server Admin To reload or refresh tables, logs and privileges
|
||||
Binlog admin Server To purge binary logs
|
||||
Binlog monitor Server To use SHOW BINLOG STATUS and SHOW BINARY LOG
|
||||
Replication master admin Server To monitor connected slaves
|
||||
Replication slave admin Server To start/monitor/stop slave and apply binlog events
|
||||
Replication slave admin Server To start/stop slave and apply binlog events
|
||||
Slave monitor Server To use SHOW SLAVE STATUS and SHOW RELAYLOG EVENTS
|
||||
Replication slave Server Admin To read binary log events from the master
|
||||
Select Tables To retrieve rows from table
|
||||
Show databases Server Admin To see all databases with SHOW DATABASES
|
||||
@ -1966,10 +1967,11 @@ GRANT REPLICATION SLAVE ON *.* TO mysqltest_u1@localhost;
|
||||
GRANT SHOW DATABASES ON *.* TO mysqltest_u1@localhost;
|
||||
GRANT SHUTDOWN ON *.* TO mysqltest_u1@localhost;
|
||||
GRANT USAGE ON *.* TO mysqltest_u1@localhost;
|
||||
GRANT SLAVE MONITOR ON *.* TO mysqltest_u1@localhost;
|
||||
|
||||
SHOW GRANTS FOR mysqltest_u1@localhost;
|
||||
Grants for mysqltest_u1@localhost
|
||||
GRANT RELOAD, SHUTDOWN, PROCESS, FILE, SHOW DATABASES, REPLICATION SLAVE, BINLOG MONITOR, CREATE USER ON *.* TO `mysqltest_u1`@`localhost`
|
||||
GRANT RELOAD, SHUTDOWN, PROCESS, FILE, SHOW DATABASES, REPLICATION SLAVE, BINLOG MONITOR, CREATE USER, SLAVE MONITOR ON *.* TO `mysqltest_u1`@`localhost`
|
||||
GRANT CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE ROUTINE, ALTER ROUTINE, EVENT ON `mysqltest_db1`.* TO `mysqltest_u1`@`localhost`
|
||||
connect con1,localhost,mysqltest_u1,,mysqltest_db1;
|
||||
connection con1;
|
||||
|
@ -1833,6 +1833,7 @@ GRANT REPLICATION SLAVE ON *.* TO mysqltest_u1@localhost;
|
||||
GRANT SHOW DATABASES ON *.* TO mysqltest_u1@localhost;
|
||||
GRANT SHUTDOWN ON *.* TO mysqltest_u1@localhost;
|
||||
GRANT USAGE ON *.* TO mysqltest_u1@localhost;
|
||||
GRANT SLAVE MONITOR ON *.* TO mysqltest_u1@localhost;
|
||||
|
||||
--echo
|
||||
SHOW GRANTS FOR mysqltest_u1@localhost;
|
||||
|
@ -18,8 +18,6 @@ CHANGE MASTER TO MASTER_HOST='127.0.0.1';
|
||||
ERROR 42000: Access denied; you need (at least one of) the SUPER, REPLICATION SLAVE ADMIN privilege(s) for this operation
|
||||
STOP SLAVE;
|
||||
ERROR 42000: Access denied; you need (at least one of) the SUPER, REPLICATION SLAVE ADMIN privilege(s) for this operation
|
||||
SHOW SLAVE STATUS;
|
||||
ERROR 42000: Access denied; you need (at least one of) the SUPER, REPLICATION SLAVE ADMIN privilege(s) for this operation
|
||||
disconnect con1;
|
||||
connection default;
|
||||
DROP USER user1@localhost;
|
||||
@ -39,7 +37,6 @@ CHANGE MASTER TO MASTER_USER='root';
|
||||
STOP SLAVE;
|
||||
Warnings:
|
||||
Note 1255 Slave already has been stopped
|
||||
SHOW SLAVE STATUS;
|
||||
disconnect con1;
|
||||
connection default;
|
||||
DROP USER user1@localhost;
|
||||
@ -59,31 +56,6 @@ CHANGE MASTER TO MASTER_USER='root';
|
||||
STOP SLAVE;
|
||||
Warnings:
|
||||
Note 1255 Slave already has been stopped
|
||||
SHOW SLAVE STATUS;
|
||||
disconnect con1;
|
||||
connection default;
|
||||
DROP USER user1@localhost;
|
||||
#
|
||||
# Test that SHOW RELAYLOG EVENTS is not allowed without REPLICATION SLAVE ADMIN
|
||||
#
|
||||
CREATE USER user1@localhost IDENTIFIED BY '';
|
||||
GRANT ALL PRIVILEGES ON *.* TO user1@localhost;
|
||||
REVOKE REPLICATION SLAVE ADMIN ON *.* FROM user1@localhost;
|
||||
connect con1,localhost,user1,,;
|
||||
connection con1;
|
||||
SHOW RELAYLOG EVENTS;
|
||||
ERROR 42000: Access denied; you need (at least one of) the REPLICATION SLAVE ADMIN privilege(s) for this operation
|
||||
disconnect con1;
|
||||
connection default;
|
||||
DROP USER user1@localhost;
|
||||
#
|
||||
# Test that SHOW RELAYLOG EVENTS is allowed with REPLICATION SLAVE ADMIN
|
||||
#
|
||||
CREATE USER user1@localhost IDENTIFIED BY '';
|
||||
GRANT REPLICATION SLAVE ADMIN ON *.* TO user1@localhost;
|
||||
connect con1,localhost,user1,,;
|
||||
connection con1;
|
||||
SHOW RELAYLOG EVENTS;
|
||||
disconnect con1;
|
||||
connection default;
|
||||
DROP USER user1@localhost;
|
||||
|
@ -24,8 +24,6 @@ START SLAVE;
|
||||
CHANGE MASTER TO MASTER_HOST='127.0.0.1';
|
||||
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
|
||||
STOP SLAVE;
|
||||
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
|
||||
SHOW SLAVE STATUS;
|
||||
disconnect con1;
|
||||
|
||||
connection default;
|
||||
@ -46,9 +44,6 @@ connection con1;
|
||||
START SLAVE;
|
||||
CHANGE MASTER TO MASTER_USER='root';
|
||||
STOP SLAVE;
|
||||
--disable_result_log
|
||||
SHOW SLAVE STATUS;
|
||||
--enable_result_log
|
||||
disconnect con1;
|
||||
|
||||
connection default;
|
||||
@ -69,51 +64,11 @@ connection con1;
|
||||
START SLAVE;
|
||||
CHANGE MASTER TO MASTER_USER='root';
|
||||
STOP SLAVE;
|
||||
--disable_result_log
|
||||
SHOW SLAVE STATUS;
|
||||
--enable_result_log
|
||||
disconnect con1;
|
||||
|
||||
connection default;
|
||||
DROP USER user1@localhost;
|
||||
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Test that SHOW RELAYLOG EVENTS is not allowed without REPLICATION SLAVE ADMIN
|
||||
--echo #
|
||||
|
||||
CREATE USER user1@localhost IDENTIFIED BY '';
|
||||
GRANT ALL PRIVILEGES ON *.* TO user1@localhost;
|
||||
REVOKE REPLICATION SLAVE ADMIN ON *.* FROM user1@localhost;
|
||||
connect (con1,localhost,user1,,);
|
||||
connection con1;
|
||||
--disable_ps_protocol
|
||||
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
|
||||
SHOW RELAYLOG EVENTS;
|
||||
--enable_ps_protocol
|
||||
disconnect con1;
|
||||
connection default;
|
||||
DROP USER user1@localhost;
|
||||
|
||||
--echo #
|
||||
--echo # Test that SHOW RELAYLOG EVENTS is allowed with REPLICATION SLAVE ADMIN
|
||||
--echo #
|
||||
|
||||
CREATE USER user1@localhost IDENTIFIED BY '';
|
||||
GRANT REPLICATION SLAVE ADMIN ON *.* TO user1@localhost;
|
||||
connect (con1,localhost,user1,,);
|
||||
connection con1;
|
||||
--disable_ps_protocol
|
||||
--disable_result_log
|
||||
SHOW RELAYLOG EVENTS;
|
||||
--enable_result_log
|
||||
--enable_ps_protocol
|
||||
disconnect con1;
|
||||
connection default;
|
||||
DROP USER user1@localhost;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.5 tests
|
||||
--echo #
|
||||
|
55
mysql-test/main/grant_slave_monitor.result
Normal file
55
mysql-test/main/grant_slave_monitor.result
Normal file
@ -0,0 +1,55 @@
|
||||
CREATE USER user1@localhost IDENTIFIED BY '';
|
||||
GRANT ALL PRIVILEGES ON *.* TO user1@localhost;
|
||||
REVOKE SLAVE MONITOR, SUPER ON *.* FROM user1@localhost;
|
||||
FLUSH PRIVILEGES;
|
||||
connect con1,localhost,user1,,;
|
||||
connection con1;
|
||||
SHOW GRANTS;
|
||||
Grants for user1@localhost
|
||||
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY ON *.* TO `user1`@`localhost`
|
||||
#
|
||||
# Verify that having REPLICATION SLAVE ADMIN doesn't allow SHOW SLAVE STATUS
|
||||
# Expected error: Access denied; you need (at least one of) the SUPER, SLAVE
|
||||
# MONITOR privilege(s) for this operation
|
||||
#
|
||||
SHOW SLAVE STATUS;
|
||||
ERROR 42000: Access denied; you need (at least one of) the SUPER, SLAVE MONITOR privilege(s) for this operation
|
||||
#
|
||||
# Verify that having REPLICATION SLAVE ADMIN doesn't allow SHOW RELAYLOG EVENTS
|
||||
# Expected error: Access denied; you need (at least one of) the REPLICA MONITOR
|
||||
# privilege(s) for this operation
|
||||
#
|
||||
SHOW RELAYLOG EVENTS;
|
||||
ERROR 42000: Access denied; you need (at least one of) the SLAVE MONITOR privilege(s) for this operation
|
||||
disconnect con1;
|
||||
#
|
||||
# SHOW SLAVE STATUS and SHOW RELAYLOG EVENTS are allowed with SLAVE MONITOR privilege
|
||||
#
|
||||
connection default;
|
||||
GRANT SLAVE MONITOR ON *.* TO user1@localhost;
|
||||
FLUSH PRIVILEGES;
|
||||
connect con1,localhost,user1,,;
|
||||
connection con1;
|
||||
SHOW GRANTS;
|
||||
Grants for user1@localhost
|
||||
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY, SLAVE MONITOR ON *.* TO `user1`@`localhost`
|
||||
SHOW SLAVE STATUS;
|
||||
SHOW RELAYLOG EVENTS;
|
||||
disconnect con1;
|
||||
connection default;
|
||||
DROP USER user1@localhost;
|
||||
#
|
||||
# SHOW SLAVE STATUS command is allowed with SUPER privilege
|
||||
#
|
||||
CREATE USER user1@localhost IDENTIFIED BY '';
|
||||
GRANT SUPER ON *.* TO user1@localhost;
|
||||
connect con1,localhost,user1,,;
|
||||
SHOW SLAVE STATUS;
|
||||
#
|
||||
# SHOW RELAYLOG EVENTS is not allowed with SUPER privilege, it requires SLAVE MONITOR
|
||||
#
|
||||
SHOW RELAYLOG EVENTS;
|
||||
ERROR 42000: Access denied; you need (at least one of) the SLAVE MONITOR privilege(s) for this operation
|
||||
disconnect con1;
|
||||
connection default;
|
||||
DROP USER user1@localhost;
|
101
mysql-test/main/grant_slave_monitor.test
Normal file
101
mysql-test/main/grant_slave_monitor.test
Normal file
@ -0,0 +1,101 @@
|
||||
# ==== Purpose ====
|
||||
#
|
||||
# SLAVE MONITOR privilege is required to execute following commands.
|
||||
# SHOW SLAVE STATUS
|
||||
# SHOW RELAYLOG EVENTS
|
||||
#
|
||||
# ==== Implementation ====
|
||||
#
|
||||
# Step1: GRANT ALL privileges for a new user 'user1' and then REVOKE
|
||||
# SLAVE MONITOR and SUPER privileges.
|
||||
# Step2: Execute SHOW SLAVE STAUTS/SHOW RELAYLOG EVENTS commands and expect
|
||||
# ER_SPECIFIC_ACCESS_DENIED_ERROR. This also verifies that REPLICATION
|
||||
# SLAVE ADMIN privilege is not required for these two commands.
|
||||
# Step3: GRANT SLAVE MONITOR privilege and observe that both commands are
|
||||
# allowd to execute.
|
||||
# Step4: GRANT SUPER privilege and observe that only SHOW SLAVE STATUS command
|
||||
# is allowed.
|
||||
#
|
||||
# ==== References ====
|
||||
#
|
||||
# MDEV-23610: Slave user can't run "SHOW SLAVE STATUS" anymore after upgrade
|
||||
# to 10.5, mysql_upgrade should take of that
|
||||
# MDEV-23918: admin privlege required to view contents of relay logs in 10.5
|
||||
#
|
||||
|
||||
--source include/not_embedded.inc
|
||||
|
||||
CREATE USER user1@localhost IDENTIFIED BY '';
|
||||
GRANT ALL PRIVILEGES ON *.* TO user1@localhost;
|
||||
REVOKE SLAVE MONITOR, SUPER ON *.* FROM user1@localhost;
|
||||
FLUSH PRIVILEGES;
|
||||
|
||||
--connect(con1,localhost,user1,,)
|
||||
--connection con1
|
||||
SHOW GRANTS;
|
||||
|
||||
--echo #
|
||||
--echo # Verify that having REPLICATION SLAVE ADMIN doesn't allow SHOW SLAVE STATUS
|
||||
--echo # Expected error: Access denied; you need (at least one of) the SUPER, SLAVE
|
||||
--echo # MONITOR privilege(s) for this operation
|
||||
--echo #
|
||||
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
|
||||
SHOW SLAVE STATUS;
|
||||
|
||||
--echo #
|
||||
--echo # Verify that having REPLICATION SLAVE ADMIN doesn't allow SHOW RELAYLOG EVENTS
|
||||
--echo # Expected error: Access denied; you need (at least one of) the REPLICA MONITOR
|
||||
--echo # privilege(s) for this operation
|
||||
--echo #
|
||||
--disable_ps_protocol
|
||||
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
|
||||
SHOW RELAYLOG EVENTS;
|
||||
--enable_ps_protocol
|
||||
--disconnect con1
|
||||
|
||||
--echo #
|
||||
--echo # SHOW SLAVE STATUS and SHOW RELAYLOG EVENTS are allowed with SLAVE MONITOR privilege
|
||||
--echo #
|
||||
|
||||
--connection default
|
||||
GRANT SLAVE MONITOR ON *.* TO user1@localhost;
|
||||
FLUSH PRIVILEGES;
|
||||
|
||||
--connect(con1,localhost,user1,,)
|
||||
--connection con1
|
||||
SHOW GRANTS;
|
||||
|
||||
--disable_result_log
|
||||
SHOW SLAVE STATUS;
|
||||
--disable_ps_protocol
|
||||
SHOW RELAYLOG EVENTS;
|
||||
--enable_ps_protocol
|
||||
--enable_result_log
|
||||
--disconnect con1
|
||||
|
||||
--connection default
|
||||
DROP USER user1@localhost;
|
||||
|
||||
--echo #
|
||||
--echo # SHOW SLAVE STATUS command is allowed with SUPER privilege
|
||||
--echo #
|
||||
CREATE USER user1@localhost IDENTIFIED BY '';
|
||||
GRANT SUPER ON *.* TO user1@localhost;
|
||||
|
||||
--connect(con1,localhost,user1,,)
|
||||
--disable_result_log
|
||||
SHOW SLAVE STATUS;
|
||||
--enable_result_log
|
||||
|
||||
--echo #
|
||||
--echo # SHOW RELAYLOG EVENTS is not allowed with SUPER privilege, it requires SLAVE MONITOR
|
||||
--echo #
|
||||
|
||||
--disable_ps_protocol
|
||||
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
|
||||
SHOW RELAYLOG EVENTS;
|
||||
--enable_ps_protocol
|
||||
--disconnect con1
|
||||
|
||||
--connection default
|
||||
DROP USER user1@localhost;
|
@ -18,7 +18,37 @@ CREATE USER user_super_replslave@localhost;
|
||||
GRANT SUPER, REPLICATION SLAVE ON *.* TO user_super_replslave@localhost;
|
||||
SHOW GRANTS FOR user_super_replslave@localhost;
|
||||
Grants for user_super_replslave@localhost
|
||||
GRANT SUPER, REPLICATION SLAVE, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY ON *.* TO `user_super_replslave`@`localhost`
|
||||
GRANT SUPER, REPLICATION SLAVE, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY, SLAVE MONITOR ON *.* TO `user_super_replslave`@`localhost`
|
||||
#
|
||||
# MDEV-23610: Slave user can't run "SHOW SLAVE STATUS" anymore after upgrade to 10.5, mysql_upgrade should take of that
|
||||
#
|
||||
#
|
||||
# Users with privilege SUPER prior to 10.5 should successfully execute
|
||||
# SHOW SLAVE STATUS command
|
||||
#
|
||||
CREATE USER user_replsuper@localhost;
|
||||
GRANT SUPER ON *.* TO user_replsuper@localhost;
|
||||
SHOW GRANTS FOR user_replsuper@localhost;
|
||||
Grants for user_replsuper@localhost
|
||||
GRANT SUPER, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, BINLOG ADMIN, BINLOG REPLAY ON *.* TO `user_replsuper`@`localhost`
|
||||
#
|
||||
# Users with privilege REPLICATION CLIENT prior to 10.5 should successfully execute
|
||||
# SHOW SLAVE STATUS command
|
||||
#
|
||||
CREATE USER user_replclient@localhost;
|
||||
GRANT REPLICATION CLIENT ON *.* TO user_replclient@localhost;
|
||||
SHOW GRANTS FOR user_replclient@localhost;
|
||||
Grants for user_replclient@localhost
|
||||
GRANT BINLOG MONITOR ON *.* TO `user_replclient`@`localhost`
|
||||
#
|
||||
# Users with privilege REPLICATION SLAVE prior to 10.5 should successfully execute
|
||||
# SHOW RELAYLOG EVENTS command
|
||||
#
|
||||
CREATE USER user_replslave@localhost;
|
||||
GRANT REPLICATION SLAVE ON *.* TO user_replslave@localhost;
|
||||
SHOW GRANTS FOR user_replslave@localhost;
|
||||
Grants for user_replslave@localhost
|
||||
GRANT REPLICATION SLAVE, REPLICATION MASTER ADMIN, SLAVE MONITOR ON *.* TO `user_replslave`@`localhost`
|
||||
# mysql_upgrade --force --silent 2>&1
|
||||
FLUSH PRIVILEGES;
|
||||
#
|
||||
@ -38,7 +68,35 @@ GRANT SUPER, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLI
|
||||
#
|
||||
SHOW GRANTS FOR user_super_replslave@localhost;
|
||||
Grants for user_super_replslave@localhost
|
||||
GRANT SUPER, REPLICATION SLAVE, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY ON *.* TO `user_super_replslave`@`localhost`
|
||||
GRANT SUPER, REPLICATION SLAVE, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY, SLAVE MONITOR ON *.* TO `user_super_replslave`@`localhost`
|
||||
#
|
||||
# MDEV-23610: Slave user can't run "SHOW SLAVE STATUS" anymore after upgrade to 10.5, mysql_upgrade should take of that
|
||||
#
|
||||
#
|
||||
# Should automatically get BINLOG MONITOR and REPLICA MONITOR
|
||||
#
|
||||
SHOW GRANTS FOR user_replclient@localhost;
|
||||
Grants for user_replclient@localhost
|
||||
GRANT BINLOG MONITOR, SLAVE MONITOR ON *.* TO `user_replclient`@`localhost`
|
||||
#
|
||||
# Should automatically get REPLICA MONITOR
|
||||
#
|
||||
SHOW GRANTS FOR user_replslave@localhost;
|
||||
Grants for user_replslave@localhost
|
||||
GRANT REPLICATION SLAVE, SLAVE MONITOR ON *.* TO `user_replslave`@`localhost`
|
||||
connect con1,localhost,user_super_replslave,,test;
|
||||
connection con1;
|
||||
SHOW SLAVE STATUS;
|
||||
disconnect con1;
|
||||
connect con1,localhost,user_replclient,,test;
|
||||
connection con1;
|
||||
SHOW SLAVE STATUS;
|
||||
disconnect con1;
|
||||
connect con1,localhost,user_replslave,,test;
|
||||
connection con1;
|
||||
SHOW RELAYLOG EVENTS;
|
||||
disconnect con1;
|
||||
connection default;
|
||||
SELECT
|
||||
json_value(Priv, '$.version_id'),
|
||||
json_value(Priv, '$.access'),
|
||||
@ -51,6 +109,9 @@ AND
|
||||
user LIKE 'user_%';
|
||||
json_value(Priv, '$.version_id') json_value(Priv, '$.access') user
|
||||
NULL 1073741823 user_all
|
||||
NULL 1048576 user_replclient
|
||||
NULL 524288 user_replslave
|
||||
NULL 32768 user_replsuper
|
||||
NULL 32768 user_super
|
||||
NULL 557056 user_super_replslave
|
||||
DROP TABLE mysql.global_priv;
|
||||
|
@ -25,6 +25,33 @@ CREATE USER user_super_replslave@localhost;
|
||||
GRANT SUPER, REPLICATION SLAVE ON *.* TO user_super_replslave@localhost;
|
||||
SHOW GRANTS FOR user_super_replslave@localhost;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-23610: Slave user can't run "SHOW SLAVE STATUS" anymore after upgrade to 10.5, mysql_upgrade should take of that
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # Users with privilege SUPER prior to 10.5 should successfully execute
|
||||
--echo # SHOW SLAVE STATUS command
|
||||
--echo #
|
||||
CREATE USER user_replsuper@localhost;
|
||||
GRANT SUPER ON *.* TO user_replsuper@localhost;
|
||||
SHOW GRANTS FOR user_replsuper@localhost;
|
||||
|
||||
--echo #
|
||||
--echo # Users with privilege REPLICATION CLIENT prior to 10.5 should successfully execute
|
||||
--echo # SHOW SLAVE STATUS command
|
||||
--echo #
|
||||
CREATE USER user_replclient@localhost;
|
||||
GRANT REPLICATION CLIENT ON *.* TO user_replclient@localhost;
|
||||
SHOW GRANTS FOR user_replclient@localhost;
|
||||
|
||||
--echo #
|
||||
--echo # Users with privilege REPLICATION SLAVE prior to 10.5 should successfully execute
|
||||
--echo # SHOW RELAYLOG EVENTS command
|
||||
--echo #
|
||||
CREATE USER user_replslave@localhost;
|
||||
GRANT REPLICATION SLAVE ON *.* TO user_replslave@localhost;
|
||||
SHOW GRANTS FOR user_replslave@localhost;
|
||||
|
||||
--echo # mysql_upgrade --force --silent 2>&1
|
||||
--exec $MYSQL_UPGRADE --force --silent 2>&1
|
||||
@ -46,6 +73,44 @@ SHOW GRANTS FOR user_super@localhost;
|
||||
--echo #
|
||||
SHOW GRANTS FOR user_super_replslave@localhost;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-23610: Slave user can't run "SHOW SLAVE STATUS" anymore after upgrade to 10.5, mysql_upgrade should take of that
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # Should automatically get BINLOG MONITOR and REPLICA MONITOR
|
||||
--echo #
|
||||
SHOW GRANTS FOR user_replclient@localhost;
|
||||
|
||||
--echo #
|
||||
--echo # Should automatically get REPLICA MONITOR
|
||||
--echo #
|
||||
SHOW GRANTS FOR user_replslave@localhost;
|
||||
|
||||
--connect (con1,localhost,user_super_replslave,,test)
|
||||
--connection con1
|
||||
--disable_result_log
|
||||
SHOW SLAVE STATUS;
|
||||
--enable_result_log
|
||||
--disconnect con1
|
||||
|
||||
--connect (con1,localhost,user_replclient,,test)
|
||||
--connection con1
|
||||
--disable_result_log
|
||||
SHOW SLAVE STATUS;
|
||||
--enable_result_log
|
||||
--disconnect con1
|
||||
|
||||
--connect (con1,localhost,user_replslave,,test)
|
||||
--connection con1
|
||||
--disable_ps_protocol
|
||||
--disable_result_log
|
||||
SHOW RELAYLOG EVENTS;
|
||||
--enable_result_log
|
||||
--enable_ps_protocol
|
||||
--disconnect con1
|
||||
|
||||
--connection default
|
||||
SELECT
|
||||
json_value(Priv, '$.version_id'),
|
||||
json_value(Priv, '$.access'),
|
||||
|
@ -469,7 +469,7 @@ Host User Priv
|
||||
localhost mariadb.sys {"access":0,"version_id":VERSION,"plugin":"mysql_native_password","authentication_string":"","password_last_changed":NOW,"password_lifetime":-1,"default_role":""}
|
||||
role_1 {"access":16384,"version_id":VERSION,"is_role":true}
|
||||
role_2 {"access":0,"version_id":VERSION,"is_role":true}
|
||||
localhost root {"access":274877906943,"version_id":VERSION,"plugin":"mysql_native_password","authentication_string":"","password_last_changed":NOW,"default_role":""}
|
||||
localhost root {"access":549755813887,"version_id":VERSION,"plugin":"mysql_native_password","authentication_string":"","password_last_changed":NOW,"default_role":""}
|
||||
CHECKSUM TABLE mysql.roles_mapping, mysql.time_zone_transition, mysql.plugin,
|
||||
mysql.servers, mysql.func, mysql.innodb_table_stats, mysql.table_stats;
|
||||
Table Checksum
|
||||
|
@ -15,7 +15,7 @@ SET @all_known_privileges_current=(SELECT CAST(json_value(Priv, '$.access') AS U
|
||||
DROP USER user1@localhost;
|
||||
SELECT HEX(@all_known_privileges_current);
|
||||
HEX(@all_known_privileges_current)
|
||||
3FFFFFFFFF
|
||||
7FFFFFFFFF
|
||||
CREATE USER bad_access1@localhost;
|
||||
UPDATE
|
||||
mysql.global_priv
|
||||
|
@ -78,7 +78,7 @@ grant ALL on *.* to test_noprivs@localhost;
|
||||
revoke TRIGGER on *.* from test_noprivs@localhost;
|
||||
show grants for test_noprivs@localhost;
|
||||
Grants for test_noprivs@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, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
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, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY, SLAVE MONITOR ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||
grant TRIGGER on *.* to test_yesprivs@localhost;
|
||||
grant SELECT on priv_db.t1 to test_yesprivs@localhost;
|
||||
@ -168,7 +168,7 @@ grant ALL on *.* to test_noprivs@localhost;
|
||||
revoke UPDATE on *.* from test_noprivs@localhost;
|
||||
show grants for test_noprivs@localhost;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY, SLAVE MONITOR ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||
grant TRIGGER, UPDATE on *.* to test_yesprivs@localhost;
|
||||
show grants for test_yesprivs@localhost;
|
||||
@ -183,7 +183,7 @@ test_noprivs@localhost
|
||||
use priv_db;
|
||||
show grants;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY, SLAVE MONITOR ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
@ -441,7 +441,7 @@ grant ALL on *.* to test_noprivs@localhost;
|
||||
revoke SELECT on *.* from test_noprivs@localhost;
|
||||
show grants for test_noprivs@localhost;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY, SLAVE MONITOR ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||
grant TRIGGER, SELECT on *.* to test_yesprivs@localhost;
|
||||
show grants for test_yesprivs@localhost;
|
||||
@ -457,7 +457,7 @@ test_noprivs@localhost
|
||||
use priv_db;
|
||||
show grants;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY, SLAVE MONITOR ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
create trigger trg5a_1 before INSERT on t1 for each row
|
||||
set @test_var = new.f1;
|
||||
connection default;
|
||||
|
@ -603,7 +603,7 @@ trig 1_1-yes
|
||||
revoke TRIGGER on *.* from test_yesprivs@localhost;
|
||||
show grants for test_yesprivs@localhost;
|
||||
Grants for test_yesprivs@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, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY ON *.* TO `test_yesprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
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, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY, SLAVE MONITOR ON *.* TO `test_yesprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
disconnect yes_privs;
|
||||
connect yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK;
|
||||
select current_user;
|
||||
@ -656,7 +656,7 @@ root@localhost
|
||||
grant TRIGGER on priv_db.* to test_yesprivs@localhost;
|
||||
show grants for test_yesprivs@localhost;
|
||||
Grants for test_yesprivs@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, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY ON *.* TO `test_yesprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
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, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY, SLAVE MONITOR ON *.* TO `test_yesprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT TRIGGER ON `priv_db`.* TO `test_yesprivs`@`localhost`
|
||||
|
||||
trigger privilege on db level for create:
|
||||
|
@ -78,7 +78,7 @@ grant ALL on *.* to test_noprivs@localhost;
|
||||
revoke TRIGGER on *.* from test_noprivs@localhost;
|
||||
show grants for test_noprivs@localhost;
|
||||
Grants for test_noprivs@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, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
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, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY, SLAVE MONITOR ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||
grant TRIGGER on *.* to test_yesprivs@localhost;
|
||||
grant SELECT on priv_db.t1 to test_yesprivs@localhost;
|
||||
@ -168,7 +168,7 @@ grant ALL on *.* to test_noprivs@localhost;
|
||||
revoke UPDATE on *.* from test_noprivs@localhost;
|
||||
show grants for test_noprivs@localhost;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY, SLAVE MONITOR ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||
grant TRIGGER, UPDATE on *.* to test_yesprivs@localhost;
|
||||
show grants for test_yesprivs@localhost;
|
||||
@ -183,7 +183,7 @@ test_noprivs@localhost
|
||||
use priv_db;
|
||||
show grants;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY, SLAVE MONITOR ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
@ -441,7 +441,7 @@ grant ALL on *.* to test_noprivs@localhost;
|
||||
revoke SELECT on *.* from test_noprivs@localhost;
|
||||
show grants for test_noprivs@localhost;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY, SLAVE MONITOR ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||
grant TRIGGER, SELECT on *.* to test_yesprivs@localhost;
|
||||
show grants for test_yesprivs@localhost;
|
||||
@ -457,7 +457,7 @@ test_noprivs@localhost
|
||||
use priv_db;
|
||||
show grants;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY, SLAVE MONITOR ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
create trigger trg5a_1 before INSERT on t1 for each row
|
||||
set @test_var = new.f1;
|
||||
connection default;
|
||||
|
@ -604,7 +604,7 @@ trig 1_1-yes
|
||||
revoke TRIGGER on *.* from test_yesprivs@localhost;
|
||||
show grants for test_yesprivs@localhost;
|
||||
Grants for test_yesprivs@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, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY ON *.* TO `test_yesprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
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, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY, SLAVE MONITOR ON *.* TO `test_yesprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
disconnect yes_privs;
|
||||
connect yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK;
|
||||
select current_user;
|
||||
@ -657,7 +657,7 @@ root@localhost
|
||||
grant TRIGGER on priv_db.* to test_yesprivs@localhost;
|
||||
show grants for test_yesprivs@localhost;
|
||||
Grants for test_yesprivs@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, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY ON *.* TO `test_yesprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
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, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY, SLAVE MONITOR ON *.* TO `test_yesprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT TRIGGER ON `priv_db`.* TO `test_yesprivs`@`localhost`
|
||||
|
||||
trigger privilege on db level for create:
|
||||
|
@ -78,7 +78,7 @@ grant ALL on *.* to test_noprivs@localhost;
|
||||
revoke TRIGGER on *.* from test_noprivs@localhost;
|
||||
show grants for test_noprivs@localhost;
|
||||
Grants for test_noprivs@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, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
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, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY, SLAVE MONITOR ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||
grant TRIGGER on *.* to test_yesprivs@localhost;
|
||||
grant SELECT on priv_db.t1 to test_yesprivs@localhost;
|
||||
@ -168,7 +168,7 @@ grant ALL on *.* to test_noprivs@localhost;
|
||||
revoke UPDATE on *.* from test_noprivs@localhost;
|
||||
show grants for test_noprivs@localhost;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY, SLAVE MONITOR ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||
grant TRIGGER, UPDATE on *.* to test_yesprivs@localhost;
|
||||
show grants for test_yesprivs@localhost;
|
||||
@ -183,7 +183,7 @@ test_noprivs@localhost
|
||||
use priv_db;
|
||||
show grants;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY, SLAVE MONITOR ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
@ -441,7 +441,7 @@ grant ALL on *.* to test_noprivs@localhost;
|
||||
revoke SELECT on *.* from test_noprivs@localhost;
|
||||
show grants for test_noprivs@localhost;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY, SLAVE MONITOR ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||
grant TRIGGER, SELECT on *.* to test_yesprivs@localhost;
|
||||
show grants for test_yesprivs@localhost;
|
||||
@ -457,7 +457,7 @@ test_noprivs@localhost
|
||||
use priv_db;
|
||||
show grants;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY, SLAVE MONITOR ON *.* TO `test_noprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
create trigger trg5a_1 before INSERT on t1 for each row
|
||||
set @test_var = new.f1;
|
||||
connection default;
|
||||
|
@ -604,7 +604,7 @@ trig 1_1-yes
|
||||
revoke TRIGGER on *.* from test_yesprivs@localhost;
|
||||
show grants for test_yesprivs@localhost;
|
||||
Grants for test_yesprivs@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, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY ON *.* TO `test_yesprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
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, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY, SLAVE MONITOR ON *.* TO `test_yesprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
disconnect yes_privs;
|
||||
connect yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK;
|
||||
select current_user;
|
||||
@ -657,7 +657,7 @@ root@localhost
|
||||
grant TRIGGER on priv_db.* to test_yesprivs@localhost;
|
||||
show grants for test_yesprivs@localhost;
|
||||
Grants for test_yesprivs@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, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY ON *.* TO `test_yesprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
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, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY, SLAVE MONITOR ON *.* TO `test_yesprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT TRIGGER ON `priv_db`.* TO `test_yesprivs`@`localhost`
|
||||
|
||||
trigger privilege on db level for create:
|
||||
|
@ -1,5 +1,7 @@
|
||||
connection node_2;
|
||||
connection node_1;
|
||||
connection node_1;
|
||||
connection node_2;
|
||||
connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2;
|
||||
connection node_2a;
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY);
|
||||
|
@ -8,6 +8,10 @@
|
||||
|
||||
--source include/galera_cluster.inc
|
||||
|
||||
--let $node_1=node_1
|
||||
--let $node_2=node_2
|
||||
--source include/auto_increment_offset_save.inc
|
||||
|
||||
--connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2
|
||||
--connection node_2a
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY);
|
||||
@ -18,3 +22,5 @@ SET GLOBAL wsrep_on=OFF;
|
||||
--source include/start_mysqld.inc
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--source include/auto_increment_offset_restore.inc
|
||||
|
@ -135,7 +135,7 @@ SET SESSION wsrep_sync_wait = 15;
|
||||
SET GLOBAL wsrep_on=OFF;
|
||||
# restart
|
||||
DROP TABLE t1;
|
||||
CALL mtr.add_suppression('mysqld: Can\'t find record in \'t1\'');
|
||||
CALL mtr.add_suppression('Can\'t find record in \'t1\'');
|
||||
CALL mtr.add_suppression('Update_rows_v1 apply failed');
|
||||
CALL mtr.add_suppression('Inconsistency detected: Inconsistent by consensus on');
|
||||
CALL mtr.add_suppression('last left .* greater than drain seqno');
|
||||
|
@ -173,7 +173,7 @@ SET GLOBAL wsrep_on=OFF;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
CALL mtr.add_suppression('mysqld: Can\'t find record in \'t1\'');
|
||||
CALL mtr.add_suppression('Can\'t find record in \'t1\'');
|
||||
CALL mtr.add_suppression('Update_rows_v1 apply failed');
|
||||
CALL mtr.add_suppression('Inconsistency detected: Inconsistent by consensus on');
|
||||
CALL mtr.add_suppression('last left .* greater than drain seqno');
|
||||
|
35
mysql-test/suite/innodb/r/gap_locks.result
Normal file
35
mysql-test/suite/innodb/r/gap_locks.result
Normal file
@ -0,0 +1,35 @@
|
||||
CREATE TABLE t1(a INT PRIMARY KEY, b VARCHAR(40), c INT, INDEX(b,c))
|
||||
ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (1,'1',1),(2,'2',1);
|
||||
SET @save_locks= @@GLOBAL.innodb_status_output_locks;
|
||||
SET GLOBAL INNODB_STATUS_OUTPUT_LOCKS = 'ON';
|
||||
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
||||
BEGIN;
|
||||
DELETE FROM t1 WHERE b='2' AND c=2;
|
||||
SHOW ENGINE INNODB STATUS;
|
||||
Type Name Status
|
||||
InnoDB 2 lock struct(s), 1 row lock(s)
|
||||
ROLLBACK;
|
||||
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
||||
BEGIN;
|
||||
DELETE FROM t1 WHERE b='2' AND c=2;
|
||||
SHOW ENGINE INNODB STATUS;
|
||||
Type Name Status
|
||||
InnoDB 2 lock struct(s), 1 row lock(s)
|
||||
ROLLBACK;
|
||||
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||
BEGIN;
|
||||
DELETE FROM t1 WHERE b='2' AND c=2;
|
||||
SHOW ENGINE INNODB STATUS;
|
||||
Type Name Status
|
||||
InnoDB 1 lock struct(s), 0 row lock(s)
|
||||
ROLLBACK;
|
||||
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
|
||||
BEGIN;
|
||||
DELETE FROM t1 WHERE b='2' AND c=2;
|
||||
SHOW ENGINE INNODB STATUS;
|
||||
Type Name Status
|
||||
InnoDB 1 lock struct(s), 0 row lock(s)
|
||||
ROLLBACK;
|
||||
SET GLOBAL INNODB_STATUS_OUTPUT_LOCKS = @save_locks;
|
||||
DROP TABLE t1;
|
29
mysql-test/suite/innodb/t/gap_locks.test
Normal file
29
mysql-test/suite/innodb/t/gap_locks.test
Normal file
@ -0,0 +1,29 @@
|
||||
--source include/have_innodb.inc
|
||||
|
||||
CREATE TABLE t1(a INT PRIMARY KEY, b VARCHAR(40), c INT, INDEX(b,c))
|
||||
ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (1,'1',1),(2,'2',1);
|
||||
|
||||
SET @save_locks= @@GLOBAL.innodb_status_output_locks;
|
||||
SET GLOBAL INNODB_STATUS_OUTPUT_LOCKS = 'ON';
|
||||
|
||||
let $isolation= 4;
|
||||
while ($isolation) {
|
||||
let $tx_isolation= `SELECT CASE $isolation
|
||||
WHEN 1 THEN 'READ UNCOMMITTED'
|
||||
WHEN 2 THEN 'READ COMMITTED'
|
||||
WHEN 3 THEN 'REPEATABLE READ'
|
||||
ELSE 'SERIALIZABLE' END`;
|
||||
|
||||
eval SET TRANSACTION ISOLATION LEVEL $tx_isolation;
|
||||
BEGIN;
|
||||
DELETE FROM t1 WHERE b='2' AND c=2;
|
||||
--replace_regex /.*(\d+ lock struct...), heap size \d+(, \d+ row lock...).*/\1\2/
|
||||
SHOW ENGINE INNODB STATUS;
|
||||
ROLLBACK;
|
||||
|
||||
dec $isolation;
|
||||
}
|
||||
|
||||
SET GLOBAL INNODB_STATUS_OUTPUT_LOCKS = @save_locks;
|
||||
DROP TABLE t1;
|
@ -29,6 +29,10 @@
|
||||
# vardir on tmpfs : ~ 375
|
||||
# vardir on disk : ~ 546
|
||||
--source include/big_test.inc
|
||||
# Possibly related to MDEV-16678, the test seems to deterministically fail on
|
||||
# non-debug builds. innodb_force_recovery=2 (disabling the purge of history)
|
||||
# would seem to help a little.
|
||||
--source include/have_debug.inc
|
||||
# We go with "--send" and "--reap" and that fails with the embedded server.
|
||||
--source include/not_embedded.inc
|
||||
# Its intentional to not take the risk that a run with valgrind times out.
|
||||
|
@ -1,3 +1,9 @@
|
||||
# We should not run this test with embedded as we are using
|
||||
# max_session_mem_used, which causes things to fail/not fail randomly
|
||||
# as memory usage is different compared to normal server.
|
||||
|
||||
--source include/not_embedded.inc
|
||||
|
||||
#
|
||||
# MDEV-11539 test_if_reopen: Assertion `strcmp(share->unique_file_name,filename) || share->last_version' failed upon select from I_S
|
||||
#
|
||||
|
@ -5,11 +5,7 @@ TRUNCATE TABLE performance_schema.events_waits_history_long;
|
||||
TRUNCATE TABLE performance_schema.events_waits_history;
|
||||
TRUNCATE TABLE performance_schema.events_waits_current;
|
||||
select name from performance_schema.setup_instruments
|
||||
where name like "wait/synch/sxlock/%"
|
||||
and name not in
|
||||
("wait/synch/sxlock/innodb/buf_block_lock",
|
||||
"wait/synch/sxlock/innodb/buf_block_debug_latch")
|
||||
order by name;
|
||||
where name like "wait/synch/sxlock/%" order by name;
|
||||
name
|
||||
wait/synch/sxlock/innodb/btr_search_latch
|
||||
wait/synch/sxlock/innodb/dict_operation_lock
|
||||
|
@ -9,6 +9,8 @@
|
||||
# event, which changes the test output.
|
||||
--source include/not_windows.inc
|
||||
--source include/no_protocol.inc
|
||||
# Work around MDEV-24232: WSREP causes extra operations on LOCK_thd_data etc.
|
||||
--source include/have_wsrep.inc
|
||||
--source ../include/wait_for_pfs_thread_count.inc
|
||||
|
||||
--disable_query_log
|
||||
|
@ -16,13 +16,8 @@ TRUNCATE TABLE performance_schema.events_waits_history;
|
||||
TRUNCATE TABLE performance_schema.events_waits_current;
|
||||
|
||||
# Check some SX-locks classes are instrumented
|
||||
# (exclude instruments that depend on compiling options)
|
||||
select name from performance_schema.setup_instruments
|
||||
where name like "wait/synch/sxlock/%"
|
||||
and name not in
|
||||
("wait/synch/sxlock/innodb/buf_block_lock",
|
||||
"wait/synch/sxlock/innodb/buf_block_debug_latch")
|
||||
order by name;
|
||||
where name like "wait/synch/sxlock/%" order by name;
|
||||
|
||||
# Check some SX-locks instances are instrumented
|
||||
select name from performance_schema.rwlock_instances
|
||||
|
@ -23,6 +23,9 @@
|
||||
#if defined(__linux__) || defined(MAP_ALIGNED)
|
||||
#include "my_bit.h"
|
||||
#endif
|
||||
#ifdef HAVE_LINUX_MMAN_H
|
||||
#include <linux/mman.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SOLARIS_LARGE_PAGES
|
||||
#if defined(__sun__) && defined(__GNUC__) && defined(__cplusplus) \
|
||||
@ -325,9 +328,13 @@ uchar *my_large_malloc(size_t *size, myf my_flags)
|
||||
/* this might be 0, in which case we do a standard mmap */
|
||||
if (large_page_size)
|
||||
{
|
||||
#ifdef __linux__
|
||||
mapflag|= MAP_HUGETLB |
|
||||
my_bit_log2_size_t(large_page_size) << MAP_HUGE_SHIFT;
|
||||
#if defined(MAP_HUGETLB) /* linux 2.6.32 */
|
||||
mapflag|= MAP_HUGETLB;
|
||||
#if defined(MAP_HUGE_SHIFT) /* Linux-3.8+ */
|
||||
mapflag|= my_bit_log2_size_t(large_page_size) << MAP_HUGE_SHIFT;
|
||||
#else
|
||||
# warning "No explicit large page (HUGETLB pages) support in Linux < 3.8"
|
||||
#endif
|
||||
#elif defined(MAP_ALIGNED)
|
||||
mapflag|= MAP_ALIGNED_SUPER |
|
||||
MAP_ALIGNED(my_bit_log2_size_t(large_page_size));
|
||||
|
@ -66,7 +66,8 @@ enum privilege_t: unsigned long long
|
||||
REPL_SLAVE_ADMIN_ACL = (1ULL << 34), // Added in 10.5.2
|
||||
REPL_MASTER_ADMIN_ACL = (1ULL << 35), // Added in 10.5.2
|
||||
BINLOG_ADMIN_ACL = (1ULL << 36), // Added in 10.5.2
|
||||
BINLOG_REPLAY_ACL = (1ULL << 37) // Added in 10.5.2
|
||||
BINLOG_REPLAY_ACL = (1ULL << 37), // Added in 10.5.2
|
||||
SLAVE_MONITOR_ACL = (1ULL << 38) // Added in 10.5.8
|
||||
/*
|
||||
When adding new privilege bits, don't forget to update:
|
||||
In this file:
|
||||
@ -93,13 +94,18 @@ enum privilege_t: unsigned long long
|
||||
*/
|
||||
};
|
||||
|
||||
constexpr static inline privilege_t ALL_KNOWN_BITS(privilege_t x)
|
||||
{
|
||||
return (privilege_t)(x | (x-1));
|
||||
}
|
||||
|
||||
// Version markers
|
||||
constexpr privilege_t LAST_100304_ACL= DELETE_HISTORY_ACL;
|
||||
constexpr privilege_t LAST_100502_ACL= BINLOG_REPLAY_ACL;
|
||||
constexpr privilege_t LAST_100508_ACL= SLAVE_MONITOR_ACL;
|
||||
|
||||
// Current version markers
|
||||
constexpr privilege_t LAST_CURRENT_ACL= LAST_100502_ACL;
|
||||
constexpr privilege_t LAST_CURRENT_ACL= LAST_100508_ACL;
|
||||
constexpr uint PRIVILEGE_T_MAX_BIT=
|
||||
my_bit_log2_uint64((ulonglong) LAST_CURRENT_ACL);
|
||||
|
||||
@ -108,15 +114,16 @@ static_assert((privilege_t)(1ULL << PRIVILEGE_T_MAX_BIT) == LAST_CURRENT_ACL,
|
||||
"LAST_CURRENT_ACL and PRIVILEGE_T_MAX_BIT do not match");
|
||||
|
||||
// A combination of all bits defined in 10.3.4 (and earlier)
|
||||
constexpr privilege_t ALL_KNOWN_ACL_100304 =
|
||||
(privilege_t) ((LAST_100304_ACL << 1) - 1);
|
||||
constexpr privilege_t ALL_KNOWN_ACL_100304 = ALL_KNOWN_BITS(LAST_100304_ACL);
|
||||
|
||||
// A combination of all bits defined in 10.5.2
|
||||
constexpr privilege_t ALL_KNOWN_ACL_100502=
|
||||
(privilege_t) ((LAST_100502_ACL << 1) - 1);
|
||||
constexpr privilege_t ALL_KNOWN_ACL_100502= ALL_KNOWN_BITS(LAST_100502_ACL);
|
||||
|
||||
// A combination of all bits defined in 10.5.8
|
||||
constexpr privilege_t ALL_KNOWN_ACL_100508= ALL_KNOWN_BITS(LAST_100508_ACL);
|
||||
|
||||
// A combination of all bits defined as of the current version
|
||||
constexpr privilege_t ALL_KNOWN_ACL= ALL_KNOWN_ACL_100502;
|
||||
constexpr privilege_t ALL_KNOWN_ACL= ALL_KNOWN_BITS(LAST_CURRENT_ACL);
|
||||
|
||||
|
||||
// Unary operators
|
||||
@ -269,7 +276,7 @@ constexpr privilege_t GLOBAL_ACLS=
|
||||
SUPER_ACL | RELOAD_ACL | SHUTDOWN_ACL | PROCESS_ACL | FILE_ACL |
|
||||
REPL_SLAVE_ACL | BINLOG_MONITOR_ACL |
|
||||
GLOBAL_SUPER_ADDED_SINCE_USER_TABLE_ACLS |
|
||||
REPL_MASTER_ADMIN_ACL;
|
||||
REPL_MASTER_ADMIN_ACL | SLAVE_MONITOR_ACL;
|
||||
|
||||
constexpr privilege_t DEFAULT_CREATE_PROC_ACLS=
|
||||
ALTER_PROC_ACL | EXECUTE_ACL;
|
||||
@ -505,9 +512,11 @@ constexpr privilege_t PRIV_STMT_STOP_SLAVE= REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
|
||||
// Was SUPER_ACL prior to 10.5.2
|
||||
constexpr privilege_t PRIV_STMT_CHANGE_MASTER= REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
|
||||
// Was (SUPER_ACL | REPL_CLIENT_ACL) prior to 10.5.2
|
||||
constexpr privilege_t PRIV_STMT_SHOW_SLAVE_STATUS= REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
|
||||
// Was (SUPER_ACL | REPL_SLAVE_ADMIN_ACL) from 10.5.2 to 10.5.7
|
||||
constexpr privilege_t PRIV_STMT_SHOW_SLAVE_STATUS= SLAVE_MONITOR_ACL | SUPER_ACL;
|
||||
// Was REPL_SLAVE_ACL prior to 10.5.2
|
||||
constexpr privilege_t PRIV_STMT_SHOW_RELAYLOG_EVENTS= REPL_SLAVE_ADMIN_ACL;
|
||||
// Was REPL_SLAVE_ADMIN_ACL from 10.5.2 to 10.5.7
|
||||
constexpr privilege_t PRIV_STMT_SHOW_RELAYLOG_EVENTS= SLAVE_MONITOR_ACL;
|
||||
|
||||
/*
|
||||
Privileges related to binlog replying.
|
||||
|
@ -1057,6 +1057,9 @@ class User_table_tabular: public User_table
|
||||
if (access & REPL_SLAVE_ACL)
|
||||
access|= REPL_MASTER_ADMIN_ACL;
|
||||
|
||||
if (access & REPL_SLAVE_ACL)
|
||||
access|= SLAVE_MONITOR_ACL;
|
||||
|
||||
return access & GLOBAL_ACLS;
|
||||
}
|
||||
|
||||
@ -1528,7 +1531,11 @@ class User_table_json: public User_table
|
||||
{
|
||||
privilege_t mask= ALL_KNOWN_ACL_100304;
|
||||
ulonglong orig_access= access;
|
||||
if (version_id >= 100502)
|
||||
if (version_id >= 100508)
|
||||
{
|
||||
mask= ALL_KNOWN_ACL_100508;
|
||||
}
|
||||
else if (version_id >= 100502 && version_id < 100508)
|
||||
{
|
||||
mask= ALL_KNOWN_ACL_100502;
|
||||
}
|
||||
@ -1554,6 +1561,12 @@ class User_table_json: public User_table
|
||||
}
|
||||
access|= GLOBAL_SUPER_ADDED_SINCE_USER_TABLE_ACLS;
|
||||
}
|
||||
/*
|
||||
REPLICATION_CLIENT(BINLOG_MONITOR_ACL) should allow SHOW SLAVE STATUS
|
||||
REPLICATION SLAVE should allow SHOW RELAYLOG EVENTS
|
||||
*/
|
||||
if (access & BINLOG_MONITOR_ACL || access & REPL_SLAVE_ACL)
|
||||
access|= SLAVE_MONITOR_ACL;
|
||||
}
|
||||
|
||||
if (orig_access & ~mask)
|
||||
@ -8974,7 +8987,7 @@ static const char *command_array[]=
|
||||
"CREATE USER", "EVENT", "TRIGGER", "CREATE TABLESPACE", "DELETE HISTORY",
|
||||
"SET USER", "FEDERATED ADMIN", "CONNECTION ADMIN", "READ_ONLY ADMIN",
|
||||
"REPLICATION SLAVE ADMIN", "REPLICATION MASTER ADMIN", "BINLOG ADMIN",
|
||||
"BINLOG REPLAY"
|
||||
"BINLOG REPLAY", "SLAVE MONITOR"
|
||||
};
|
||||
|
||||
static uint command_lengths[]=
|
||||
@ -8987,7 +9000,7 @@ static uint command_lengths[]=
|
||||
11, 5, 7, 17, 14,
|
||||
8, 15, 16, 15,
|
||||
23, 24, 12,
|
||||
13
|
||||
13, 13
|
||||
};
|
||||
|
||||
|
||||
|
@ -484,7 +484,8 @@ static struct show_privileges_st sys_privileges[]=
|
||||
{"Binlog admin", "Server", "To purge binary logs"},
|
||||
{"Binlog monitor", "Server", "To use SHOW BINLOG STATUS and SHOW BINARY LOG"},
|
||||
{"Replication master admin", "Server", "To monitor connected slaves"},
|
||||
{"Replication slave admin", "Server", "To start/monitor/stop slave and apply binlog events"},
|
||||
{"Replication slave admin", "Server", "To start/stop slave and apply binlog events"},
|
||||
{"Slave monitor", "Server", "To use SHOW SLAVE STATUS and SHOW RELAYLOG EVENTS"},
|
||||
{"Replication slave","Server Admin","To read binary log events from the master"},
|
||||
{"Select", "Tables", "To retrieve rows from table"},
|
||||
{"Show databases","Server Admin","To see all databases with SHOW DATABASES"},
|
||||
|
@ -17045,6 +17045,7 @@ object_privilege:
|
||||
| BINLOG_SYM REPLAY_SYM { $$= BINLOG_REPLAY_ACL; }
|
||||
| REPLICATION MASTER_SYM ADMIN_SYM { $$= REPL_MASTER_ADMIN_ACL; }
|
||||
| REPLICATION SLAVE ADMIN_SYM { $$= REPL_SLAVE_ADMIN_ACL; }
|
||||
| SLAVE MONITOR_SYM { $$= SLAVE_MONITOR_ACL; }
|
||||
;
|
||||
|
||||
opt_and:
|
||||
|
@ -874,7 +874,13 @@ public:
|
||||
Timeval(my_time_t sec, ulong usec)
|
||||
{
|
||||
tv_sec= sec;
|
||||
tv_usec= usec;
|
||||
/*
|
||||
Since tv_usec is not always of type ulong, cast usec parameter
|
||||
explicitly to uint to avoid compiler warnings about losing
|
||||
integer precision.
|
||||
*/
|
||||
DBUG_ASSERT(usec < 1000000);
|
||||
tv_usec= (uint)usec;
|
||||
}
|
||||
explicit Timeval(const timeval &tv)
|
||||
:timeval(tv)
|
||||
|
@ -12,9 +12,7 @@ macro(APPEND_FOR_CPACK V)
|
||||
endmacro()
|
||||
|
||||
IF(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" OR
|
||||
CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64" OR
|
||||
CMAKE_SYSTEM_PROCESSOR STREQUAL "i386" OR
|
||||
CMAKE_SYSTEM_PROCESSOR STREQUAL "i686")
|
||||
CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64")
|
||||
add_subdirectory(columnstore)
|
||||
|
||||
IF(TARGET columnstore)
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 4813838df862514bbaa868cd7328bc015b00ddba
|
||||
Subproject commit 8d1fb3ed2f1a62805cfbf09ff110e66d6619e8e3
|
@ -343,22 +343,6 @@ in the debug version */
|
||||
static ulint buf_dbg_counter;
|
||||
#endif /* UNIV_DEBUG */
|
||||
|
||||
#if defined UNIV_PFS_MUTEX || defined UNIV_PFS_RWLOCK
|
||||
# ifndef PFS_SKIP_BUFFER_MUTEX_RWLOCK
|
||||
|
||||
/* If defined, register buf_block_t::lock
|
||||
in one group after their initialization. */
|
||||
# define PFS_GROUP_BUFFER_SYNC
|
||||
|
||||
/* This define caps the number of mutexes/rwlocks can
|
||||
be registered with performance schema. Developers can
|
||||
modify this define if necessary. Please note, this would
|
||||
be effective only if PFS_GROUP_BUFFER_SYNC is defined. */
|
||||
# define PFS_MAX_BUFFER_MUTEX_LOCK_REGISTER ULINT_MAX
|
||||
|
||||
# endif /* !PFS_SKIP_BUFFER_MUTEX_RWLOCK */
|
||||
#endif /* UNIV_PFS_MUTEX || UNIV_PFS_RWLOCK */
|
||||
|
||||
/** Macro to determine whether the read of write counter is used depending
|
||||
on the io_type */
|
||||
#define MONITOR_RW_COUNTER(io_type, counter) \
|
||||
@ -1217,52 +1201,6 @@ void buf_page_print(const byte* read_buf, ulint zip_size)
|
||||
}
|
||||
}
|
||||
|
||||
# ifdef PFS_GROUP_BUFFER_SYNC
|
||||
/********************************************************************//**
|
||||
This function registers mutexes and rwlocks in buffer blocks with
|
||||
performance schema. If PFS_MAX_BUFFER_MUTEX_LOCK_REGISTER is
|
||||
defined to be a value less than chunk->size, then only mutexes
|
||||
and rwlocks in the first PFS_MAX_BUFFER_MUTEX_LOCK_REGISTER
|
||||
blocks are registered. */
|
||||
static
|
||||
void
|
||||
pfs_register_buffer_block(
|
||||
/*======================*/
|
||||
buf_pool_t::chunk_t* chunk) /*!< in/out: chunk of buffers */
|
||||
{
|
||||
buf_block_t* block;
|
||||
ulint num_to_register;
|
||||
|
||||
block = chunk->blocks;
|
||||
|
||||
num_to_register = ut_min(
|
||||
chunk->size, PFS_MAX_BUFFER_MUTEX_LOCK_REGISTER);
|
||||
|
||||
for (ulint i = 0; i < num_to_register; i++) {
|
||||
rw_lock_t* rwlock;
|
||||
|
||||
# ifdef UNIV_PFS_RWLOCK
|
||||
rwlock = &block->lock;
|
||||
ut_a(!rwlock->pfs_psi);
|
||||
rwlock->pfs_psi = (PSI_server)
|
||||
? PSI_server->init_rwlock(buf_block_lock_key, rwlock)
|
||||
: NULL;
|
||||
|
||||
# ifdef UNIV_DEBUG
|
||||
rwlock = block->debug_latch;
|
||||
ut_a(!rwlock->pfs_psi);
|
||||
rwlock->pfs_psi = (PSI_server)
|
||||
? PSI_server->init_rwlock(buf_block_debug_latch_key,
|
||||
rwlock)
|
||||
: NULL;
|
||||
# endif /* UNIV_DEBUG */
|
||||
|
||||
# endif /* UNIV_PFS_RWLOCK */
|
||||
block++;
|
||||
}
|
||||
}
|
||||
# endif /* PFS_GROUP_BUFFER_SYNC */
|
||||
|
||||
/** Initialize a buffer page descriptor.
|
||||
@param[in,out] block buffer page descriptor
|
||||
@param[in] frame buffer page frame */
|
||||
@ -1288,28 +1226,11 @@ buf_block_init(buf_block_t* block, byte* frame)
|
||||
|
||||
ut_d(block->debug_latch = (rw_lock_t *) ut_malloc_nokey(sizeof(rw_lock_t)));
|
||||
|
||||
#if defined PFS_SKIP_BUFFER_MUTEX_RWLOCK || defined PFS_GROUP_BUFFER_SYNC
|
||||
/* If PFS_SKIP_BUFFER_MUTEX_RWLOCK is defined, skip registration
|
||||
of buffer block rwlock with performance schema.
|
||||
|
||||
If PFS_GROUP_BUFFER_SYNC is defined, skip the registration
|
||||
since buffer block rwlock will be registered later in
|
||||
pfs_register_buffer_block(). */
|
||||
|
||||
rw_lock_create(PFS_NOT_INSTRUMENTED, &block->lock, SYNC_LEVEL_VARYING);
|
||||
|
||||
ut_d(rw_lock_create(PFS_NOT_INSTRUMENTED, block->debug_latch,
|
||||
SYNC_LEVEL_VARYING));
|
||||
|
||||
#else /* PFS_SKIP_BUFFER_MUTEX_RWLOCK || PFS_GROUP_BUFFER_SYNC */
|
||||
|
||||
rw_lock_create(buf_block_lock_key, &block->lock, SYNC_LEVEL_VARYING);
|
||||
|
||||
ut_d(rw_lock_create(buf_block_debug_latch_key,
|
||||
block->debug_latch, SYNC_LEVEL_VARYING));
|
||||
|
||||
#endif /* PFS_SKIP_BUFFER_MUTEX_RWLOCK || PFS_GROUP_BUFFER_SYNC */
|
||||
|
||||
block->lock.is_block_lock = 1;
|
||||
|
||||
ut_ad(rw_lock_validate(&(block->lock)));
|
||||
@ -1396,9 +1317,6 @@ inline bool buf_pool_t::chunk_t::create(size_t bytes)
|
||||
|
||||
reg();
|
||||
|
||||
#ifdef PFS_GROUP_BUFFER_SYNC
|
||||
pfs_register_buffer_block(this);
|
||||
#endif /* PFS_GROUP_BUFFER_SYNC */
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -3755,9 +3673,9 @@ buf_page_create(fil_space_t *space, uint32_t offset,
|
||||
free_block->initialise(page_id, zip_size, 1);
|
||||
|
||||
const ulint fold= page_id.fold();
|
||||
loop:
|
||||
mysql_mutex_lock(&buf_pool.mutex);
|
||||
|
||||
loop:
|
||||
buf_block_t *block= reinterpret_cast<buf_block_t*>
|
||||
(buf_pool.page_hash_get_low(page_id, fold));
|
||||
|
||||
@ -3775,17 +3693,15 @@ loop:
|
||||
if (!mtr->have_x_latch(*block))
|
||||
{
|
||||
buf_block_buf_fix_inc(block, __FILE__, __LINE__);
|
||||
while (!rw_lock_x_lock_nowait(&block->lock))
|
||||
{
|
||||
while (block->page.io_fix() != BUF_IO_NONE ||
|
||||
block->page.buf_fix_count() != 1)
|
||||
{
|
||||
timespec abstime;
|
||||
set_timespec_nsec(abstime, 1000000);
|
||||
mysql_cond_timedwait(&buf_pool.done_flush_list, &buf_pool.mutex,
|
||||
&abstime);
|
||||
}
|
||||
/* Wait for buf_page_write_complete() to release block->lock.
|
||||
We must not hold buf_pool.mutex while waiting. */
|
||||
timespec abstime;
|
||||
set_timespec_nsec(abstime, 1000000);
|
||||
mysql_cond_timedwait(&buf_pool.done_flush_list, &buf_pool.mutex,
|
||||
&abstime);
|
||||
}
|
||||
rw_lock_x_lock(&block->lock);
|
||||
mtr_memo_push(mtr, block, MTR_MEMO_PAGE_X_FIX);
|
||||
}
|
||||
else
|
||||
@ -3805,7 +3721,11 @@ loop:
|
||||
if (block->page.io_fix() != BUF_IO_NONE)
|
||||
{
|
||||
hash_lock->write_unlock();
|
||||
mysql_mutex_unlock(&buf_pool.mutex);
|
||||
/* Wait for buf_page_write_complete() to release the I/O fix. */
|
||||
timespec abstime;
|
||||
set_timespec_nsec(abstime, 1000000);
|
||||
mysql_cond_timedwait(&buf_pool.done_flush_list, &buf_pool.mutex,
|
||||
&abstime);
|
||||
goto loop;
|
||||
}
|
||||
|
||||
|
@ -492,7 +492,7 @@ void fil_node_t::prepare_to_close_or_detach()
|
||||
}
|
||||
|
||||
/** Flush any writes cached by the file system. */
|
||||
inline void fil_space_t::flush_low()
|
||||
void fil_space_t::flush_low()
|
||||
{
|
||||
ut_ad(!mutex_own(&fil_system.mutex));
|
||||
|
||||
|
@ -562,12 +562,6 @@ performance schema instrumented if "UNIV_PFS_RWLOCK"
|
||||
is defined */
|
||||
static PSI_rwlock_info all_innodb_rwlocks[] = {
|
||||
PSI_RWLOCK_KEY(btr_search_latch),
|
||||
# ifndef PFS_SKIP_BUFFER_MUTEX_RWLOCK
|
||||
PSI_RWLOCK_KEY(buf_block_lock),
|
||||
# endif /* !PFS_SKIP_BUFFER_MUTEX_RWLOCK */
|
||||
# ifdef UNIV_DEBUG
|
||||
PSI_RWLOCK_KEY(buf_block_debug_latch),
|
||||
# endif /* UNIV_DEBUG */
|
||||
PSI_RWLOCK_KEY(dict_operation_lock),
|
||||
PSI_RWLOCK_KEY(fil_space_latch),
|
||||
PSI_RWLOCK_KEY(fts_cache_rw_lock),
|
||||
@ -1470,7 +1464,7 @@ thd_trx_is_auto_commit(
|
||||
&& !thd_test_options(
|
||||
thd,
|
||||
OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN)
|
||||
&& thd_is_select(thd));
|
||||
&& thd_sql_command(thd) == SQLCOM_SELECT);
|
||||
}
|
||||
|
||||
/******************************************************************//**
|
||||
@ -1506,17 +1500,6 @@ thd_query_start_micro(
|
||||
return thd_start_utime(thd);
|
||||
}
|
||||
|
||||
/******************************************************************//**
|
||||
Returns true if the thread is executing a SELECT statement.
|
||||
@return true if thd is executing SELECT */
|
||||
ibool
|
||||
thd_is_select(
|
||||
/*==========*/
|
||||
const THD* thd) /*!< in: thread handle */
|
||||
{
|
||||
return(thd_sql_command(thd) == SQLCOM_SELECT);
|
||||
}
|
||||
|
||||
/******************************************************************//**
|
||||
Returns the lock wait timeout for the current connection.
|
||||
@return the lock wait timeout, in seconds */
|
||||
|
@ -303,7 +303,8 @@ struct btr_search_sys_t
|
||||
/** Get an adaptive hash index partition */
|
||||
partition *get_part(const dict_index_t &index) const
|
||||
{
|
||||
ut_ad(index.table->space->id == index.table->space_id);
|
||||
ut_ad(!index.table->space ||
|
||||
index.table->space->id == index.table->space_id);
|
||||
return get_part(ulint(index.id), index.table->space_id);
|
||||
}
|
||||
|
||||
|
@ -181,14 +181,6 @@ const char*
|
||||
innobase_basename(
|
||||
const char* path_name);
|
||||
|
||||
/******************************************************************//**
|
||||
Returns true if the thread is executing a SELECT statement.
|
||||
@return true if thd is executing SELECT */
|
||||
ibool
|
||||
thd_is_select(
|
||||
/*==========*/
|
||||
const THD* thd); /*!< in: thread handle */
|
||||
|
||||
/******************************************************************//**
|
||||
Converts an identifier to a table name. */
|
||||
void
|
||||
|
@ -145,7 +145,7 @@ private:
|
||||
};
|
||||
|
||||
|
||||
#ifdef HAVE_IB_LINUX_FUTEX
|
||||
#ifdef __linux__
|
||||
|
||||
#include <linux/futex.h>
|
||||
#include <sys/syscall.h>
|
||||
@ -261,7 +261,7 @@ private:
|
||||
std::atomic<int32> m_lock_word;
|
||||
};
|
||||
|
||||
#endif /* HAVE_IB_LINUX_FUTEX */
|
||||
#endif /* __linux__ */
|
||||
|
||||
template <template <typename> class Policy>
|
||||
struct TTASMutex {
|
||||
|
@ -37,14 +37,6 @@ Created 9/5/1995 Heikki Tuuri
|
||||
|
||||
#include "univ.i"
|
||||
|
||||
#if defined UNIV_PFS_MUTEX || defined UNIV_PFS_RWLOCK
|
||||
|
||||
/* By default, buffer mutexes and rwlocks will be excluded from
|
||||
instrumentation due to their large number of instances. */
|
||||
# define PFS_SKIP_BUFFER_MUTEX_RWLOCK
|
||||
|
||||
#endif /* UNIV_PFS_MUTEX || UNIV_PFS_RWLOCK */
|
||||
|
||||
#ifdef UNIV_PFS_MUTEX
|
||||
/* Key defines to register InnoDB mutexes with performance schema */
|
||||
extern mysql_pfs_key_t buf_pool_mutex_key;
|
||||
@ -96,10 +88,6 @@ extern mysql_pfs_key_t read_view_mutex_key;
|
||||
/* Following are rwlock keys used to register with MySQL
|
||||
performance schema */
|
||||
extern mysql_pfs_key_t btr_search_latch_key;
|
||||
extern mysql_pfs_key_t buf_block_lock_key;
|
||||
# ifdef UNIV_DEBUG
|
||||
extern mysql_pfs_key_t buf_block_debug_latch_key;
|
||||
# endif /* UNIV_DEBUG */
|
||||
extern mysql_pfs_key_t dict_operation_lock_key;
|
||||
extern mysql_pfs_key_t fil_space_latch_key;
|
||||
extern mysql_pfs_key_t fts_cache_rw_lock_key;
|
||||
|
@ -24,11 +24,8 @@ Policy based mutexes.
|
||||
Created 2012-03-24 Sunny Bains.
|
||||
***********************************************************************/
|
||||
|
||||
#pragma once
|
||||
#ifndef UNIV_INNOCHECKSUM
|
||||
|
||||
#ifndef ut0mutex_h
|
||||
#define ut0mutex_h
|
||||
|
||||
#include "sync0policy.h"
|
||||
#include "ib0mutex.h"
|
||||
|
||||
@ -38,9 +35,9 @@ Created 2012-03-24 Sunny Bains.
|
||||
@param[in] T The resulting typedef alias */
|
||||
#define UT_MUTEX_TYPE(M, P, T) typedef PolicyMutex<M<P> > T;
|
||||
|
||||
# ifdef HAVE_IB_LINUX_FUTEX
|
||||
# ifdef __linux__
|
||||
UT_MUTEX_TYPE(TTASFutexMutex, GenericPolicy, FutexMutex);
|
||||
# endif /* HAVE_IB_LINUX_FUTEX */
|
||||
# endif /* __linux__ */
|
||||
|
||||
UT_MUTEX_TYPE(TTASMutex, GenericPolicy, SpinMutex);
|
||||
UT_MUTEX_TYPE(OSTrackMutex, GenericPolicy, SysMutex);
|
||||
@ -178,6 +175,4 @@ void mutex_destroy(
|
||||
mutex->destroy();
|
||||
}
|
||||
|
||||
#endif /* ut0mutex_h */
|
||||
|
||||
#endif /* UNIV_INNOCHECKSUM */
|
||||
|
@ -156,7 +156,7 @@ store the given number of bits.
|
||||
/** Determines if a number is zero or a power of two.
|
||||
@param[in] n number
|
||||
@return nonzero if n is zero or a power of two; zero otherwise */
|
||||
#define ut_is_2pow(n) UNIV_LIKELY(!((n) & ((n) - 1)))
|
||||
#define ut_is_2pow(n) (!((n) & ((n) - 1)))
|
||||
|
||||
/** Functor that compares two C strings. Can be used as a comparator for
|
||||
e.g. std::map that uses char* as keys. */
|
||||
|
@ -82,8 +82,6 @@ IF(INNODB_COMPILER_HINTS)
|
||||
ADD_DEFINITIONS("-DCOMPILER_HINTS")
|
||||
ENDIF()
|
||||
|
||||
SET(MUTEXTYPE "event" CACHE STRING "Mutex type: event, sys or futex")
|
||||
|
||||
# Enable InnoDB's UNIV_DEBUG in debug builds
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DUNIV_DEBUG")
|
||||
|
||||
@ -130,48 +128,8 @@ IF(NOT MSVC)
|
||||
CMAKE_C_COMPILER_VERSION VERSION_LESS "6.0.0")
|
||||
SET_SOURCE_FILES_PROPERTIES(trx/trx0rec.cc PROPERTIES COMPILE_FLAGS -O1)
|
||||
ENDIF()
|
||||
|
||||
# Only use futexes on Linux if GCC atomics are available
|
||||
IF(NOT MSVC AND NOT CMAKE_CROSSCOMPILING)
|
||||
CHECK_C_SOURCE_RUNS(
|
||||
"
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
#include <assert.h>
|
||||
#include <linux/futex.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/syscall.h>
|
||||
|
||||
int futex_wait(int* futex, int v) {
|
||||
return(syscall(SYS_futex, futex, FUTEX_WAIT_PRIVATE, v, NULL, NULL, 0));
|
||||
}
|
||||
|
||||
int futex_signal(int* futex) {
|
||||
return(syscall(SYS_futex, futex, FUTEX_WAKE, 1, NULL, NULL, 0));
|
||||
}
|
||||
|
||||
int main() {
|
||||
int ret;
|
||||
int m = 1;
|
||||
|
||||
/* It is setup to fail and return EWOULDBLOCK. */
|
||||
ret = futex_wait(&m, 0);
|
||||
assert(ret == -1 && errno == EWOULDBLOCK);
|
||||
/* Shouldn't wake up any threads. */
|
||||
assert(futex_signal(&m) == 0);
|
||||
|
||||
return(0);
|
||||
}"
|
||||
HAVE_IB_LINUX_FUTEX)
|
||||
ENDIF()
|
||||
|
||||
IF(HAVE_IB_LINUX_FUTEX)
|
||||
ADD_DEFINITIONS(-DHAVE_IB_LINUX_FUTEX=1)
|
||||
ENDIF()
|
||||
|
||||
ENDIF(NOT MSVC)
|
||||
|
||||
CHECK_FUNCTION_EXISTS(vasprintf HAVE_VASPRINTF)
|
||||
|
||||
CHECK_CXX_SOURCE_COMPILES("struct t1{ int a; char *b; }; struct t1 c= { .a=1, .b=0 }; main() { }" HAVE_C99_INITIALIZERS)
|
||||
@ -183,7 +141,7 @@ SET(MUTEXTYPE "event" CACHE STRING "Mutex type: event, sys or futex")
|
||||
|
||||
IF(MUTEXTYPE MATCHES "event")
|
||||
ADD_DEFINITIONS(-DMUTEX_EVENT)
|
||||
ELSEIF(MUTEXTYPE MATCHES "futex" AND DEFINED HAVE_IB_LINUX_FUTEX)
|
||||
ELSEIF(MUTEXTYPE MATCHES "futex" AND CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
ADD_DEFINITIONS(-DMUTEX_FUTEX)
|
||||
ELSE()
|
||||
ADD_DEFINITIONS(-DMUTEX_SYS)
|
||||
|
@ -100,7 +100,7 @@ public:
|
||||
private:
|
||||
#if defined(__linux__) || defined (_WIN32)
|
||||
std::atomic<int> m_signalled;
|
||||
const std::memory_order mem_order = std::memory_order::memory_order_acq_rel;
|
||||
static constexpr std::memory_order mem_order= std::memory_order_acq_rel;
|
||||
public:
|
||||
binary_semaphore() :m_signalled(0) {}
|
||||
#else
|
||||
|
@ -4542,12 +4542,11 @@ aborted:
|
||||
|| prebuilt->table->no_rollback()
|
||||
|| srv_read_only_mode);
|
||||
|
||||
/* Do not lock gaps for plain SELECT
|
||||
at READ UNCOMMITTED or READ COMMITTED isolation level */
|
||||
/* Do not lock gaps at READ UNCOMMITTED or READ COMMITTED
|
||||
isolation level */
|
||||
const bool set_also_gap_locks =
|
||||
prebuilt->select_lock_type != LOCK_NONE
|
||||
&& (trx->isolation_level > TRX_ISO_READ_COMMITTED
|
||||
|| !thd_is_select(trx->mysql_thd))
|
||||
&& trx->isolation_level > TRX_ISO_READ_COMMITTED
|
||||
#ifdef WITH_WSREP
|
||||
&& !wsrep_thd_skip_locking(trx->mysql_thd)
|
||||
#endif /* WITH_WSREP */
|
||||
@ -4755,7 +4754,6 @@ rec_loop:
|
||||
if (page_rec_is_supremum(rec)) {
|
||||
|
||||
if (set_also_gap_locks
|
||||
&& trx->isolation_level > TRX_ISO_READ_COMMITTED
|
||||
&& !dict_index_is_spatial(index)) {
|
||||
|
||||
/* Try to place a lock on the index record */
|
||||
@ -5020,8 +5018,16 @@ wrong_offs:
|
||||
goto no_gap_lock;
|
||||
}
|
||||
|
||||
if (!set_also_gap_locks
|
||||
|| (unique_search && !rec_get_deleted_flag(rec, comp))
|
||||
#ifdef WITH_WSREP
|
||||
if (UNIV_UNLIKELY(!set_also_gap_locks)) {
|
||||
ut_ad(wsrep_thd_skip_locking(trx->mysql_thd));
|
||||
goto no_gap_lock;
|
||||
}
|
||||
#else /* WITH_WSREP */
|
||||
ut_ad(set_also_gap_locks);
|
||||
#endif /* WITH_WSREP */
|
||||
|
||||
if ((unique_search && !rec_get_deleted_flag(rec, comp))
|
||||
|| dict_index_is_spatial(index)) {
|
||||
|
||||
goto no_gap_lock;
|
||||
|
@ -1307,11 +1307,11 @@ sync_latch_meta_init()
|
||||
LATCH_ADD_RWLOCK(BTR_SEARCH, SYNC_SEARCH_SYS, btr_search_latch_key);
|
||||
|
||||
LATCH_ADD_RWLOCK(BUF_BLOCK_LOCK, SYNC_LEVEL_VARYING,
|
||||
buf_block_lock_key);
|
||||
PFS_NOT_INSTRUMENTED);
|
||||
|
||||
#ifdef UNIV_DEBUG
|
||||
LATCH_ADD_RWLOCK(BUF_BLOCK_DEBUG, SYNC_LEVEL_VARYING,
|
||||
buf_block_debug_latch_key);
|
||||
PFS_NOT_INSTRUMENTED);
|
||||
#endif /* UNIV_DEBUG */
|
||||
|
||||
LATCH_ADD_RWLOCK(DICT_OPERATION, SYNC_DICT_OPERATION,
|
||||
|
@ -82,10 +82,6 @@ mysql_pfs_key_t read_view_mutex_key;
|
||||
#endif /* UNIV_PFS_MUTEX */
|
||||
#ifdef UNIV_PFS_RWLOCK
|
||||
mysql_pfs_key_t btr_search_latch_key;
|
||||
mysql_pfs_key_t buf_block_lock_key;
|
||||
# ifdef UNIV_DEBUG
|
||||
mysql_pfs_key_t buf_block_debug_latch_key;
|
||||
# endif /* UNIV_DEBUG */
|
||||
mysql_pfs_key_t dict_operation_lock_key;
|
||||
mysql_pfs_key_t index_tree_rw_lock_key;
|
||||
mysql_pfs_key_t index_online_log_key;
|
||||
|
Loading…
x
Reference in New Issue
Block a user