summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2021-08-31 11:00:41 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2021-08-31 11:00:41 +0300
commite94172c2a07f21118d26e4cde0c48a2fd536cf06 (patch)
tree81d6b9b67c696e93abb618df35ab5a27094f6e31
parent7271cf48d62196abc0c578d00ab3ca09b56aae77 (diff)
parente62120cec7aa21b9cf77773ecb0935b4b48ed26c (diff)
downloadmariadb-git-e94172c2a07f21118d26e4cde0c48a2fd536cf06.tar.gz
Merge 10.5 into 10.6
-rw-r--r--cmake/cpack_rpm.cmake2
-rw-r--r--extra/mariabackup/xtrabackup.cc2
-rw-r--r--include/mysql/psi/psi.h6
-rw-r--r--include/mysql/psi/psi_abi_v1.h.pp6
-rw-r--r--include/pfs_thread_provider.h6
m---------libmariadb0
-rw-r--r--mysql-test/lib/My/Options.pm22
-rw-r--r--mysql-test/lib/mtr_cases.pm6
-rw-r--r--mysql-test/suite/innodb/r/table_flags,32k,debug.rdiff110
-rw-r--r--mysql-test/suite/innodb/r/table_flags,32k.rdiff (renamed from mysql-test/suite/innodb/r/table_flags,32k,release.rdiff)8
-rw-r--r--mysql-test/suite/innodb/r/table_flags,64k,debug.rdiff110
-rw-r--r--mysql-test/suite/innodb/r/table_flags,64k.rdiff (renamed from mysql-test/suite/innodb/r/table_flags,64k,release.rdiff)8
-rw-r--r--mysql-test/suite/innodb/r/table_flags,debug.rdiff98
-rw-r--r--mysql-test/suite/sql_sequence/default.result10
-rw-r--r--mysql-test/suite/sql_sequence/default.test12
-rw-r--r--mysys/psi_noop.c6
-rw-r--r--scripts/mysql_setpermission.sh1
-rw-r--r--sql/sql_base.cc20
-rw-r--r--sql/sql_class.h5
-rw-r--r--storage/innobase/srv/srv0srv.cc27
-rw-r--r--storage/perfschema/pfs.cc6
-rw-r--r--storage/rocksdb/CMakeLists.txt9
22 files changed, 105 insertions, 375 deletions
diff --git a/cmake/cpack_rpm.cmake b/cmake/cpack_rpm.cmake
index f577e343dc1..5f954c7a1fe 100644
--- a/cmake/cpack_rpm.cmake
+++ b/cmake/cpack_rpm.cmake
@@ -35,7 +35,7 @@ SET(CPACK_COMPONENTS_ALL Server ManPagesServer IniFiles Server_Scripts
SET(CPACK_RPM_PACKAGE_NAME ${CPACK_PACKAGE_NAME})
SET(CPACK_RPM_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION})
IF(CMAKE_VERSION VERSION_LESS "3.6.0")
- SET(CPACK_PACKAGE_FILE_NAME "${CPACK_RPM_PACKAGE_NAME}-${CPACK_RPM_PACKAGE_VERSION}-${RPM}-${CMAKE_SYSTEM_PROCESSOR}")
+ SET(CPACK_PACKAGE_FILE_NAME "${CPACK_RPM_PACKAGE_NAME}-${SERVER_VERSION}-${RPM}-${CMAKE_SYSTEM_PROCESSOR}")
ELSE()
SET(CPACK_RPM_FILE_NAME "RPM-DEFAULT")
OPTION(CPACK_RPM_DEBUGINFO_PACKAGE "" ON)
diff --git a/extra/mariabackup/xtrabackup.cc b/extra/mariabackup/xtrabackup.cc
index e1875e5a265..ae415b08c3e 100644
--- a/extra/mariabackup/xtrabackup.cc
+++ b/extra/mariabackup/xtrabackup.cc
@@ -3320,7 +3320,7 @@ static void xb_load_single_table_tablespace(const char *dirname,
delete file;
if (err != DB_SUCCESS && xtrabackup_backup && !is_empty_file) {
- die("Failed to not validate first page of the file %s, error %d",name, (int)err);
+ die("Failed to validate first page of the file %s, error %d",name, (int)err);
}
ut_free(name);
diff --git a/include/mysql/psi/psi.h b/include/mysql/psi/psi.h
index 958a086f05a..2d669070e54 100644
--- a/include/mysql/psi/psi.h
+++ b/include/mysql/psi/psi.h
@@ -1442,7 +1442,7 @@ typedef void (*register_socket_v1_t)
@return an instrumented mutex
*/
typedef struct PSI_mutex* (*init_mutex_v1_t)
- (PSI_mutex_key key, const void *identity);
+ (PSI_mutex_key key, void *identity);
/**
Mutex instrumentation destruction API.
@@ -1457,7 +1457,7 @@ typedef void (*destroy_mutex_v1_t)(struct PSI_mutex *mutex);
@return an instrumented rwlock
*/
typedef struct PSI_rwlock* (*init_rwlock_v1_t)
- (PSI_rwlock_key key, const void *identity);
+ (PSI_rwlock_key key, void *identity);
/**
Rwlock instrumentation destruction API.
@@ -1472,7 +1472,7 @@ typedef void (*destroy_rwlock_v1_t)(struct PSI_rwlock *rwlock);
@return an instrumented cond
*/
typedef struct PSI_cond* (*init_cond_v1_t)
- (PSI_cond_key key, const void *identity);
+ (PSI_cond_key key, void *identity);
/**
Cond instrumentation destruction API.
diff --git a/include/mysql/psi/psi_abi_v1.h.pp b/include/mysql/psi/psi_abi_v1.h.pp
index 60a6a8031a6..a1845ac62f6 100644
--- a/include/mysql/psi/psi_abi_v1.h.pp
+++ b/include/mysql/psi/psi_abi_v1.h.pp
@@ -409,13 +409,13 @@ typedef void (*register_statement_v1_t)
typedef void (*register_socket_v1_t)
(const char *category, struct PSI_socket_info_v1 *info, int count);
typedef struct PSI_mutex* (*init_mutex_v1_t)
- (PSI_mutex_key key, const void *identity);
+ (PSI_mutex_key key, void *identity);
typedef void (*destroy_mutex_v1_t)(struct PSI_mutex *mutex);
typedef struct PSI_rwlock* (*init_rwlock_v1_t)
- (PSI_rwlock_key key, const void *identity);
+ (PSI_rwlock_key key, void *identity);
typedef void (*destroy_rwlock_v1_t)(struct PSI_rwlock *rwlock);
typedef struct PSI_cond* (*init_cond_v1_t)
- (PSI_cond_key key, const void *identity);
+ (PSI_cond_key key, void *identity);
typedef void (*destroy_cond_v1_t)(struct PSI_cond *cond);
typedef struct PSI_socket* (*init_socket_v1_t)
(PSI_socket_key key, const my_socket *fd,
diff --git a/include/pfs_thread_provider.h b/include/pfs_thread_provider.h
index c4118a8efbf..3c43f8e3d77 100644
--- a/include/pfs_thread_provider.h
+++ b/include/pfs_thread_provider.h
@@ -52,17 +52,17 @@ void pfs_register_thread_v1(const char *category,
int count);
PSI_mutex*
-pfs_init_mutex_v1(PSI_mutex_key key, const void *identity);
+pfs_init_mutex_v1(PSI_mutex_key key, void *identity);
void pfs_destroy_mutex_v1(PSI_mutex* mutex);
PSI_rwlock*
-pfs_init_rwlock_v1(PSI_rwlock_key key, const void *identity);
+pfs_init_rwlock_v1(PSI_rwlock_key key, void *identity);
void pfs_destroy_rwlock_v1(PSI_rwlock* rwlock);
PSI_cond*
-pfs_init_cond_v1(PSI_cond_key key, const void *identity);
+pfs_init_cond_v1(PSI_cond_key key, void *identity);
void pfs_destroy_cond_v1(PSI_cond* cond);
diff --git a/libmariadb b/libmariadb
-Subproject 7cf38704c916996e7b44f62c9e644cc6d001ee9
+Subproject fc25d79083ab0b6eb14c71be0439836502d8226
diff --git a/mysql-test/lib/My/Options.pm b/mysql-test/lib/My/Options.pm
index 6e0efe862e7..5827e0666a6 100644
--- a/mysql-test/lib/My/Options.pm
+++ b/mysql-test/lib/My/Options.pm
@@ -140,24 +140,16 @@ sub diff {
}
-sub is_set {
- my ($opts, $set_opts)= @_;
+sub is_subset {
+ my ($set, $subset)= @_;
+ my %cache = map { _split_option($_) } @$set;
- foreach my $opt (@$opts){
-
- my ($opt_name1, $value1)= _split_option($opt);
-
- foreach my $set_opt (@$set_opts){
- my ($opt_name2, $value2)= _split_option($set_opt);
-
- if ($opt_name1 eq $opt_name2 and $value1 eq $value2){
- # Option already set
- return 1;
- }
- }
+ for (@$subset){
+ my ($name, $value)= _split_option($_);
+ return 0 unless exists $cache{$name} and $cache{$name} eq $value;
}
- return 0;
+ return 1;
}
diff --git a/mysql-test/lib/mtr_cases.pm b/mysql-test/lib/mtr_cases.pm
index dd003dea31d..adc911ba937 100644
--- a/mysql-test/lib/mtr_cases.pm
+++ b/mysql-test/lib/mtr_cases.pm
@@ -626,8 +626,10 @@ sub make_combinations($$@)
{
# Skip all other combinations if the values they change
# are already fixed in master_opt or slave_opt
- if (My::Options::is_set($test->{master_opt}, $comb->{comb_opt}) &&
- My::Options::is_set($test->{slave_opt}, $comb->{comb_opt}) ){
+ # (empty combinations are not considered a subset of anything)
+ if (@{$comb->{comb_opt}} &&
+ My::Options::is_subset($test->{master_opt}, $comb->{comb_opt}) &&
+ My::Options::is_subset($test->{slave_opt}, $comb->{comb_opt}) ){
$test_combs->{$comb->{name}} = 2;
diff --git a/mysql-test/suite/innodb/r/table_flags,32k,debug.rdiff b/mysql-test/suite/innodb/r/table_flags,32k,debug.rdiff
deleted file mode 100644
index babcd88bd91..00000000000
--- a/mysql-test/suite/innodb/r/table_flags,32k,debug.rdiff
+++ /dev/null
@@ -1,110 +0,0 @@
---- suite/innodb/r/table_flags.result
-+++ suite/innodb/r/table_flags,32k,debug.reject
-@@ -6,6 +6,8 @@
- SET innodb_strict_mode=OFF;
- CREATE TABLE tz(a INT PRIMARY KEY)ENGINE=InnoDB ROW_FORMAT=COMPRESSED
- KEY_BLOCK_SIZE=1;
-+Warnings:
-+Warning 1478 InnoDB: Cannot create a COMPRESSED table when innodb_page_size > 16k. Assuming ROW_FORMAT=DYNAMIC.
- SET innodb_strict_mode=ON;
- CREATE TABLE tp(a INT PRIMARY KEY)ENGINE=InnoDB ROW_FORMAT=DYNAMIC
- PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=9;
-@@ -11,71 +11,71 @@
- PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=9;
- SYS_TABLES clustered index root page (8):
- N_RECS=8; LEVEL=0; INDEX_ID=0x0000000000000001
--header=0x01000003008d (NAME=0x696e66696d756d00)
--header=0x0000101500d5 (NAME='SYS_FOREIGN',
-+header=0x0100000300de (NAME=0x696e66696d756d00)
-+header=0x000018150126 (NAME='SYS_FOREIGN',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x000000000000000b,
-+ ID=0x000000000000000c,
- N_COLS=0x00000004,
- TYPE=0x00000001,
- MIX_ID=0x0000000000000000,
- MIX_LEN=0x00000040,
- CLUSTER_NAME=NULL(0 bytes),
- SPACE=0x00000000)
--header=0x000018150122 (NAME='SYS_FOREIGN_COLS',
-+header=0x000020150173 (NAME='SYS_FOREIGN_COLS',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x000000000000000c,
-+ ID=0x000000000000000d,
- N_COLS=0x00000004,
- TYPE=0x00000001,
- MIX_ID=0x0000000000000000,
- MIX_LEN=0x00000040,
- CLUSTER_NAME=NULL(0 bytes),
- SPACE=0x00000000)
--header=0x0000201501ae (NAME='SYS_VIRTUAL',
-+header=0x0000281501bb (NAME='SYS_VIRTUAL',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x000000000000000d,
-+ ID=0x000000000000000e,
- N_COLS=0x00000003,
- TYPE=0x00000001,
- MIX_ID=0x0000000000000000,
- MIX_LEN=0x00000040,
- CLUSTER_NAME=NULL(0 bytes),
- SPACE=0x00000000)
--header=0x0400301501f2 (NAME='test/tc',
-+header=0x0400301501ff (NAME='test/tc',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x000000000000000f,
-+ ID=0x0000000000000010,
- N_COLS=0x80000001,
- TYPE=0x00000001,
- MIX_ID=0x0000000000000000,
- MIX_LEN=0x00000050,
- CLUSTER_NAME=NULL(0 bytes),
- SPACE=0x00000002)
--header=0x00003815027a (NAME='test/td',
-+header=0x000038150287 (NAME='test/td',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x0000000000000010,
-+ ID=0x0000000000000011,
- N_COLS=0x80000001,
- TYPE=0x00000021,
- MIX_ID=0x0000000000000000,
- MIX_LEN=0x00000050,
- CLUSTER_NAME=NULL(0 bytes),
- SPACE=0x00000003)
--header=0x00004815016a (NAME='test/tp',
-+header=0x00004815008d (NAME='test/tp',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x0000000000000012,
-+ ID=0x0000000000000013,
- N_COLS=0x80000001,
- TYPE=0x000009a1,
- MIX_ID=0x0000000000000000,
- MIX_LEN=0x00000050,
- CLUSTER_NAME=NULL(0 bytes),
- SPACE=0x00000005)
--header=0x000028150236 (NAME='test/tr',
-+header=0x000010150243 (NAME='test/tr',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x000000000000000e,
-+ ID=0x000000000000000f,
- N_COLS=0x00000001,
- TYPE=0x00000001,
- MIX_ID=0x0000000000000000,
-@@ -85,9 +85,9 @@
- header=0x000040150074 (NAME='test/tz',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x0000000000000011,
-+ ID=0x0000000000000012,
- N_COLS=0x80000001,
-- TYPE=0x00000023,
-+ TYPE=0x00000021,
- MIX_ID=0x0000000000000000,
- MIX_LEN=0x00000050,
- CLUSTER_NAME=NULL(0 bytes),
diff --git a/mysql-test/suite/innodb/r/table_flags,32k,release.rdiff b/mysql-test/suite/innodb/r/table_flags,32k.rdiff
index ce1ff623d50..8079d58bc43 100644
--- a/mysql-test/suite/innodb/r/table_flags,32k,release.rdiff
+++ b/mysql-test/suite/innodb/r/table_flags,32k.rdiff
@@ -1,6 +1,6 @@
--- suite/innodb/r/table_flags.result
-+++ suite/innodb/r/table_flags,32k.reject
-@@ -5,6 +5,8 @@
++++ suite/innodb/r/table_flags.reject
+@@ -6,6 +6,8 @@
SET innodb_strict_mode=OFF;
CREATE TABLE tz(a INT PRIMARY KEY)ENGINE=InnoDB ROW_FORMAT=COMPRESSED
KEY_BLOCK_SIZE=1;
@@ -9,9 +9,9 @@
SET innodb_strict_mode=ON;
CREATE TABLE tp(a INT PRIMARY KEY)ENGINE=InnoDB ROW_FORMAT=DYNAMIC
PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=9;
-@@ -103,7 +105,7 @@
+@@ -87,7 +89,7 @@
DB_ROLL_PTR=0x80000000000000,
- ID=0x0000000000000013,
+ ID=0x0000000000000011,
N_COLS=0x80000001,
- TYPE=0x00000023,
+ TYPE=0x00000021,
diff --git a/mysql-test/suite/innodb/r/table_flags,64k,debug.rdiff b/mysql-test/suite/innodb/r/table_flags,64k,debug.rdiff
deleted file mode 100644
index c8763b4c093..00000000000
--- a/mysql-test/suite/innodb/r/table_flags,64k,debug.rdiff
+++ /dev/null
@@ -1,110 +0,0 @@
---- suite/innodb/r/table_flags.result
-+++ suite/innodb/r/table_flags,64k,debug.reject
-@@ -6,6 +6,8 @@
- SET innodb_strict_mode=OFF;
- CREATE TABLE tz(a INT PRIMARY KEY)ENGINE=InnoDB ROW_FORMAT=COMPRESSED
- KEY_BLOCK_SIZE=1;
-+Warnings:
-+Warning 1478 InnoDB: Cannot create a COMPRESSED table when innodb_page_size > 16k. Assuming ROW_FORMAT=DYNAMIC.
- SET innodb_strict_mode=ON;
- CREATE TABLE tp(a INT PRIMARY KEY)ENGINE=InnoDB ROW_FORMAT=DYNAMIC
- PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=9;
-@@ -11,71 +11,71 @@
- PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=9;
- SYS_TABLES clustered index root page (8):
- N_RECS=8; LEVEL=0; INDEX_ID=0x0000000000000001
--header=0x01000003008d (NAME=0x696e66696d756d00)
--header=0x0000101500d5 (NAME='SYS_FOREIGN',
-+header=0x0100000300de (NAME=0x696e66696d756d00)
-+header=0x000018150126 (NAME='SYS_FOREIGN',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x000000000000000b,
-+ ID=0x000000000000000c,
- N_COLS=0x00000004,
- TYPE=0x00000001,
- MIX_ID=0x0000000000000000,
- MIX_LEN=0x00000040,
- CLUSTER_NAME=NULL(0 bytes),
- SPACE=0x00000000)
--header=0x000018150122 (NAME='SYS_FOREIGN_COLS',
-+header=0x000020150173 (NAME='SYS_FOREIGN_COLS',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x000000000000000c,
-+ ID=0x000000000000000d,
- N_COLS=0x00000004,
- TYPE=0x00000001,
- MIX_ID=0x0000000000000000,
- MIX_LEN=0x00000040,
- CLUSTER_NAME=NULL(0 bytes),
- SPACE=0x00000000)
--header=0x0000201501ae (NAME='SYS_VIRTUAL',
-+header=0x0000281501bb (NAME='SYS_VIRTUAL',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x000000000000000d,
-+ ID=0x000000000000000e,
- N_COLS=0x00000003,
- TYPE=0x00000001,
- MIX_ID=0x0000000000000000,
- MIX_LEN=0x00000040,
- CLUSTER_NAME=NULL(0 bytes),
- SPACE=0x00000000)
--header=0x0400301501f2 (NAME='test/tc',
-+header=0x0400301501ff (NAME='test/tc',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x000000000000000f,
-+ ID=0x0000000000000010,
- N_COLS=0x80000001,
- TYPE=0x00000001,
- MIX_ID=0x0000000000000000,
- MIX_LEN=0x00000050,
- CLUSTER_NAME=NULL(0 bytes),
- SPACE=0x00000002)
--header=0x00003815027a (NAME='test/td',
-+header=0x000038150287 (NAME='test/td',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x0000000000000010,
-+ ID=0x0000000000000011,
- N_COLS=0x80000001,
- TYPE=0x00000021,
- MIX_ID=0x0000000000000000,
- MIX_LEN=0x00000050,
- CLUSTER_NAME=NULL(0 bytes),
- SPACE=0x00000003)
--header=0x00004815016a (NAME='test/tp',
-+header=0x00004815008d (NAME='test/tp',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x0000000000000012,
-+ ID=0x0000000000000013,
- N_COLS=0x80000001,
- TYPE=0x000009a1,
- MIX_ID=0x0000000000000000,
- MIX_LEN=0x00000050,
- CLUSTER_NAME=NULL(0 bytes),
- SPACE=0x00000005)
--header=0x000028150236 (NAME='test/tr',
-+header=0x000010150243 (NAME='test/tr',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x000000000000000e,
-+ ID=0x000000000000000f,
- N_COLS=0x00000001,
- TYPE=0x00000001,
- MIX_ID=0x0000000000000000,
-@@ -85,9 +85,9 @@
- header=0x000040150074 (NAME='test/tz',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x0000000000000011,
-+ ID=0x0000000000000012,
- N_COLS=0x80000001,
-- TYPE=0x00000023,
-+ TYPE=0x00000021,
- MIX_ID=0x0000000000000000,
- MIX_LEN=0x00000050,
- CLUSTER_NAME=NULL(0 bytes),
diff --git a/mysql-test/suite/innodb/r/table_flags,64k,release.rdiff b/mysql-test/suite/innodb/r/table_flags,64k.rdiff
index f2ba1280be3..8079d58bc43 100644
--- a/mysql-test/suite/innodb/r/table_flags,64k,release.rdiff
+++ b/mysql-test/suite/innodb/r/table_flags,64k.rdiff
@@ -1,6 +1,6 @@
--- suite/innodb/r/table_flags.result
-+++ suite/innodb/r/table_flags,64k.reject
-@@ -5,6 +5,8 @@
++++ suite/innodb/r/table_flags.reject
+@@ -6,6 +6,8 @@
SET innodb_strict_mode=OFF;
CREATE TABLE tz(a INT PRIMARY KEY)ENGINE=InnoDB ROW_FORMAT=COMPRESSED
KEY_BLOCK_SIZE=1;
@@ -9,9 +9,9 @@
SET innodb_strict_mode=ON;
CREATE TABLE tp(a INT PRIMARY KEY)ENGINE=InnoDB ROW_FORMAT=DYNAMIC
PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=9;
-@@ -103,7 +105,7 @@
+@@ -87,7 +89,7 @@
DB_ROLL_PTR=0x80000000000000,
- ID=0x0000000000000013,
+ ID=0x0000000000000011,
N_COLS=0x80000001,
- TYPE=0x00000023,
+ TYPE=0x00000021,
diff --git a/mysql-test/suite/innodb/r/table_flags,debug.rdiff b/mysql-test/suite/innodb/r/table_flags,debug.rdiff
deleted file mode 100644
index 50592d95ac4..00000000000
--- a/mysql-test/suite/innodb/r/table_flags,debug.rdiff
+++ /dev/null
@@ -1,98 +0,0 @@
---- suite/innodb/r/table_flags.result
-+++ suite/innodb/r/table_flags,debug.reject
-@@ -11,71 +11,71 @@
- PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=9;
- SYS_TABLES clustered index root page (8):
- N_RECS=8; LEVEL=0; INDEX_ID=0x0000000000000001
--header=0x01000003008d (NAME=0x696e66696d756d00)
--header=0x0000101500d5 (NAME='SYS_FOREIGN',
-+header=0x0100000300de (NAME=0x696e66696d756d00)
-+header=0x000018150126 (NAME='SYS_FOREIGN',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x000000000000000b,
-+ ID=0x000000000000000c,
- N_COLS=0x00000004,
- TYPE=0x00000001,
- MIX_ID=0x0000000000000000,
- MIX_LEN=0x00000040,
- CLUSTER_NAME=NULL(0 bytes),
- SPACE=0x00000000)
--header=0x000018150122 (NAME='SYS_FOREIGN_COLS',
-+header=0x000020150173 (NAME='SYS_FOREIGN_COLS',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x000000000000000c,
-+ ID=0x000000000000000d,
- N_COLS=0x00000004,
- TYPE=0x00000001,
- MIX_ID=0x0000000000000000,
- MIX_LEN=0x00000040,
- CLUSTER_NAME=NULL(0 bytes),
- SPACE=0x00000000)
--header=0x0000201501ae (NAME='SYS_VIRTUAL',
-+header=0x0000281501bb (NAME='SYS_VIRTUAL',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x000000000000000d,
-+ ID=0x000000000000000e,
- N_COLS=0x00000003,
- TYPE=0x00000001,
- MIX_ID=0x0000000000000000,
- MIX_LEN=0x00000040,
- CLUSTER_NAME=NULL(0 bytes),
- SPACE=0x00000000)
--header=0x0400301501f2 (NAME='test/tc',
-+header=0x0400301501ff (NAME='test/tc',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x000000000000000f,
-+ ID=0x0000000000000010,
- N_COLS=0x80000001,
- TYPE=0x00000001,
- MIX_ID=0x0000000000000000,
- MIX_LEN=0x00000050,
- CLUSTER_NAME=NULL(0 bytes),
- SPACE=0x00000002)
--header=0x00003815027a (NAME='test/td',
-+header=0x000038150287 (NAME='test/td',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x0000000000000010,
-+ ID=0x0000000000000011,
- N_COLS=0x80000001,
- TYPE=0x00000021,
- MIX_ID=0x0000000000000000,
- MIX_LEN=0x00000050,
- CLUSTER_NAME=NULL(0 bytes),
- SPACE=0x00000003)
--header=0x00004815016a (NAME='test/tp',
-+header=0x00004815008d (NAME='test/tp',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x0000000000000012,
-+ ID=0x0000000000000013,
- N_COLS=0x80000001,
- TYPE=0x000009a1,
- MIX_ID=0x0000000000000000,
- MIX_LEN=0x00000050,
- CLUSTER_NAME=NULL(0 bytes),
- SPACE=0x00000005)
--header=0x000028150236 (NAME='test/tr',
-+header=0x000010150243 (NAME='test/tr',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x000000000000000e,
-+ ID=0x000000000000000f,
- N_COLS=0x00000001,
- TYPE=0x00000001,
- MIX_ID=0x0000000000000000,
-@@ -85,7 +85,7 @@
- header=0x000040150074 (NAME='test/tz',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x0000000000000011,
-+ ID=0x0000000000000012,
- N_COLS=0x80000001,
- TYPE=0x00000023,
- MIX_ID=0x0000000000000000,
diff --git a/mysql-test/suite/sql_sequence/default.result b/mysql-test/suite/sql_sequence/default.result
index 14abc656423..4969e832652 100644
--- a/mysql-test/suite/sql_sequence/default.result
+++ b/mysql-test/suite/sql_sequence/default.result
@@ -183,3 +183,13 @@ ALTER TABLE t1 add column d int default next value for s_not_exits;
ERROR 42S02: Table 'test.s_not_exits' doesn't exist
drop table t1;
drop sequence s1;
+#
+# MDEV 22785 Crash with prepared statements and NEXTVAL()
+#
+CREATE SEQUENCE s;
+CREATE TABLE t1 (id int NOT NULL DEFAULT NEXTVAL(s), PRIMARY KEY (id));
+PREPARE stmt FROM " INSERT INTO t1 () values ()";
+INSERT INTO t1 () values ();
+EXECUTE stmt;
+DROP TABLE t1;
+DROP SEQUENCE s;
diff --git a/mysql-test/suite/sql_sequence/default.test b/mysql-test/suite/sql_sequence/default.test
index 017165c1a80..e7c13211013 100644
--- a/mysql-test/suite/sql_sequence/default.test
+++ b/mysql-test/suite/sql_sequence/default.test
@@ -123,3 +123,15 @@ ALTER TABLE t1 add column c int;
ALTER TABLE t1 add column d int default next value for s_not_exits;
drop table t1;
drop sequence s1;
+
+--echo #
+--echo # MDEV 22785 Crash with prepared statements and NEXTVAL()
+--echo #
+CREATE SEQUENCE s;
+CREATE TABLE t1 (id int NOT NULL DEFAULT NEXTVAL(s), PRIMARY KEY (id));
+PREPARE stmt FROM " INSERT INTO t1 () values ()";
+INSERT INTO t1 () values ();
+EXECUTE stmt;
+# Cleanup
+DROP TABLE t1;
+DROP SEQUENCE s;
diff --git a/mysys/psi_noop.c b/mysys/psi_noop.c
index 09b839468ac..e81ad4893b7 100644
--- a/mysys/psi_noop.c
+++ b/mysys/psi_noop.c
@@ -86,7 +86,7 @@ static void register_socket_noop(const char *category NNN,
}
static PSI_mutex*
-init_mutex_noop(PSI_mutex_key key NNN, const void *identity NNN)
+init_mutex_noop(PSI_mutex_key key NNN, void *identity NNN)
{
return NULL;
}
@@ -97,7 +97,7 @@ static void destroy_mutex_noop(PSI_mutex* mutex NNN)
}
static PSI_rwlock*
-init_rwlock_noop(PSI_rwlock_key key NNN, const void *identity NNN)
+init_rwlock_noop(PSI_rwlock_key key NNN, void *identity NNN)
{
return NULL;
}
@@ -108,7 +108,7 @@ static void destroy_rwlock_noop(PSI_rwlock* rwlock NNN)
}
static PSI_cond*
-init_cond_noop(PSI_cond_key key NNN, const void *identity NNN)
+init_cond_noop(PSI_cond_key key NNN, void *identity NNN)
{
return NULL;
}
diff --git a/scripts/mysql_setpermission.sh b/scripts/mysql_setpermission.sh
index 6f0ad72c1d9..b3c9c27ca88 100644
--- a/scripts/mysql_setpermission.sh
+++ b/scripts/mysql_setpermission.sh
@@ -310,7 +310,6 @@ sub addall {
$sth = $dbh->do("REVOKE ALL ON $db.* FROM \'$user\'\@\'$host\'") || die $dbh->errstr;
}
}
- $dbh->do("FLUSH PRIVILEGES") || print STDERR "Can't flush privileges\n";
print "Everything is inserted and mysql privileges have been reloaded.\n\n";
}
diff --git a/sql/sql_base.cc b/sql/sql_base.cc
index 55c2b6db7e7..1e8c6321f85 100644
--- a/sql/sql_base.cc
+++ b/sql/sql_base.cc
@@ -4583,13 +4583,13 @@ bool table_already_fk_prelocked(TABLE_LIST *tl, LEX_CSTRING *db,
}
-static bool internal_table_exists(TABLE_LIST *global_list,
- const char *table_name)
+static TABLE_LIST *internal_table_exists(TABLE_LIST *global_list,
+ const char *table_name)
{
do
{
if (global_list->table_name.str == table_name)
- return 1;
+ return global_list;
} while ((global_list= global_list->next_global));
return 0;
}
@@ -4604,13 +4604,23 @@ add_internal_tables(THD *thd, Query_tables_list *prelocking_ctx,
do
{
+ TABLE_LIST *tmp __attribute__((unused));
DBUG_PRINT("info", ("table name: %s", tables->table_name.str));
/*
Skip table if already in the list. Can happen with prepared statements
*/
- if (tables->next_local &&
- internal_table_exists(global_table_list, tables->table_name.str))
+ if ((tmp= internal_table_exists(global_table_list,
+ tables->table_name.str)))
+ {
+ /*
+ Use the original value for the next local, used by the
+ original prepared statement. We cannot trust the original
+ next_local value as it may have been changed by a previous
+ statement using the same table.
+ */
+ tables->next_local= tmp;
continue;
+ }
TABLE_LIST *tl= (TABLE_LIST *) thd->alloc(sizeof(TABLE_LIST));
if (!tl)
diff --git a/sql/sql_class.h b/sql/sql_class.h
index 01fdc819f4d..2fecf60c086 100644
--- a/sql/sql_class.h
+++ b/sql/sql_class.h
@@ -4663,11 +4663,8 @@ public:
for any CTE references.
*/
if (!lex->with_cte_resolution)
- {
my_message(ER_NO_DB_ERROR, ER(ER_NO_DB_ERROR), MYF(0));
- return TRUE;
- }
- return FALSE;
+ return TRUE;
}
to->str= strmake(db.str, db.length);
diff --git a/storage/innobase/srv/srv0srv.cc b/storage/innobase/srv/srv0srv.cc
index fa3121b5f52..88cf5c0396a 100644
--- a/storage/innobase/srv/srv0srv.cc
+++ b/storage/innobase/srv/srv0srv.cc
@@ -1700,10 +1700,13 @@ static bool srv_task_execute()
return false;
}
+static void purge_create_background_thds(int );
+
std::mutex purge_thread_count_mtx;
void srv_update_purge_thread_count(uint n)
{
std::lock_guard<std::mutex> lk(purge_thread_count_mtx);
+ purge_create_background_thds(n);
srv_n_purge_threads = n;
srv_purge_thread_count_changed = 1;
}
@@ -1797,15 +1800,25 @@ static std::list<THD*> purge_thds;
static std::mutex purge_thd_mutex;
extern void* thd_attach_thd(THD*);
extern void thd_detach_thd(void *);
+static int n_purge_thds;
-static THD *acquire_thd(void **ctx)
+/* Ensure that we have at least n background THDs for purge */
+static void purge_create_background_thds(int n)
{
+ THD *thd= current_thd;
std::unique_lock<std::mutex> lk(purge_thd_mutex);
- if (purge_thds.empty()) {
- THD* thd = current_thd;
+ while (n_purge_thds < n)
+ {
purge_thds.push_back(innobase_create_background_thd("InnoDB purge worker"));
- set_current_thd(thd);
+ n_purge_thds++;
}
+ set_current_thd(thd);
+}
+
+static THD *acquire_thd(void **ctx)
+{
+ std::unique_lock<std::mutex> lk(purge_thd_mutex);
+ ut_a(!purge_thds.empty());
THD* thd = purge_thds.front();
purge_thds.pop_front();
lk.unlock();
@@ -1903,6 +1916,7 @@ static void purge_coordinator_callback(void*)
void srv_init_purge_tasks()
{
+ purge_create_background_thds(srv_n_purge_threads);
purge_coordinator_timer= srv_thread_pool->create_timer
(purge_coordinator_timer_callback, nullptr);
}
@@ -1913,11 +1927,13 @@ static void srv_shutdown_purge_tasks()
delete purge_coordinator_timer;
purge_coordinator_timer= nullptr;
purge_worker_task.wait();
+ std::unique_lock<std::mutex> lk(purge_thd_mutex);
while (!purge_thds.empty())
{
innobase_destroy_background_thd(purge_thds.front());
purge_thds.pop_front();
}
+ n_purge_thds= 0;
}
/**********************************************************************//**
@@ -1958,7 +1974,8 @@ ulint srv_get_task_queue_length()
void srv_purge_shutdown()
{
if (purge_sys.enabled()) {
- srv_update_purge_thread_count(innodb_purge_threads_MAX);
+ if (!srv_fast_shutdown)
+ srv_update_purge_thread_count(innodb_purge_threads_MAX);
while(!srv_purge_should_exit()) {
ut_a(!purge_sys.paused());
srv_wake_purge_thread_if_not_active();
diff --git a/storage/perfschema/pfs.cc b/storage/perfschema/pfs.cc
index 3e9198a6b6c..d7cac927d30 100644
--- a/storage/perfschema/pfs.cc
+++ b/storage/perfschema/pfs.cc
@@ -1826,7 +1826,7 @@ void pfs_register_socket_v1(const char *category,
@sa PSI_v1::init_mutex.
*/
PSI_mutex*
-pfs_init_mutex_v1(PSI_mutex_key key, const void *identity)
+pfs_init_mutex_v1(PSI_mutex_key key, void *identity)
{
INIT_BODY_V1(mutex, key, identity);
}
@@ -1849,7 +1849,7 @@ void pfs_destroy_mutex_v1(PSI_mutex* mutex)
@sa PSI_v1::init_rwlock.
*/
PSI_rwlock*
-pfs_init_rwlock_v1(PSI_rwlock_key key, const void *identity)
+pfs_init_rwlock_v1(PSI_rwlock_key key, void *identity)
{
INIT_BODY_V1(rwlock, key, identity);
}
@@ -1872,7 +1872,7 @@ void pfs_destroy_rwlock_v1(PSI_rwlock* rwlock)
@sa PSI_v1::init_cond.
*/
PSI_cond*
-pfs_init_cond_v1(PSI_cond_key key, const void *identity)
+pfs_init_cond_v1(PSI_cond_key key, void *identity)
{
INIT_BODY_V1(cond, key, identity);
}
diff --git a/storage/rocksdb/CMakeLists.txt b/storage/rocksdb/CMakeLists.txt
index 26533fae648..9fd9a5d7808 100644
--- a/storage/rocksdb/CMakeLists.txt
+++ b/storage/rocksdb/CMakeLists.txt
@@ -47,6 +47,15 @@ IF(MSVC_ARM64)
SKIP_ROCKSDB_PLUGIN("Windows ARM64 not supported")
ENDIF()
+#
+# Also, disable on ARM64 when not Linux
+# Requires submodule update to v6.16.3
+# containing commit https://github.com/facebook/rocksdb/commit/ee4bd4780b321ddb5f92a0f4eb956f2a2ebd60dc
+#
+IF(CMAKE_SYSTEM_PROCESSOR MATCHES "(arm64|aarch64)" AND NOT CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ SKIP_ROCKSDB_PLUGIN("ARM64 disabled on all except Linux")
+ENDIF()
+
# This plugin needs recent C++ compilers (it is using C++11 features)
# Skip build for the old compilers
SET(CXX11_FLAGS)