Commit 8b92e346 authored by Daniel Black's avatar Daniel Black

Merge 10.6 into 10.7

parents 0444d86b 63f76d3b
...@@ -52,40 +52,83 @@ remove_rocksdb_tools() ...@@ -52,40 +52,83 @@ remove_rocksdb_tools()
fi fi
} }
replace_uring_with_aio()
{
sed 's/liburing-dev/libaio-dev/g' -i debian/control
sed -e '/-DIGNORE_AIO_CHECK=YES/d' \
-e '/-DWITH_URING=yes/d' -i debian/rules
}
disable_pmem()
{
sed '/libpmem-dev/d' -i debian/control
sed '/-DWITH_PMEM=yes/d' -i debian/rules
}
architecture=$(dpkg-architecture -q DEB_BUILD_ARCH)
CODENAME="$(lsb_release -sc)" CODENAME="$(lsb_release -sc)"
case "${CODENAME}" in case "${CODENAME}" in
stretch) stretch)
# MDEV-28022 libzstd-dev-1.1.3 minimum version # MDEV-16525 libzstd-dev-1.1.3 minimum version
sed -i -e '/libzstd-dev/d' \ sed -e '/libzstd-dev/d' \
-e 's/libcurl4/libcurl3/g' -i debian/control -e 's/libcurl4/libcurl3/g' -i debian/control
remove_rocksdb_tools remove_rocksdb_tools
disable_pmem
;&
buster)
replace_uring_with_aio
if [ ! "$architecture" = amd64 ]
then
disable_pmem
fi
;&
bullseye|bookworm)
# mariadb-plugin-rocksdb in control is 4 arches covered by the distro rocksdb-tools
# so no removal is necessary.
if [[ ! "$architecture" =~ amd64|arm64|ppc64el ]]
then
disable_pmem
fi
if [[ ! "$architecture" =~ amd64|arm64|armel|armhf|i386|mips64el|mipsel|ppc64el|s390x ]]
then
replace_uring_with_aio
fi
;&
sid)
# should always be empty here.
# need to match here to avoid the default Error however
;; ;;
# UBUNTU
bionic) bionic)
remove_rocksdb_tools remove_rocksdb_tools
[ "$architecture" != amd64 ] && disable_pmem
;&
focal)
replace_uring_with_aio
;&
impish|jammy)
# mariadb-plugin-rocksdb s390x not supported by us (yet)
# ubuntu doesn't support mips64el yet, so keep this just
# in case something changes.
if [[ ! "$architecture" =~ amd64|arm64|ppc64el|s390x ]]
then
remove_rocksdb_tools
fi
if [[ ! "$architecture" =~ amd64|arm64|ppc64el ]]
then
disable_pmem
fi
if [[ ! "$architecture" =~ amd64|arm64|armhf|ppc64el|s390x ]]
then
replace_uring_with_aio
fi
;; ;;
*)
echo "Error - unknown release codename $CODENAME" >&2
exit 1
esac esac
if [[ ! "$(dpkg-architecture -q DEB_BUILD_ARCH)" =~ amd64|arm64|ppc64el|s390x ]]
then
remove_rocksdb_tools
fi
# From Debian Bullseye/Ubuntu Groovy, liburing replaces libaio
if ! apt-cache madison liburing-dev | grep 'liburing-dev' >/dev/null 2>&1
then
sed 's/liburing-dev/libaio-dev/g' -i debian/control
sed '/-DIGNORE_AIO_CHECK=YES/d' -i debian/rules
sed '/-DWITH_URING=yes/d' -i debian/rules
fi
# From Debian Buster/Ubuntu Focal onwards libpmem-dev is available
# Don't reference it when built in distro releases that lack it
if ! apt-cache madison libpmem-dev | grep 'libpmem-dev' >/dev/null 2>&1
then
sed '/libpmem-dev/d' -i debian/control
sed '/-DWITH_PMEM=yes/d' -i debian/rules
fi
# Adjust changelog, add new version # Adjust changelog, add new version
echo "Incrementing changelog and starting build scripts" echo "Incrementing changelog and starting build scripts"
......
...@@ -34,7 +34,7 @@ Build-Depends: bison, ...@@ -34,7 +34,7 @@ Build-Depends: bison,
libnuma-dev [linux-any], libnuma-dev [linux-any],
libpam0g-dev, libpam0g-dev,
libpcre2-dev, libpcre2-dev,
libpmem-dev [amd64 arm64 ppc64el], libpmem-dev [amd64 arm64 ppc64el riscv64],
libsnappy-dev, libsnappy-dev,
libssl-dev, libssl-dev,
libssl-dev:native, libssl-dev:native,
......
etc/columnstore/Columnstore.xml
etc/columnstore/ErrorMessage.txt
etc/columnstore/MessageFile.txt
etc/columnstore/storagemanager.cnf
etc/mysql/mariadb.conf.d/columnstore.cnf
usr/bin/mcsRebuildEM
usr/bin/DDLProc
usr/bin/DMLProc
usr/bin/ExeMgr
usr/bin/PrimProc
usr/bin/StorageManager
usr/bin/WriteEngineServer
usr/bin/clearShm
usr/bin/cleartablelock
usr/bin/columnstore-post-install
usr/bin/columnstore-pre-uninstall
usr/bin/columnstoreDBWrite
usr/bin/columnstoreSyslogSetup.sh
usr/bin/columnstore_run.sh
usr/bin/colxml
usr/bin/controllernode
usr/bin/cpimport
usr/bin/cpimport.bin
usr/bin/cplogger
usr/bin/cspasswd
usr/bin/cskeys
usr/bin/dbbuilder
usr/bin/dbrmctl
usr/bin/ddlcleanup
usr/bin/editem
usr/bin/idbmeminfo
usr/bin/load_brm
usr/bin/mariadb-columnstore-start.sh
usr/bin/mariadb-columnstore-stop.sh
usr/bin/mcs-savebrm.py
usr/bin/mcs-loadbrm.py
usr/bin/mcs-stop-controllernode.sh
usr/bin/mcsGetConfig
usr/bin/mcsSetConfig
usr/bin/mycnfUpgrade
usr/bin/post-mysql-install
usr/bin/post-mysqld-install
usr/bin/reset_locks
usr/bin/rollback
usr/bin/save_brm
usr/bin/smcat
usr/bin/smls
usr/bin/smput
usr/bin/smrm
usr/bin/testS3Connection
usr/bin/viewtablelock
usr/bin/workernode
usr/lib/*/libbatchloader.so
usr/lib/*/libbrm.so
usr/lib/*/libcacheutils.so
usr/lib/*/libcloudio.so
usr/lib/*/libcommon.so
usr/lib/*/libcompress.so
usr/lib/*/libconfigcpp.so
usr/lib/*/libdataconvert.so
usr/lib/*/libddlcleanuputil.so
usr/lib/*/libddlpackage.so
usr/lib/*/libddlpackageproc.so
usr/lib/*/libdmlpackage.so
usr/lib/*/libdmlpackageproc.so
usr/lib/*/libexecplan.so
usr/lib/*/libfuncexp.so
usr/lib/*/libidbdatafile.so
usr/lib/*/libjoblist.so
usr/lib/*/libjoiner.so
usr/lib/*/liblibmysql_client.so
usr/lib/*/libloggingcpp.so
usr/lib/*/libmarias3.so
usr/lib/*/libmessageqcpp.so
usr/lib/*/liboamcpp.so
usr/lib/*/libquerystats.so
usr/lib/*/libquerytele.so
usr/lib/*/libregr.so
usr/lib/*/librowgroup.so
usr/lib/*/librwlock.so
usr/lib/*/libstoragemanager.so
usr/lib/*/libthreadpool.so
usr/lib/*/libthrift.so
usr/lib/*/libudfsdk.so
usr/lib/*/libwindowfunction.so
usr/lib/*/libwriteengine.so
usr/lib/*/libwriteengineclient.so
usr/lib/*/libwriteengineredistribute.so
usr/lib/*/libdatatypes.so
usr/lib/mysql/plugin/ha_columnstore.so
usr/lib/mysql/plugin/libregr_mysql.so
usr/lib/mysql/plugin/libudf_mysql.so
usr/sbin/install_mcs_mysql.sh
usr/share/columnstore/calremoveuserpriority.sql
usr/share/columnstore/calsetuserpriority.sql
usr/share/columnstore/calshowprocesslist.sql
usr/share/columnstore/columnstoreAlias
usr/share/columnstore/columnstoreLogRotate
usr/share/columnstore/columnstoreSyslog
usr/share/columnstore/columnstoreSyslog-ng
usr/share/columnstore/columnstoreSyslog7
usr/share/columnstore/columnstore_info.sql
usr/share/columnstore/dumpcat_mysql.sql
usr/share/columnstore/gitversionEngine
usr/share/columnstore/mariadb-columnstore.service
usr/share/columnstore/mcs-controllernode.service
usr/share/columnstore/mcs-ddlproc.service
usr/share/columnstore/mcs-dmlproc.service
usr/share/columnstore/mcs-exemgr.service
usr/share/columnstore/mcs-loadbrm.service
usr/share/columnstore/mcs-primproc.service
usr/share/columnstore/mcs-storagemanager.service
usr/share/columnstore/mcs-workernode.service
usr/share/columnstore/mcs-writeengineserver.service
usr/share/columnstore/myCnf-exclude-args.text
usr/share/columnstore/myCnf-include-args.text
usr/share/columnstore/releasenum
usr/share/columnstore/syscatalog_mysql.sql
var/lib/columnstore/local/module
#!/bin/bash
set -e
# Install ColumnStore
columnstore-post-install install
#DEBHELPER#
#!/bin/bash
set -e
if [ "$1" = "purge" ]; then
rm -rf /var/lib/columnstore
rm -rf /etc/columnstore
rm -f /etc/mysql/mariadb.conf.d/columnstore.cnf.rpmsave
fi
# Automatically restart MariaDB after ColumnStore plugin has been removed
case "$1" in
purge|remove|disappear)
if [ -d /run/systemd/system ]; then
# If systemd
deb-systemd-invoke restart mariadb.service >/dev/null
elif [ -x "/etc/init.d/mariadb" ]; then
# Fall-back to SysV init
invoke-rc.d mariadb restart || exit $?
fi
;;
esac
#DEBHELPER#
#!/bin/bash
set -e
columnstore-pre-uninstall
#DEBHELPER#
...@@ -60,7 +60,7 @@ endif ...@@ -60,7 +60,7 @@ endif
# Only attempt to build with PMEM on archs that have package libpmem-dev available # Only attempt to build with PMEM on archs that have package libpmem-dev available
# See https://packages.debian.org/search?searchon=names&keywords=libpmem-dev # See https://packages.debian.org/search?searchon=names&keywords=libpmem-dev
ifneq (,$(filter $(DEB_HOST_ARCH_CPU),amd64 arm64 ppc64el)) ifneq (,$(filter $(DEB_HOST_ARCH_CPU),amd64 arm64 ppc64el riscv64))
CMAKEFLAGS += -DWITH_PMEM=yes CMAKEFLAGS += -DWITH_PMEM=yes
endif endif
......
...@@ -23,8 +23,10 @@ version-substvar-for-external-package libmariadbd-dev -> libmariadbclient-dev ...@@ -23,8 +23,10 @@ version-substvar-for-external-package libmariadbd-dev -> libmariadbclient-dev
# ColumnStore not used in Debian, safe to ignore. Reported upstream in https://jira.mariadb.org/browse/MDEV-24124 # ColumnStore not used in Debian, safe to ignore. Reported upstream in https://jira.mariadb.org/browse/MDEV-24124
source-is-missing storage/columnstore/columnstore/utils/jemalloc/libjemalloc.so.2 source-is-missing storage/columnstore/columnstore/utils/jemalloc/libjemalloc.so.2
# Must be fixed upstream # Must be fixed upstream
source-is-missing storage/mroonga/vendor/groonga/examples/dictionary/html/js/jquery-ui-1.8.18.custom.js line 58 is 273 characters long (>256) source-is-missing storage/mroonga/vendor/groonga/examples/dictionary/html/js/jquery-ui-1.8.18.custom.js *
# Intentional control relationships # Intentional control relationships
version-substvar-for-external-package Replaces (line 216) ${source:Version} libmariadbd-dev -> libmariadbclient-dev version-substvar-for-external-package Replaces (line 216) ${source:Version} libmariadbd-dev -> libmariadbclient-dev
version-substvar-for-external-package Replaces (line 66) ${source:Version} libmariadb-dev -> libmysqlclient-dev version-substvar-for-external-package Replaces (line 66) ${source:Version} libmariadb-dev -> libmysqlclient-dev
version-substvar-for-external-package Replaces (line 66) ${source:Version} libmariadb-dev -> libmysqld-dev version-substvar-for-external-package Replaces (line 66) ${source:Version} libmariadb-dev -> libmysqld-dev
# We can't change build dependencies on a stable branch (10.5..10.8) so just override this
missing-build-dependency-for-dh-addon systemd *
...@@ -2,3 +2,15 @@ ...@@ -2,3 +2,15 @@
# suite.pm will make sure that all tests including this file # suite.pm will make sure that all tests including this file
# will be skipped unless innodb is enabled # will be skipped unless innodb is enabled
# #
--disable_query_log
if (`select count(*) from information_schema.system_variables where variable_name='have_sanitizer' and global_value like "MSAN%"`)
{
SET STATEMENT sql_log_bin=0 FOR
call mtr.add_suppression("InnoDB: Trying to delete tablespace.*pending operations");
}
if ($VALGRIND_TEST)
{
SET STATEMENT sql_log_bin=0 FOR
call mtr.add_suppression("InnoDB: Trying to delete tablespace.*pending operations");
}
--enable_query_log
...@@ -12,6 +12,10 @@ ...@@ -12,6 +12,10 @@
--echo # Save the initial number of concurrent sessions --echo # Save the initial number of concurrent sessions
--source include/count_sessions.inc --source include/count_sessions.inc
--disable_query_log
# This may be triggered on a slow system or one that lacks native AIO.
call mtr.add_suppression("InnoDB: Trying to delete tablespace.*pending operations");
--enable_query_log
connect (con1,localhost,root,,); connect (con1,localhost,root,,);
connect (con2,localhost,root,,); connect (con2,localhost,root,,);
......
...@@ -15,6 +15,11 @@ if (!$INNOCHECKSUM) { ...@@ -15,6 +15,11 @@ if (!$INNOCHECKSUM) {
--die Need innochecksum binary --die Need innochecksum binary
} }
--disable_query_log
# This may be triggered on a slow system or one that lacks native AIO.
call mtr.add_suppression("InnoDB: Trying to delete tablespace.*pending operations");
--enable_query_log
let $checksum_algorithm = `SELECT @@innodb_checksum_algorithm`; let $checksum_algorithm = `SELECT @@innodb_checksum_algorithm`;
SET GLOBAL innodb_file_per_table = ON; SET GLOBAL innodb_file_per_table = ON;
# zlib # zlib
......
...@@ -38,7 +38,7 @@ if (`SELECT COUNT(*) <> 36 FROM information_schema.character_sets ...@@ -38,7 +38,7 @@ if (`SELECT COUNT(*) <> 36 FROM information_schema.character_sets
'hp8' , 'keybcs2', 'koi8r' , 'koi8u' , 'latin1', 'hp8' , 'keybcs2', 'koi8r' , 'koi8u' , 'latin1',
'latin2' , 'latin5' , 'latin7' , 'macce' , 'macroman', 'latin2' , 'latin5' , 'latin7' , 'macce' , 'macroman',
'sjis' , 'swe7' , 'tis620' , 'ucs2' , 'ujis', 'sjis' , 'swe7' , 'tis620' , 'ucs2' , 'ujis',
'utf8' 'utf8mb3'
)`) )`)
{ {
--skip Not all character sets required for this test are present --skip Not all character sets required for this test are present
...@@ -72,12 +72,12 @@ WHERE collation_name IN ( ...@@ -72,12 +72,12 @@ WHERE collation_name IN (
'ucs2_latvian_ci', 'ucs2_lithuanian_ci', 'ucs2_persian_ci', 'ucs2_polish_ci', 'ucs2_latvian_ci', 'ucs2_lithuanian_ci', 'ucs2_persian_ci', 'ucs2_polish_ci',
'ucs2_roman_ci', 'ucs2_romanian_ci', 'ucs2_slovak_ci', 'ucs2_slovenian_ci', 'ucs2_roman_ci', 'ucs2_romanian_ci', 'ucs2_slovak_ci', 'ucs2_slovenian_ci',
'ucs2_spanish2_ci', 'ucs2_spanish_ci', 'ucs2_swedish_ci', 'ucs2_turkish_ci', 'ucs2_spanish2_ci', 'ucs2_spanish_ci', 'ucs2_swedish_ci', 'ucs2_turkish_ci',
'ucs2_unicode_ci', 'ujis_bin', 'ujis_japanese_ci', 'utf8_bin', 'ucs2_unicode_ci', 'ujis_bin', 'ujis_japanese_ci', 'utf8mb3_bin',
'utf8_czech_ci', 'utf8_danish_ci', 'utf8_estonian_ci', 'utf8_general_ci', 'utf8mb3_czech_ci', 'utf8mb3_danish_ci', 'utf8mb3_estonian_ci', 'utf8mb3_general_ci',
'utf8_hungarian_ci', 'utf8_icelandic_ci', 'utf8_latvian_ci', 'utf8_lithuanian_ci', 'utf8mb3_hungarian_ci', 'utf8mb3_icelandic_ci', 'utf8mb3_latvian_ci', 'utf8mb3_lithuanian_ci',
'utf8_persian_ci', 'utf8_polish_ci', 'utf8_roman_ci', 'utf8_romanian_ci', 'utf8mb3_persian_ci', 'utf8mb3_polish_ci', 'utf8mb3_roman_ci', 'utf8mb3_romanian_ci',
'utf8_slovak_ci', 'utf8_slovenian_ci', 'utf8_spanish2_ci', 'utf8_spanish_ci', 'utf8mb3_slovak_ci', 'utf8mb3_slovenian_ci', 'utf8mb3_spanish2_ci', 'utf8mb3_spanish_ci',
'utf8_swedish_ci', 'utf8_turkish_ci', 'utf8_unicode_ci' 'utf8mb3_swedish_ci', 'utf8mb3_turkish_ci', 'utf8mb3_unicode_ci'
)`) )`)
{ {
--skip Not all collations required for this test are present --skip Not all collations required for this test are present
...@@ -86,7 +86,7 @@ WHERE collation_name IN ( ...@@ -86,7 +86,7 @@ WHERE collation_name IN (
################################ ################################
let $check_std_csets= 1; let $check_std_csets= 1;
let $check_ucs2_csets= 1; let $check_ucs2_csets= 1;
let $check_utf8_csets= 1; let $check_utf8mb3_csets= 1;
# Bug#32784: Timeout in test "innodb_charset": InnoDB much slower # Bug#32784: Timeout in test "innodb_charset": InnoDB much slower
# than other handlers # than other handlers
...@@ -104,7 +104,7 @@ SET autocommit=0; ...@@ -104,7 +104,7 @@ SET autocommit=0;
################################ ################################
let $check_std_csets= 1; let $check_std_csets= 1;
let $check_ucs2_csets= 1; let $check_ucs2_csets= 1;
let $check_utf8_csets= 1; let $check_utf8mb3_csets= 1;
# #
# Check all charsets/collation combinations # Check all charsets/collation combinations
...@@ -610,7 +610,7 @@ let $coll= ucs2_unicode_ci; ...@@ -610,7 +610,7 @@ let $coll= ucs2_unicode_ci;
} }
if ($check_utf8_csets) if ($check_utf8mb3_csets)
{ {
# utf8 # utf8
......
# This test is slow on buildbot. # This test is slow on buildbot.
--source include/big_test.inc --source include/big_test.inc
--disable_query_log
# This may be triggered on a slow system or one that lacks native AIO.
call mtr.add_suppression("InnoDB: Trying to delete tablespace.*pending operations");
--enable_query_log
create table innodb_normal (c1 int not null auto_increment primary key, b char(200)) engine=innodb; create table innodb_normal (c1 int not null auto_increment primary key, b char(200)) engine=innodb;
create table innodb_page_compressed1 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=1; create table innodb_page_compressed1 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=1;
create table innodb_page_compressed2 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=2; create table innodb_page_compressed2 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=2;
......
...@@ -2,6 +2,11 @@ ...@@ -2,6 +2,11 @@
-- source include/have_innodb_bzip2.inc -- source include/have_innodb_bzip2.inc
-- source include/not_embedded.inc -- source include/not_embedded.inc
--disable_query_log
# This may be triggered on a slow system or one that lacks native AIO.
call mtr.add_suppression("InnoDB: Trying to delete tablespace.*pending operations");
--enable_query_log
# bzip2 # bzip2
set global innodb_compression_algorithm = 5; set global innodb_compression_algorithm = 5;
......
...@@ -4,6 +4,11 @@ ...@@ -4,6 +4,11 @@
# The test can take very long time with valgrind # The test can take very long time with valgrind
--source include/not_valgrind.inc --source include/not_valgrind.inc
--disable_query_log
# This may be triggered on a slow system or one that lacks native AIO.
call mtr.add_suppression("InnoDB: Trying to delete tablespace.*pending operations");
--enable_query_log
# lz4 # lz4
set global innodb_compression_algorithm = 2; set global innodb_compression_algorithm = 2;
......
...@@ -2,6 +2,11 @@ ...@@ -2,6 +2,11 @@
-- source include/have_innodb_lzma.inc -- source include/have_innodb_lzma.inc
-- source include/not_embedded.inc -- source include/not_embedded.inc
--disable_query_log
# This may be triggered on a slow system or one that lacks native AIO.
call mtr.add_suppression("InnoDB: Trying to delete tablespace.*pending operations");
--enable_query_log
# lzma # lzma
set global innodb_compression_algorithm = 4; set global innodb_compression_algorithm = 4;
......
...@@ -2,6 +2,11 @@ ...@@ -2,6 +2,11 @@
-- source include/have_innodb_lzo.inc -- source include/have_innodb_lzo.inc
-- source include/not_embedded.inc -- source include/not_embedded.inc
--disable_query_log
# This may be triggered on a slow system or one that lacks native AIO.
call mtr.add_suppression("InnoDB: Trying to delete tablespace.*pending operations");
--enable_query_log
# lzo # lzo
set global innodb_compression_algorithm = 3; set global innodb_compression_algorithm = 3;
......
...@@ -2,6 +2,10 @@ ...@@ -2,6 +2,10 @@
--source include/not_embedded.inc --source include/not_embedded.inc
let $innodb_compression_algorithm_orig=`SELECT @@innodb_compression_algorithm`; let $innodb_compression_algorithm_orig=`SELECT @@innodb_compression_algorithm`;
--disable_query_log
# This may be triggered on a slow system or one that lacks native AIO.
call mtr.add_suppression("InnoDB: Trying to delete tablespace.*pending operations");
--enable_query_log
# zlib # zlib
set global innodb_compression_algorithm = 1; set global innodb_compression_algorithm = 1;
......
...@@ -3,6 +3,11 @@ ...@@ -3,6 +3,11 @@
# This test is slow on buildbot. # This test is slow on buildbot.
--source include/big_test.inc --source include/big_test.inc
--disable_query_log
# This may be triggered on a slow system or one that lacks native AIO.
call mtr.add_suppression("InnoDB: Trying to delete tablespace.*pending operations");
--enable_query_log
# zlib # zlib
set global innodb_compression_algorithm = 1; set global innodb_compression_algorithm = 1;
......
...@@ -6,6 +6,9 @@ ...@@ -6,6 +6,9 @@
--disable_query_log --disable_query_log
call mtr.add_suppression("InnoDB: Difficult to find free blocks in the buffer pool"); call mtr.add_suppression("InnoDB: Difficult to find free blocks in the buffer pool");
--disable_query_log
# This may be triggered on a slow system.
call mtr.add_suppression("InnoDB: Trying to delete tablespace.*pending operations");
--enable_query_log --enable_query_log
SET GLOBAL innodb_undo_log_truncate = 0; SET GLOBAL innodb_undo_log_truncate = 0;
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
# #
--source include/no_protocol.inc --source include/no_protocol.inc
--source include/have_innodb.inc
--echo # SET-UP --echo # SET-UP
CREATE DATABASE nested_sp; CREATE DATABASE nested_sp;
...@@ -17,7 +16,7 @@ CREATE TABLE t1( ...@@ -17,7 +16,7 @@ CREATE TABLE t1(
CREATE TABLE t2( CREATE TABLE t2(
n INT UNSIGNED NOT NULL, n INT UNSIGNED NOT NULL,
f BIGINT UNSIGNED f BIGINT UNSIGNED
) engine=innodb; );
--echo ############################ --echo ############################
--echo # Creating Stored Programs # --echo # Creating Stored Programs #
......
...@@ -167,7 +167,7 @@ data INT NOT NULL ...@@ -167,7 +167,7 @@ data INT NOT NULL
CREATE TABLE t2( CREATE TABLE t2(
n INT UNSIGNED NOT NULL, n INT UNSIGNED NOT NULL,
f BIGINT UNSIGNED f BIGINT UNSIGNED
) engine=innodb; );
############################ ############################
# Creating Stored Programs # # Creating Stored Programs #
############################ ############################
......
...@@ -167,7 +167,7 @@ data INT NOT NULL ...@@ -167,7 +167,7 @@ data INT NOT NULL
CREATE TABLE t2( CREATE TABLE t2(
n INT UNSIGNED NOT NULL, n INT UNSIGNED NOT NULL,
f BIGINT UNSIGNED f BIGINT UNSIGNED
) engine=innodb; );
############################ ############################
# Creating Stored Programs # # Creating Stored Programs #
############################ ############################
......
...@@ -13,7 +13,7 @@ data INT NOT NULL ...@@ -13,7 +13,7 @@ data INT NOT NULL
CREATE TABLE t2( CREATE TABLE t2(
n INT UNSIGNED NOT NULL, n INT UNSIGNED NOT NULL,
f BIGINT UNSIGNED f BIGINT UNSIGNED
) engine=innodb; );
############################ ############################
# Creating Stored Programs # # Creating Stored Programs #
############################ ############################
...@@ -67,6 +67,7 @@ END WHILE; ...@@ -67,6 +67,7 @@ END WHILE;
END| END|
CREATE TRIGGER trg AFTER INSERT ON t1 FOR EACH ROW CREATE TRIGGER trg AFTER INSERT ON t1 FOR EACH ROW
CALL ifac(10)| CALL ifac(10)|
ALTER TABLE t2 ENGINE=InnoDB;
##################### #####################
# Executing queries # # Executing queries #
##################### #####################
...@@ -1199,7 +1200,7 @@ data INT NOT NULL ...@@ -1199,7 +1200,7 @@ data INT NOT NULL
CREATE TABLE t2( CREATE TABLE t2(
n INT UNSIGNED NOT NULL, n INT UNSIGNED NOT NULL,
f BIGINT UNSIGNED f BIGINT UNSIGNED
) engine=innodb; );
############################ ############################
# Creating Stored Programs # # Creating Stored Programs #
############################ ############################
......
...@@ -101,6 +101,7 @@ CREATE TRIGGER trg4 BEFORE DELETE ON t1 FOR EACH ROW ...@@ -101,6 +101,7 @@ CREATE TRIGGER trg4 BEFORE DELETE ON t1 FOR EACH ROW
SET @del:= @del + 1| SET @del:= @del + 1|
CREATE TRIGGER trg5 AFTER DELETE ON t1 FOR EACH ROW CREATE TRIGGER trg5 AFTER DELETE ON t1 FOR EACH ROW
SET @del:= @del + 8 + old.j| SET @del:= @del + 8 + old.j|
ALTER TABLE t2 ENGINE=InnoDB;
##################### #####################
# Executing queries # # Executing queries #
##################### #####################
...@@ -159,6 +160,7 @@ WHERE CURRENT_SCHEMA='stored_programs' AND ...@@ -159,6 +160,7 @@ WHERE CURRENT_SCHEMA='stored_programs' AND
ORDER BY OBJECT_NAME,NESTING_EVENT_LEVEL,SQL_TEXT; ORDER BY OBJECT_NAME,NESTING_EVENT_LEVEL,SQL_TEXT;
EVENT_NAME SQL_TEXT OBJECT_NAME NESTING_EVENT_TYPE NESTING_EVENT_LEVEL EVENT_NAME SQL_TEXT OBJECT_NAME NESTING_EVENT_TYPE NESTING_EVENT_LEVEL
statement/scheduler/event NULL NULL NULL 0 statement/scheduler/event NULL NULL NULL 0
statement/sql/alter_table ALTER TABLE t2 ENGINE=InnoDB NULL NULL 0
statement/sql/call_procedure CALL SampleProc1(30,40,50) NULL NULL 0 statement/sql/call_procedure CALL SampleProc1(30,40,50) NULL NULL 0
statement/sql/call_procedure CALL SampleProc2("Jwalamukhi",34) NULL NULL 0 statement/sql/call_procedure CALL SampleProc2("Jwalamukhi",34) NULL NULL 0
statement/sql/call_procedure CALL SampleProc3() NULL NULL 0 statement/sql/call_procedure CALL SampleProc3() NULL NULL 0
...@@ -375,7 +377,7 @@ data INT NOT NULL ...@@ -375,7 +377,7 @@ data INT NOT NULL
CREATE TABLE t2( CREATE TABLE t2(
n INT UNSIGNED NOT NULL, n INT UNSIGNED NOT NULL,
f BIGINT UNSIGNED f BIGINT UNSIGNED
) engine=innodb; );
############################ ############################
# Creating Stored Programs # # Creating Stored Programs #
############################ ############################
...@@ -429,6 +431,7 @@ END WHILE; ...@@ -429,6 +431,7 @@ END WHILE;
END| END|
CREATE TRIGGER trg AFTER INSERT ON t1 FOR EACH ROW CREATE TRIGGER trg AFTER INSERT ON t1 FOR EACH ROW
CALL ifac(10)| CALL ifac(10)|
ALTER TABLE t2 ENGINE=InnoDB;
##################### #####################
# Executing queries # # Executing queries #
##################### #####################
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
--source include/not_embedded.inc --source include/not_embedded.inc
--source include/have_perfschema.inc --source include/have_perfschema.inc
--source include/have_innodb.inc
TRUNCATE TABLE performance_schema.events_statements_summary_by_program; TRUNCATE TABLE performance_schema.events_statements_summary_by_program;
TRUNCATE TABLE performance_schema.events_statements_history_long; TRUNCATE TABLE performance_schema.events_statements_history_long;
...@@ -13,6 +14,7 @@ TRUNCATE TABLE performance_schema.events_statements_history_long; ...@@ -13,6 +14,7 @@ TRUNCATE TABLE performance_schema.events_statements_history_long;
--echo ################################################# --echo #################################################
--source suite/perfschema/include/program_nested_setup.inc --source suite/perfschema/include/program_nested_setup.inc
ALTER TABLE t2 ENGINE=InnoDB;
--source suite/perfschema/include/program_nested_execution.inc --source suite/perfschema/include/program_nested_execution.inc
SELECT EVENT_NAME, SQL_TEXT, CURRENT_SCHEMA, OBJECT_TYPE, OBJECT_SCHEMA, SELECT EVENT_NAME, SQL_TEXT, CURRENT_SCHEMA, OBJECT_TYPE, OBJECT_SCHEMA,
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
--source include/not_embedded.inc --source include/not_embedded.inc
--source include/have_perfschema.inc --source include/have_perfschema.inc
--source include/have_innodb.inc
TRUNCATE TABLE performance_schema.events_statements_history_long; TRUNCATE TABLE performance_schema.events_statements_history_long;
...@@ -14,6 +15,7 @@ TRUNCATE TABLE performance_schema.events_statements_history_long; ...@@ -14,6 +15,7 @@ TRUNCATE TABLE performance_schema.events_statements_history_long;
--echo # Non-nested Stored programs. --echo # Non-nested Stored programs.
--echo #---------------------------- --echo #----------------------------
--source suite/perfschema/include/program_setup.inc --source suite/perfschema/include/program_setup.inc
ALTER TABLE t2 ENGINE=InnoDB;
--source suite/perfschema/include/program_execution.inc --source suite/perfschema/include/program_execution.inc
SELECT EVENT_NAME, SQL_TEXT, OBJECT_NAME, NESTING_EVENT_TYPE, NESTING_EVENT_LEVEL SELECT EVENT_NAME, SQL_TEXT, OBJECT_NAME, NESTING_EVENT_TYPE, NESTING_EVENT_LEVEL
...@@ -31,6 +33,7 @@ TRUNCATE TABLE performance_schema.events_statements_history_long; ...@@ -31,6 +33,7 @@ TRUNCATE TABLE performance_schema.events_statements_history_long;
--echo # Nested stored programs. --echo # Nested stored programs.
--echo #------------------------ --echo #------------------------
--source suite/perfschema/include/program_nested_setup.inc --source suite/perfschema/include/program_nested_setup.inc
ALTER TABLE t2 ENGINE=InnoDB;
--source suite/perfschema/include/program_nested_execution.inc --source suite/perfschema/include/program_nested_execution.inc
SELECT EVENT_NAME, SQL_TEXT, OBJECT_NAME, NESTING_EVENT_TYPE, NESTING_EVENT_LEVEL SELECT EVENT_NAME, SQL_TEXT, OBJECT_NAME, NESTING_EVENT_TYPE, NESTING_EVENT_LEVEL
......
...@@ -4,6 +4,11 @@ SELECT @orig; ...@@ -4,6 +4,11 @@ SELECT @orig;
25 25
SET GLOBAL innodb_buffer_pool_dump_pct=3; SET GLOBAL innodb_buffer_pool_dump_pct=3;
# Do the dump # Do the dump
SELECT @@global.innodb_buffer_pool_dump_now;
SELECT variable_value INTO @old_dump_status FROM information_schema.global_status
WHERE LOWER(variable_name) = 'innodb_buffer_pool_dump_status';
SET GLOBAL innodb_buffer_pool_dump_now = ON;
SELECT @@global.innodb_buffer_pool_dump_now;
SET GLOBAL innodb_buffer_pool_dump_pct=20; SET GLOBAL innodb_buffer_pool_dump_pct=20;
SELECT @@global.innodb_buffer_pool_dump_pct; SELECT @@global.innodb_buffer_pool_dump_pct;
@@global.innodb_buffer_pool_dump_pct @@global.innodb_buffer_pool_dump_pct
......
--disable_query_log
if (!$TEST_VERSIONING_SO) if (!$TEST_VERSIONING_SO)
{ {
--skip needs test_versioning plugin --skip needs test_versioning plugin
} }
source include/have_innodb.inc; source include/have_innodb.inc;
--disable_query_log
set @@session.time_zone='+00:00'; set @@session.time_zone='+00:00';
select ifnull(max(transaction_id), 0) into @start_trx_id from mysql.transaction_registry; select ifnull(max(transaction_id), 0) into @start_trx_id from mysql.transaction_registry;
......
...@@ -5134,7 +5134,7 @@ static Sys_var_have Sys_have_symlink( ...@@ -5134,7 +5134,7 @@ static Sys_var_have Sys_have_symlink(
# ifdef __SANITIZE_ADDRESS__ # ifdef __SANITIZE_ADDRESS__
# ifdef WITH_UBSAN # ifdef WITH_UBSAN
# define SANITIZER_MODE "ASAN+UBSAN" # define SANITIZER_MODE "ASAN,UBSAN"
# else # else
# define SANITIZER_MODE "ASAN" # define SANITIZER_MODE "ASAN"
# endif # endif
......
...@@ -2263,29 +2263,66 @@ buf_page_t* buf_page_get_zip(const page_id_t page_id, ulint zip_size) ...@@ -2263,29 +2263,66 @@ buf_page_t* buf_page_get_zip(const page_id_t page_id, ulint zip_size)
lookup: lookup:
for (bool discard_attempted= false;;) for (bool discard_attempted= false;;)
{ {
#ifndef NO_ELISION
if (xbegin())
{ {
transactional_shared_lock_guard<page_hash_latch> g{hash_lock}; if (hash_lock.is_locked())
xabort();
bpage= buf_pool.page_hash.get(page_id, chain); bpage= buf_pool.page_hash.get(page_id, chain);
if (!bpage || buf_pool.watch_is_sentinel(*bpage)) if (!bpage || buf_pool.watch_is_sentinel(*bpage))
{
xend();
goto must_read_page; goto must_read_page;
}
if (!bpage->zip.data)
{
/* There is no ROW_FORMAT=COMPRESSED page. */
xend();
return nullptr;
}
if (discard_attempted || !bpage->frame)
{
if (!bpage->lock.s_lock_try())
xabort();
xend();
break;
}
xend();
}
else
#endif
{
hash_lock.lock_shared();
bpage= buf_pool.page_hash.get(page_id, chain);
if (!bpage || buf_pool.watch_is_sentinel(*bpage))
{
hash_lock.unlock_shared();
goto must_read_page;
}
ut_ad(bpage->in_file()); ut_ad(bpage->in_file());
ut_ad(page_id == bpage->id()); ut_ad(page_id == bpage->id());
if (!bpage->zip.data) if (!bpage->zip.data)
{
/* There is no ROW_FORMAT=COMPRESSED page. */ /* There is no ROW_FORMAT=COMPRESSED page. */
hash_lock.unlock_shared();
return nullptr; return nullptr;
}
if (discard_attempted || !bpage->frame) if (discard_attempted || !bpage->frame)
{ {
/* Even when we are holding a page_hash latch, it should be /* Even when we are holding a hash_lock, it should be
acceptable to wait for a page S-latch here, because acceptable to wait for a page S-latch here, because
buf_page_t::read_complete() will not wait for buf_pool.mutex, buf_page_t::read_complete() will not wait for buf_pool.mutex,
and because S-latch would not conflict with a U-latch and because S-latch would not conflict with a U-latch
that would be protecting buf_page_t::write_complete(). */ that would be protecting buf_page_t::write_complete(). */
bpage->lock.s_lock(); bpage->lock.s_lock();
hash_lock.unlock_shared();
break; break;
} }
hash_lock.unlock_shared();
} }
discard_attempted= true; discard_attempted= true;
......
/***************************************************************************** /*****************************************************************************
Copyright (c) 1995, 2017, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 1995, 2017, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2015, 2021, MariaDB Corporation. Copyright (c) 2015, 2022, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software the terms of the GNU General Public License as published by the Free Software
...@@ -50,19 +50,30 @@ i/o-fixed buffer blocks */ ...@@ -50,19 +50,30 @@ i/o-fixed buffer blocks */
/** Remove the sentinel block for the watch before replacing it with a /** Remove the sentinel block for the watch before replacing it with a
real block. watch_unset() or watch_occurred() will notice real block. watch_unset() or watch_occurred() will notice
that the block has been replaced with the real block. that the block has been replaced with the real block.
@param watch sentinel @param w sentinel
@param chain locked hash table chain */ @param chain locked hash table chain
inline void buf_pool_t::watch_remove(buf_page_t *watch, @return w->state() */
inline uint32_t buf_pool_t::watch_remove(buf_page_t *w,
buf_pool_t::hash_chain &chain) buf_pool_t::hash_chain &chain)
{ {
mysql_mutex_assert_owner(&buf_pool.mutex); mysql_mutex_assert_owner(&buf_pool.mutex);
ut_ad(page_hash.lock_get(chain).is_write_locked()); ut_ad(xtest() || page_hash.lock_get(chain).is_write_locked());
ut_a(watch_is_sentinel(*watch)); ut_ad(w >= &watch[0]);
if (watch->buf_fix_count()) ut_ad(w < &watch[array_elements(watch)]);
page_hash.remove(chain, watch); ut_ad(!w->in_zip_hash);
ut_ad(!watch->in_page_hash); ut_ad(!w->zip.data);
watch->set_state(buf_page_t::NOT_USED);
watch->id_= page_id_t(~0ULL); uint32_t s{w->state()};
w->set_state(buf_page_t::NOT_USED);
ut_ad(s >= buf_page_t::UNFIXED);
ut_ad(s < buf_page_t::READ_FIX);
if (~buf_page_t::LRU_MASK & s)
page_hash.remove(chain, w);
ut_ad(!w->in_page_hash);
w->id_= page_id_t(~0ULL);
return s;
} }
/** Initialize a page for read to the buffer buf_pool. If the page is /** Initialize a page for read to the buffer buf_pool. If the page is
...@@ -139,14 +150,8 @@ static buf_page_t* buf_page_init_for_read(ulint mode, const page_id_t page_id, ...@@ -139,14 +150,8 @@ static buf_page_t* buf_page_init_for_read(ulint mode, const page_id_t page_id,
{buf_pool.page_hash.lock_get(chain)}; {buf_pool.page_hash.lock_get(chain)};
if (hash_page) if (hash_page)
{ bpage->set_state(buf_pool.watch_remove(hash_page, chain) +
/* Preserve the reference count. */ (buf_page_t::READ_FIX - buf_page_t::UNFIXED));
uint32_t buf_fix_count= hash_page->state();
ut_a(buf_fix_count >= buf_page_t::UNFIXED);
ut_a(buf_fix_count < buf_page_t::READ_FIX);
buf_pool.watch_remove(hash_page, chain);
block->page.fix(buf_fix_count - buf_page_t::UNFIXED);
}
buf_pool.page_hash.append(chain, &block->page); buf_pool.page_hash.append(chain, &block->page);
} }
...@@ -209,16 +214,8 @@ static buf_page_t* buf_page_init_for_read(ulint mode, const page_id_t page_id, ...@@ -209,16 +214,8 @@ static buf_page_t* buf_page_init_for_read(ulint mode, const page_id_t page_id,
{buf_pool.page_hash.lock_get(chain)}; {buf_pool.page_hash.lock_get(chain)};
if (hash_page) if (hash_page)
{ bpage->set_state(buf_pool.watch_remove(hash_page, chain) +
/* Preserve the reference count. It can be 0 if (buf_page_t::READ_FIX - buf_page_t::UNFIXED));
buf_pool_t::watch_unset() is executing concurrently,
waiting for buf_pool.mutex, which we are holding. */
uint32_t buf_fix_count= hash_page->state();
ut_a(buf_fix_count >= buf_page_t::UNFIXED);
ut_a(buf_fix_count < buf_page_t::READ_FIX);
bpage->fix(buf_fix_count - buf_page_t::UNFIXED);
buf_pool.watch_remove(hash_page, chain);
}
buf_pool.page_hash.append(chain, bpage); buf_pool.page_hash.append(chain, bpage);
} }
......
/***************************************************************************** /*****************************************************************************
Copyright (c) 1995, 2016, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 1995, 2016, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2013, 2021, MariaDB Corporation. Copyright (c) 2013, 2022, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software the terms of the GNU General Public License as published by the Free Software
...@@ -1526,9 +1526,10 @@ class buf_pool_t ...@@ -1526,9 +1526,10 @@ class buf_pool_t
/** Remove the sentinel block for the watch before replacing it with a /** Remove the sentinel block for the watch before replacing it with a
real block. watch_unset() or watch_occurred() will notice real block. watch_unset() or watch_occurred() will notice
that the block has been replaced with the real block. that the block has been replaced with the real block.
@param watch sentinel @param w sentinel
@param chain locked hash table chain */ @param chain locked hash table chain
inline void watch_remove(buf_page_t *watch, hash_chain &chain); @return w->state() */
inline uint32_t watch_remove(buf_page_t *w, hash_chain &chain);
/** @return whether less than 1/4 of the buffer pool is available */ /** @return whether less than 1/4 of the buffer pool is available */
TPOOL_SUPPRESS_TSAN TPOOL_SUPPRESS_TSAN
......
...@@ -117,15 +117,14 @@ SET(S3_SOURCES s3_func.c ...@@ -117,15 +117,14 @@ SET(S3_SOURCES s3_func.c
libmarias3/src/sha256-internal.c libmarias3/src/xml.c libmarias3/src/sha256-internal.c libmarias3/src/xml.c
libmarias3/src/assume_role.c) libmarias3/src/assume_role.c)
IF(NOT PLUGIN_S3 STREQUAL NO) IF(NOT PLUGIN_S3 STREQUAL NO AND NOT WIN32)
FIND_PACKAGE(CURL) FIND_PACKAGE(CURL)
ENDIF() ENDIF()
IF (CURL_FOUND) IF (CURL_FOUND)
INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIRS}) INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIRS})
LINK_DIRECTORIES(${PC_CURL_LIBDIR})
MYSQL_ADD_PLUGIN(s3 ha_s3.cc ${S3_SOURCES} COMPONENT s3-engine MYSQL_ADD_PLUGIN(s3 ha_s3.cc ${S3_SOURCES} COMPONENT s3-engine
LINK_LIBRARIES curl z STORAGE_ENGINE NOT_EMBEDDED CONFIG s3.cnf) LINK_LIBRARIES ${CURL_LIBRARIES} z STORAGE_ENGINE NOT_EMBEDDED CONFIG s3.cnf)
ENDIF() ENDIF()
SET(CPACK_RPM_s3-engine_PACKAGE_SUMMARY "Amazon S3 archival storage engine for MariaDB" PARENT_SCOPE) SET(CPACK_RPM_s3-engine_PACKAGE_SUMMARY "Amazon S3 archival storage engine for MariaDB" PARENT_SCOPE)
......
...@@ -1310,7 +1310,7 @@ my_bool set_database_and_table_from_path(S3_INFO *s3, const char *path) ...@@ -1310,7 +1310,7 @@ my_bool set_database_and_table_from_path(S3_INFO *s3, const char *path)
if (path[length-1] == FN_LIBCHAR || path[length-1] == '/') if (path[length-1] == FN_LIBCHAR || path[length-1] == '/')
break; break;
#ifdef FN_DEVCHAR #ifdef FN_DEVCHAR
if (path[length-1] == FN_DECVHAR) if (path[length-1] == FN_DEVCHAR)
break; break;
#endif #endif
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment