summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmake/os/WindowsCache.cmake1
-rw-r--r--config.h.cmake1
-rw-r--r--configure.cmake1
-rwxr-xr-xdebian/rules4
-rw-r--r--include/my_sys.h6
-rw-r--r--mysql-test/main/drop.test2
-rw-r--r--mysql-test/main/grant.result6
-rw-r--r--mysql-test/main/grant.test1
-rw-r--r--mysql-test/main/grant_slave_admin.result28
-rw-r--r--mysql-test/main/grant_slave_admin.test45
-rw-r--r--mysql-test/main/grant_slave_monitor.result55
-rw-r--r--mysql-test/main/grant_slave_monitor.test101
-rw-r--r--mysql-test/main/mysql_upgrade_to_100502.result65
-rw-r--r--mysql-test/main/mysql_upgrade_to_100502.test65
-rw-r--r--mysql-test/main/mysqldump-system.result2
-rw-r--r--mysql-test/main/system_mysql_db_error_log.result2
-rw-r--r--mysql-test/suite/funcs_1/r/innodb_trig_03.result10
-rw-r--r--mysql-test/suite/funcs_1/r/innodb_trig_03e.result4
-rw-r--r--mysql-test/suite/funcs_1/r/memory_trig_03.result10
-rw-r--r--mysql-test/suite/funcs_1/r/memory_trig_03e.result4
-rw-r--r--mysql-test/suite/funcs_1/r/myisam_trig_03.result10
-rw-r--r--mysql-test/suite/funcs_1/r/myisam_trig_03e.result4
-rw-r--r--mysql-test/suite/galera/r/MDEV-24063.result2
-rw-r--r--mysql-test/suite/galera/t/MDEV-24063.test6
-rw-r--r--mysql-test/suite/galera_3nodes/r/inconsistency_shutdown.result2
-rw-r--r--mysql-test/suite/galera_3nodes/t/inconsistency_shutdown.test2
-rw-r--r--mysql-test/suite/innodb/r/gap_locks.result35
-rw-r--r--mysql-test/suite/innodb/t/gap_locks.test29
-rw-r--r--mysql-test/suite/innodb/t/innodb_wl6326_big.test4
-rw-r--r--mysql-test/suite/maria/repair.test6
-rw-r--r--mysql-test/suite/perfschema/r/sxlock_func.result6
-rw-r--r--mysql-test/suite/perfschema/t/nesting.test2
-rw-r--r--mysql-test/suite/perfschema/t/sxlock_func.test7
-rw-r--r--mysys/my_largepage.c13
-rw-r--r--sql/privilege.h29
-rw-r--r--sql/sql_acl.cc19
-rw-r--r--sql/sql_show.cc3
-rw-r--r--sql/sql_yacc.yy1
-rw-r--r--sql/structs.h8
-rw-r--r--storage/columnstore/CMakeLists.txt4
m---------storage/columnstore/columnstore0
-rw-r--r--storage/innobase/buf/buf0buf.cc106
-rw-r--r--storage/innobase/fil/fil0fil.cc2
-rw-r--r--storage/innobase/handler/ha_innodb.cc19
-rw-r--r--storage/innobase/include/btr0sea.h3
-rw-r--r--storage/innobase/include/ha_prototypes.h8
-rw-r--r--storage/innobase/include/ib0mutex.h4
-rw-r--r--storage/innobase/include/sync0sync.h12
-rw-r--r--storage/innobase/include/ut0mutex.h11
-rw-r--r--storage/innobase/include/ut0ut.h2
-rw-r--r--storage/innobase/innodb.cmake44
-rw-r--r--storage/innobase/log/log0sync.cc2
-rw-r--r--storage/innobase/row/row0sel.cc20
-rw-r--r--storage/innobase/sync/sync0debug.cc4
-rw-r--r--storage/innobase/sync/sync0sync.cc4
55 files changed, 502 insertions, 344 deletions
diff --git a/cmake/os/WindowsCache.cmake b/cmake/os/WindowsCache.cmake
index 474af3d6ed2..7203868a086 100644
--- a/cmake/os/WindowsCache.cmake
+++ b/cmake/os/WindowsCache.cmake
@@ -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 "")
diff --git a/config.h.cmake b/config.h.cmake
index 5a48df0a135..55c51efda68 100644
--- a/config.h.cmake
+++ b/config.h.cmake
@@ -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
diff --git a/configure.cmake b/configure.cmake
index 64be91606ae..4fc324a9567 100644
--- a/configure.cmake
+++ b/configure.cmake
@@ -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)
diff --git a/debian/rules b/debian/rules
index 686c1c5e3dd..a79e8c2bd84 100755
--- a/debian/rules
+++ b/debian/rules
@@ -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
diff --git a/include/my_sys.h b/include/my_sys.h
index 8507ec7a1eb..834a828c43a 100644
--- a/include/my_sys.h
+++ b/include/my_sys.h
@@ -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
diff --git a/mysql-test/main/drop.test b/mysql-test/main/drop.test
index 17065a32347..45ff7f364f4 100644
--- a/mysql-test/main/drop.test
+++ b/mysql-test/main/drop.test
@@ -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();
diff --git a/mysql-test/main/grant.result b/mysql-test/main/grant.result
index 01daf027186..671b6dc4247 100644
--- a/mysql-test/main/grant.result
+++ b/mysql-test/main/grant.result
@@ -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;
diff --git a/mysql-test/main/grant.test b/mysql-test/main/grant.test
index 38baf673825..a81e77567b5 100644
--- a/mysql-test/main/grant.test
+++ b/mysql-test/main/grant.test
@@ -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;
diff --git a/mysql-test/main/grant_slave_admin.result b/mysql-test/main/grant_slave_admin.result
index 12f0694e9eb..0f1f2c9985f 100644
--- a/mysql-test/main/grant_slave_admin.result
+++ b/mysql-test/main/grant_slave_admin.result
@@ -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;
diff --git a/mysql-test/main/grant_slave_admin.test b/mysql-test/main/grant_slave_admin.test
index f17f8689b9f..d73c31e0cf2 100644
--- a/mysql-test/main/grant_slave_admin.test
+++ b/mysql-test/main/grant_slave_admin.test
@@ -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 #
diff --git a/mysql-test/main/grant_slave_monitor.result b/mysql-test/main/grant_slave_monitor.result
new file mode 100644
index 00000000000..ea0b7d8094c
--- /dev/null
+++ b/mysql-test/main/grant_slave_monitor.result
@@ -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;
diff --git a/mysql-test/main/grant_slave_monitor.test b/mysql-test/main/grant_slave_monitor.test
new file mode 100644
index 00000000000..7dacaa36aee
--- /dev/null
+++ b/mysql-test/main/grant_slave_monitor.test
@@ -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;
diff --git a/mysql-test/main/mysql_upgrade_to_100502.result b/mysql-test/main/mysql_upgrade_to_100502.result
index 85fae5afc22..15095809092 100644
--- a/mysql-test/main/mysql_upgrade_to_100502.result
+++ b/mysql-test/main/mysql_upgrade_to_100502.result
@@ -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;
diff --git a/mysql-test/main/mysql_upgrade_to_100502.test b/mysql-test/main/mysql_upgrade_to_100502.test
index b03fb14fe08..b5a44080f17 100644
--- a/mysql-test/main/mysql_upgrade_to_100502.test
+++ b/mysql-test/main/mysql_upgrade_to_100502.test
@@ -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'),
diff --git a/mysql-test/main/mysqldump-system.result b/mysql-test/main/mysqldump-system.result
index 356396a5169..562a61b91cd 100644
--- a/mysql-test/main/mysqldump-system.result
+++ b/mysql-test/main/mysqldump-system.result
@@ -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
diff --git a/mysql-test/main/system_mysql_db_error_log.result b/mysql-test/main/system_mysql_db_error_log.result
index da4297b55b3..5af3eda0700 100644
--- a/mysql-test/main/system_mysql_db_error_log.result
+++ b/mysql-test/main/system_mysql_db_error_log.result
@@ -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
diff --git a/mysql-test/suite/funcs_1/r/innodb_trig_03.result b/mysql-test/suite/funcs_1/r/innodb_trig_03.result
index 2149d21131f..31fc4407dce 100644
--- a/mysql-test/suite/funcs_1/r/innodb_trig_03.result
+++ b/mysql-test/suite/funcs_1/r/innodb_trig_03.result
@@ -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;
diff --git a/mysql-test/suite/funcs_1/r/innodb_trig_03e.result b/mysql-test/suite/funcs_1/r/innodb_trig_03e.result
index 8c9e31d30f2..875aa18e81f 100644
--- a/mysql-test/suite/funcs_1/r/innodb_trig_03e.result
+++ b/mysql-test/suite/funcs_1/r/innodb_trig_03e.result
@@ -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:
diff --git a/mysql-test/suite/funcs_1/r/memory_trig_03.result b/mysql-test/suite/funcs_1/r/memory_trig_03.result
index 7e7886d830f..87f26acff46 100644
--- a/mysql-test/suite/funcs_1/r/memory_trig_03.result
+++ b/mysql-test/suite/funcs_1/r/memory_trig_03.result
@@ -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;
diff --git a/mysql-test/suite/funcs_1/r/memory_trig_03e.result b/mysql-test/suite/funcs_1/r/memory_trig_03e.result
index 0ad0be7f781..d100bdfc824 100644
--- a/mysql-test/suite/funcs_1/r/memory_trig_03e.result
+++ b/mysql-test/suite/funcs_1/r/memory_trig_03e.result
@@ -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:
diff --git a/mysql-test/suite/funcs_1/r/myisam_trig_03.result b/mysql-test/suite/funcs_1/r/myisam_trig_03.result
index 7e7886d830f..87f26acff46 100644
--- a/mysql-test/suite/funcs_1/r/myisam_trig_03.result
+++ b/mysql-test/suite/funcs_1/r/myisam_trig_03.result
@@ -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;
diff --git a/mysql-test/suite/funcs_1/r/myisam_trig_03e.result b/mysql-test/suite/funcs_1/r/myisam_trig_03e.result
index 73eb0336eef..22db7ad337e 100644
--- a/mysql-test/suite/funcs_1/r/myisam_trig_03e.result
+++ b/mysql-test/suite/funcs_1/r/myisam_trig_03e.result
@@ -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:
diff --git a/mysql-test/suite/galera/r/MDEV-24063.result b/mysql-test/suite/galera/r/MDEV-24063.result
index 757cc07a642..d7eda917cdf 100644
--- a/mysql-test/suite/galera/r/MDEV-24063.result
+++ b/mysql-test/suite/galera/r/MDEV-24063.result
@@ -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);
diff --git a/mysql-test/suite/galera/t/MDEV-24063.test b/mysql-test/suite/galera/t/MDEV-24063.test
index 24c5071cb15..9646db5d6d5 100644
--- a/mysql-test/suite/galera/t/MDEV-24063.test
+++ b/mysql-test/suite/galera/t/MDEV-24063.test
@@ -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
diff --git a/mysql-test/suite/galera_3nodes/r/inconsistency_shutdown.result b/mysql-test/suite/galera_3nodes/r/inconsistency_shutdown.result
index 7c181af9d46..83c5b015a50 100644
--- a/mysql-test/suite/galera_3nodes/r/inconsistency_shutdown.result
+++ b/mysql-test/suite/galera_3nodes/r/inconsistency_shutdown.result
@@ -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');
diff --git a/mysql-test/suite/galera_3nodes/t/inconsistency_shutdown.test b/mysql-test/suite/galera_3nodes/t/inconsistency_shutdown.test
index aa9ef08c107..6ad19e01849 100644
--- a/mysql-test/suite/galera_3nodes/t/inconsistency_shutdown.test
+++ b/mysql-test/suite/galera_3nodes/t/inconsistency_shutdown.test
@@ -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');
diff --git a/mysql-test/suite/innodb/r/gap_locks.result b/mysql-test/suite/innodb/r/gap_locks.result
new file mode 100644
index 00000000000..cd60b1fab22
--- /dev/null
+++ b/mysql-test/suite/innodb/r/gap_locks.result
@@ -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;
diff --git a/mysql-test/suite/innodb/t/gap_locks.test b/mysql-test/suite/innodb/t/gap_locks.test
new file mode 100644
index 00000000000..77ce2c842b1
--- /dev/null
+++ b/mysql-test/suite/innodb/t/gap_locks.test
@@ -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;
diff --git a/mysql-test/suite/innodb/t/innodb_wl6326_big.test b/mysql-test/suite/innodb/t/innodb_wl6326_big.test
index 43de46b4125..27d02591b84 100644
--- a/mysql-test/suite/innodb/t/innodb_wl6326_big.test
+++ b/mysql-test/suite/innodb/t/innodb_wl6326_big.test
@@ -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.
diff --git a/mysql-test/suite/maria/repair.test b/mysql-test/suite/maria/repair.test
index 9603a949f9b..13165269b76 100644
--- a/mysql-test/suite/maria/repair.test
+++ b/mysql-test/suite/maria/repair.test
@@ -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
#
diff --git a/mysql-test/suite/perfschema/r/sxlock_func.result b/mysql-test/suite/perfschema/r/sxlock_func.result
index b51234feda6..e7f4ba345c5 100644
--- a/mysql-test/suite/perfschema/r/sxlock_func.result
+++ b/mysql-test/suite/perfschema/r/sxlock_func.result
@@ -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
diff --git a/mysql-test/suite/perfschema/t/nesting.test b/mysql-test/suite/perfschema/t/nesting.test
index dd8b6f6154a..ee1581c284b 100644
--- a/mysql-test/suite/perfschema/t/nesting.test
+++ b/mysql-test/suite/perfschema/t/nesting.test
@@ -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
diff --git a/mysql-test/suite/perfschema/t/sxlock_func.test b/mysql-test/suite/perfschema/t/sxlock_func.test
index 7c7e8fc6189..f5f38f51c78 100644
--- a/mysql-test/suite/perfschema/t/sxlock_func.test
+++ b/mysql-test/suite/perfschema/t/sxlock_func.test
@@ -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
diff --git a/mysys/my_largepage.c b/mysys/my_largepage.c
index e107c62b987..c3fc97ffe0a 100644
--- a/mysys/my_largepage.c
+++ b/mysys/my_largepage.c
@@ -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));
diff --git a/sql/privilege.h b/sql/privilege.h
index 37cdf4da01a..a2e75003c11 100644
--- a/sql/privilege.h
+++ b/sql/privilege.h
@@ -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.
diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc
index 483be6e39d6..bad39cfc1d1 100644
--- a/sql/sql_acl.cc
+++ b/sql/sql_acl.cc
@@ -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
};
diff --git a/sql/sql_show.cc b/sql/sql_show.cc
index c00476871e4..0f6200ff237 100644
--- a/sql/sql_show.cc
+++ b/sql/sql_show.cc
@@ -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"},
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index 78e2a8f1fe5..c2961ecc671 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -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:
diff --git a/sql/structs.h b/sql/structs.h
index 27acb9e200e..76129f2abf7 100644
--- a/sql/structs.h
+++ b/sql/structs.h
@@ -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)
diff --git a/storage/columnstore/CMakeLists.txt b/storage/columnstore/CMakeLists.txt
index 63d9d3b7a6a..77ba817c837 100644
--- a/storage/columnstore/CMakeLists.txt
+++ b/storage/columnstore/CMakeLists.txt
@@ -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)
diff --git a/storage/columnstore/columnstore b/storage/columnstore/columnstore
-Subproject 4813838df862514bbaa868cd7328bc015b00ddb
+Subproject 8d1fb3ed2f1a62805cfbf09ff110e66d6619e8e
diff --git a/storage/innobase/buf/buf0buf.cc b/storage/innobase/buf/buf0buf.cc
index acd221b8b52..9e24698d07c 100644
--- a/storage/innobase/buf/buf0buf.cc
+++ b/storage/innobase/buf/buf0buf.cc
@@ -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;
}
diff --git a/storage/innobase/fil/fil0fil.cc b/storage/innobase/fil/fil0fil.cc
index ece334deeb4..ec25c71cb1f 100644
--- a/storage/innobase/fil/fil0fil.cc
+++ b/storage/innobase/fil/fil0fil.cc
@@ -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));
diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc
index 64f73c35ce7..31e0ac89358 100644
--- a/storage/innobase/handler/ha_innodb.cc
+++ b/storage/innobase/handler/ha_innodb.cc
@@ -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);
}
/******************************************************************//**
@@ -1507,17 +1501,6 @@ thd_query_start_micro(
}
/******************************************************************//**
-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 */
ulong
diff --git a/storage/innobase/include/btr0sea.h b/storage/innobase/include/btr0sea.h
index f8f2050d3d3..1e6b667c324 100644
--- a/storage/innobase/include/btr0sea.h
+++ b/storage/innobase/include/btr0sea.h
@@ -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);
}
diff --git a/storage/innobase/include/ha_prototypes.h b/storage/innobase/include/ha_prototypes.h
index 1acf951baec..9463c2e45e8 100644
--- a/storage/innobase/include/ha_prototypes.h
+++ b/storage/innobase/include/ha_prototypes.h
@@ -182,14 +182,6 @@ 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
innobase_convert_from_table_id(
diff --git a/storage/innobase/include/ib0mutex.h b/storage/innobase/include/ib0mutex.h
index 91bc69ac228..81ab756665d 100644
--- a/storage/innobase/include/ib0mutex.h
+++ b/storage/innobase/include/ib0mutex.h
@@ -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 {
diff --git a/storage/innobase/include/sync0sync.h b/storage/innobase/include/sync0sync.h
index ce19178a5ad..b7f3cff2925 100644
--- a/storage/innobase/include/sync0sync.h
+++ b/storage/innobase/include/sync0sync.h
@@ -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;
diff --git a/storage/innobase/include/ut0mutex.h b/storage/innobase/include/ut0mutex.h
index 294304e672a..cb43583c21d 100644
--- a/storage/innobase/include/ut0mutex.h
+++ b/storage/innobase/include/ut0mutex.h
@@ -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 */
diff --git a/storage/innobase/include/ut0ut.h b/storage/innobase/include/ut0ut.h
index 6b79a445789..dc9a9597b0f 100644
--- a/storage/innobase/include/ut0ut.h
+++ b/storage/innobase/include/ut0ut.h
@@ -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. */
diff --git a/storage/innobase/innodb.cmake b/storage/innobase/innodb.cmake
index 978b33a2abe..385e87f828e 100644
--- a/storage/innobase/innodb.cmake
+++ b/storage/innobase/innodb.cmake
@@ -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)
diff --git a/storage/innobase/log/log0sync.cc b/storage/innobase/log/log0sync.cc
index 7799e605576..2a6e1b8b853 100644
--- a/storage/innobase/log/log0sync.cc
+++ b/storage/innobase/log/log0sync.cc
@@ -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
diff --git a/storage/innobase/row/row0sel.cc b/storage/innobase/row/row0sel.cc
index d7a0490db3d..7a859ab8b09 100644
--- a/storage/innobase/row/row0sel.cc
+++ b/storage/innobase/row/row0sel.cc
@@ -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;
diff --git a/storage/innobase/sync/sync0debug.cc b/storage/innobase/sync/sync0debug.cc
index 87646867319..f2f7c13d34c 100644
--- a/storage/innobase/sync/sync0debug.cc
+++ b/storage/innobase/sync/sync0debug.cc
@@ -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,
diff --git a/storage/innobase/sync/sync0sync.cc b/storage/innobase/sync/sync0sync.cc
index c2957a3fdcb..0a6f8bfbebd 100644
--- a/storage/innobase/sync/sync0sync.cc
+++ b/storage/innobase/sync/sync0sync.cc
@@ -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;