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

Merge 10.6 into 10.7

parents 0444d86b 63f76d3b
......@@ -52,39 +52,82 @@ remove_rocksdb_tools()
fi
}
CODENAME="$(lsb_release -sc)"
case "${CODENAME}" in
stretch)
# MDEV-28022 libzstd-dev-1.1.3 minimum version
sed -i -e '/libzstd-dev/d' \
-e 's/libcurl4/libcurl3/g' -i debian/control
remove_rocksdb_tools
;;
bionic)
remove_rocksdb_tools
;;
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
replace_uring_with_aio()
{
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
sed -e '/-DIGNORE_AIO_CHECK=YES/d' \
-e '/-DWITH_URING=yes/d' -i debian/rules
}
# 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
disable_pmem()
{
sed '/libpmem-dev/d' -i debian/control
sed '/-DWITH_PMEM=yes/d' -i debian/rules
fi
}
architecture=$(dpkg-architecture -q DEB_BUILD_ARCH)
CODENAME="$(lsb_release -sc)"
case "${CODENAME}" in
stretch)
# MDEV-16525 libzstd-dev-1.1.3 minimum version
sed -e '/libzstd-dev/d' \
-e 's/libcurl4/libcurl3/g' -i debian/control
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)
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
# Adjust changelog, add new version
echo "Incrementing changelog and starting build scripts"
......
......@@ -34,7 +34,7 @@ Build-Depends: bison,
libnuma-dev [linux-any],
libpam0g-dev,
libpcre2-dev,
libpmem-dev [amd64 arm64 ppc64el],
libpmem-dev [amd64 arm64 ppc64el riscv64],
libsnappy-dev,
libssl-dev,
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
# 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
ifneq (,$(filter $(DEB_HOST_ARCH_CPU),amd64 arm64 ppc64el))
ifneq (,$(filter $(DEB_HOST_ARCH_CPU),amd64 arm64 ppc64el riscv64))
CMAKEFLAGS += -DWITH_PMEM=yes
endif
......
......@@ -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
source-is-missing storage/columnstore/columnstore/utils/jemalloc/libjemalloc.so.2
# 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
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 -> 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 @@
# suite.pm will make sure that all tests including this file
# 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 @@
--echo # Save the initial number of concurrent sessions
--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 (con2,localhost,root,,);
......
......@@ -15,6 +15,11 @@ if (!$INNOCHECKSUM) {
--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`;
SET GLOBAL innodb_file_per_table = ON;
# zlib
......
......@@ -38,7 +38,7 @@ if (`SELECT COUNT(*) <> 36 FROM information_schema.character_sets
'hp8' , 'keybcs2', 'koi8r' , 'koi8u' , 'latin1',
'latin2' , 'latin5' , 'latin7' , 'macce' , 'macroman',
'sjis' , 'swe7' , 'tis620' , 'ucs2' , 'ujis',
'utf8'
'utf8mb3'
)`)
{
--skip Not all character sets required for this test are present
......@@ -72,12 +72,12 @@ WHERE collation_name IN (
'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_spanish2_ci', 'ucs2_spanish_ci', 'ucs2_swedish_ci', 'ucs2_turkish_ci',
'ucs2_unicode_ci', 'ujis_bin', 'ujis_japanese_ci', 'utf8_bin',
'utf8_czech_ci', 'utf8_danish_ci', 'utf8_estonian_ci', 'utf8_general_ci',
'utf8_hungarian_ci', 'utf8_icelandic_ci', 'utf8_latvian_ci', 'utf8_lithuanian_ci',
'utf8_persian_ci', 'utf8_polish_ci', 'utf8_roman_ci', 'utf8_romanian_ci',
'utf8_slovak_ci', 'utf8_slovenian_ci', 'utf8_spanish2_ci', 'utf8_spanish_ci',
'utf8_swedish_ci', 'utf8_turkish_ci', 'utf8_unicode_ci'
'ucs2_unicode_ci', 'ujis_bin', 'ujis_japanese_ci', 'utf8mb3_bin',
'utf8mb3_czech_ci', 'utf8mb3_danish_ci', 'utf8mb3_estonian_ci', 'utf8mb3_general_ci',
'utf8mb3_hungarian_ci', 'utf8mb3_icelandic_ci', 'utf8mb3_latvian_ci', 'utf8mb3_lithuanian_ci',
'utf8mb3_persian_ci', 'utf8mb3_polish_ci', 'utf8mb3_roman_ci', 'utf8mb3_romanian_ci',
'utf8mb3_slovak_ci', 'utf8mb3_slovenian_ci', 'utf8mb3_spanish2_ci', 'utf8mb3_spanish_ci',
'utf8mb3_swedish_ci', 'utf8mb3_turkish_ci', 'utf8mb3_unicode_ci'
)`)
{
--skip Not all collations required for this test are present
......@@ -86,7 +86,7 @@ WHERE collation_name IN (
################################
let $check_std_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
# than other handlers
......@@ -104,7 +104,7 @@ SET autocommit=0;
################################
let $check_std_csets= 1;
let $check_ucs2_csets= 1;
let $check_utf8_csets= 1;
let $check_utf8mb3_csets= 1;
#
# Check all charsets/collation combinations
......@@ -610,7 +610,7 @@ let $coll= ucs2_unicode_ci;
}
if ($check_utf8_csets)
if ($check_utf8mb3_csets)
{
# utf8
......
# This test is slow on buildbot.
--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_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;
......
......@@ -2,6 +2,11 @@
-- source include/have_innodb_bzip2.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
set global innodb_compression_algorithm = 5;
......
......@@ -4,6 +4,11 @@
# The test can take very long time with valgrind
--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
set global innodb_compression_algorithm = 2;
......
......@@ -2,6 +2,11 @@
-- source include/have_innodb_lzma.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
set global innodb_compression_algorithm = 4;
......
......@@ -2,6 +2,11 @@
-- source include/have_innodb_lzo.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
set global innodb_compression_algorithm = 3;
......
......@@ -2,6 +2,10 @@
--source include/not_embedded.inc
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
set global innodb_compression_algorithm = 1;
......
......@@ -3,6 +3,11 @@
# This test is slow on buildbot.
--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
set global innodb_compression_algorithm = 1;
......
......@@ -6,6 +6,9 @@
--disable_query_log
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
SET GLOBAL innodb_undo_log_truncate = 0;
......
......@@ -3,7 +3,6 @@
#
--source include/no_protocol.inc
--source include/have_innodb.inc
--echo # SET-UP
CREATE DATABASE nested_sp;
......@@ -17,7 +16,7 @@ CREATE TABLE t1(
CREATE TABLE t2(
n INT UNSIGNED NOT NULL,
f BIGINT UNSIGNED
) engine=innodb;
);
--echo ############################
--echo # Creating Stored Programs #
......
......@@ -167,7 +167,7 @@ data INT NOT NULL
CREATE TABLE t2(
n INT UNSIGNED NOT NULL,
f BIGINT UNSIGNED
) engine=innodb;
);
############################
# Creating Stored Programs #
############################
......
......@@ -167,7 +167,7 @@ data INT NOT NULL
CREATE TABLE t2(
n INT UNSIGNED NOT NULL,
f BIGINT UNSIGNED
) engine=innodb;
);
############################
# Creating Stored Programs #
############################
......
......@@ -13,7 +13,7 @@ data INT NOT NULL
CREATE TABLE t2(
n INT UNSIGNED NOT NULL,
f BIGINT UNSIGNED
) engine=innodb;
);
############################
# Creating Stored Programs #
############################
......@@ -67,6 +67,7 @@ END WHILE;
END|
CREATE TRIGGER trg AFTER INSERT ON t1 FOR EACH ROW
CALL ifac(10)|
ALTER TABLE t2 ENGINE=InnoDB;
#####################
# Executing queries #
#####################
......@@ -1199,7 +1200,7 @@ data INT NOT NULL
CREATE TABLE t2(
n INT UNSIGNED NOT NULL,
f BIGINT UNSIGNED
) engine=innodb;
);
############################
# Creating Stored Programs #
############################
......
......@@ -101,6 +101,7 @@ CREATE TRIGGER trg4 BEFORE DELETE ON t1 FOR EACH ROW
SET @del:= @del + 1|
CREATE TRIGGER trg5 AFTER DELETE ON t1 FOR EACH ROW
SET @del:= @del + 8 + old.j|
ALTER TABLE t2 ENGINE=InnoDB;
#####################
# Executing queries #
#####################
......@@ -159,6 +160,7 @@ WHERE CURRENT_SCHEMA='stored_programs' AND
ORDER BY OBJECT_NAME,NESTING_EVENT_LEVEL,SQL_TEXT;
EVENT_NAME SQL_TEXT OBJECT_NAME NESTING_EVENT_TYPE NESTING_EVENT_LEVEL
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 SampleProc2("Jwalamukhi",34) NULL NULL 0
statement/sql/call_procedure CALL SampleProc3() NULL NULL 0
......@@ -375,7 +377,7 @@ data INT NOT NULL
CREATE TABLE t2(
n INT UNSIGNED NOT NULL,
f BIGINT UNSIGNED
) engine=innodb;
);
############################
# Creating Stored Programs #
############################
......@@ -429,6 +431,7 @@ END WHILE;
END|
CREATE TRIGGER trg AFTER INSERT ON t1 FOR EACH ROW
CALL ifac(10)|
ALTER TABLE t2 ENGINE=InnoDB;
#####################
# Executing queries #
#####################
......
......@@ -4,6 +4,7 @@
--source include/not_embedded.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_history_long;
......@@ -13,6 +14,7 @@ TRUNCATE TABLE performance_schema.events_statements_history_long;
--echo #################################################
--source suite/perfschema/include/program_nested_setup.inc
ALTER TABLE t2 ENGINE=InnoDB;
--source suite/perfschema/include/program_nested_execution.inc
SELECT EVENT_NAME, SQL_TEXT, CURRENT_SCHEMA, OBJECT_TYPE, OBJECT_SCHEMA,
......
......@@ -7,6 +7,7 @@
--source include/not_embedded.inc
--source include/have_perfschema.inc
--source include/have_innodb.inc
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 #----------------------------
--source suite/perfschema/include/program_setup.inc
ALTER TABLE t2 ENGINE=InnoDB;
--source suite/perfschema/include/program_execution.inc
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;
--echo # Nested stored programs.
--echo #------------------------
--source suite/perfschema/include/program_nested_setup.inc
ALTER TABLE t2 ENGINE=InnoDB;
--source suite/perfschema/include/program_nested_execution.inc
SELECT EVENT_NAME, SQL_TEXT, OBJECT_NAME, NESTING_EVENT_TYPE, NESTING_EVENT_LEVEL
......
......@@ -4,6 +4,11 @@ SELECT @orig;
25
SET GLOBAL innodb_buffer_pool_dump_pct=3;
# 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;
SELECT @@global.innodb_buffer_pool_dump_pct;
@@global.innodb_buffer_pool_dump_pct
......
--disable_query_log
if (!$TEST_VERSIONING_SO)
{
--skip needs test_versioning plugin
}
source include/have_innodb.inc;
--disable_query_log
set @@session.time_zone='+00:00';
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(
# ifdef __SANITIZE_ADDRESS__
# ifdef WITH_UBSAN
# define SANITIZER_MODE "ASAN+UBSAN"
# define SANITIZER_MODE "ASAN,UBSAN"
# else
# define SANITIZER_MODE "ASAN"
# endif
......
......@@ -2263,29 +2263,66 @@ buf_page_t* buf_page_get_zip(const page_id_t page_id, ulint zip_size)
lookup:
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);
if (!bpage || buf_pool.watch_is_sentinel(*bpage))
{
xend();
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(page_id == bpage->id());
if (!bpage->zip.data)
{
/* There is no ROW_FORMAT=COMPRESSED page. */
hash_lock.unlock_shared();
return nullptr;
}
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
buf_page_t::read_complete() will not wait for buf_pool.mutex,
and because S-latch would not conflict with a U-latch
that would be protecting buf_page_t::write_complete(). */
bpage->lock.s_lock();
hash_lock.unlock_shared();
break;
}
hash_lock.unlock_shared();
}
discard_attempted= true;
......
/*****************************************************************************
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
the terms of the GNU General Public License as published by the Free Software
......@@ -50,19 +50,30 @@ i/o-fixed buffer blocks */
/** Remove the sentinel block for the watch before replacing it with a
real block. watch_unset() or watch_occurred() will notice
that the block has been replaced with the real block.
@param watch sentinel
@param chain locked hash table chain */
inline void buf_pool_t::watch_remove(buf_page_t *watch,
buf_pool_t::hash_chain &chain)
@param w sentinel
@param chain locked hash table chain
@return w->state() */
inline uint32_t buf_pool_t::watch_remove(buf_page_t *w,
buf_pool_t::hash_chain &chain)
{
mysql_mutex_assert_owner(&buf_pool.mutex);
ut_ad(page_hash.lock_get(chain).is_write_locked());
ut_a(watch_is_sentinel(*watch));
if (watch->buf_fix_count())
page_hash.remove(chain, watch);
ut_ad(!watch->in_page_hash);
watch->set_state(buf_page_t::NOT_USED);
watch->id_= page_id_t(~0ULL);
ut_ad(xtest() || page_hash.lock_get(chain).is_write_locked());
ut_ad(w >= &watch[0]);
ut_ad(w < &watch[array_elements(watch)]);
ut_ad(!w->in_zip_hash);
ut_ad(!w->zip.data);
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
......@@ -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)};
if (hash_page)
{
/* Preserve the reference count. */
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);
}
bpage->set_state(buf_pool.watch_remove(hash_page, chain) +
(buf_page_t::READ_FIX - buf_page_t::UNFIXED));
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,
{buf_pool.page_hash.lock_get(chain)};
if (hash_page)
{
/* Preserve the reference count. It can be 0 if
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);
}
bpage->set_state(buf_pool.watch_remove(hash_page, chain) +
(buf_page_t::READ_FIX - buf_page_t::UNFIXED));
buf_pool.page_hash.append(chain, bpage);
}
......
/*****************************************************************************
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
the terms of the GNU General Public License as published by the Free Software
......@@ -1526,9 +1526,10 @@ class buf_pool_t
/** Remove the sentinel block for the watch before replacing it with a
real block. watch_unset() or watch_occurred() will notice
that the block has been replaced with the real block.
@param watch sentinel
@param chain locked hash table chain */
inline void watch_remove(buf_page_t *watch, hash_chain &chain);
@param w sentinel
@param chain locked hash table 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 */
TPOOL_SUPPRESS_TSAN
......
......@@ -117,15 +117,14 @@ SET(S3_SOURCES s3_func.c
libmarias3/src/sha256-internal.c libmarias3/src/xml.c
libmarias3/src/assume_role.c)
IF(NOT PLUGIN_S3 STREQUAL NO)
IF(NOT PLUGIN_S3 STREQUAL NO AND NOT WIN32)
FIND_PACKAGE(CURL)
ENDIF()
IF (CURL_FOUND)
INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIRS})
LINK_DIRECTORIES(${PC_CURL_LIBDIR})
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()
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)
if (path[length-1] == FN_LIBCHAR || path[length-1] == '/')
break;
#ifdef FN_DEVCHAR
if (path[length-1] == FN_DECVHAR)
if (path[length-1] == FN_DEVCHAR)
break;
#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