diff options
author | Daniel Black <daniel@mariadb.org> | 2022-03-15 16:44:52 +1100 |
---|---|---|
committer | Daniel Black <daniel@mariadb.org> | 2022-03-15 16:44:52 +1100 |
commit | a9500860367c9ef4ac67c9c41c81dcfad13dc836 (patch) | |
tree | f31a017c98c57499434411f9143c80297bc9f252 | |
parent | bfed2c7d57a7ca34936d6ef0688af7357592dc40 (diff) | |
parent | 6de482a6fefac0c21daf33ed465644151cdf879f (diff) | |
download | mariadb-git-a9500860367c9ef4ac67c9c41c81dcfad13dc836.tar.gz |
Merge 10.2 (part) into 10.3
commit '6de482a6fefac0c21daf33ed465644151cdf879f'
10.3 no longer errors in truncate_notembedded.test
but per comments, a non-crash is all that we are after.
-rwxr-xr-x | debian/autobake-deb.sh | 125 | ||||
-rw-r--r-- | debian/control | 5 | ||||
-rw-r--r-- | mysql-test/main/error_simulation.result | 10 | ||||
-rw-r--r-- | mysql-test/main/error_simulation.test | 13 | ||||
-rw-r--r-- | sql/mysqld.cc | 7 | ||||
-rw-r--r-- | sql/sys_vars.cc | 2 |
6 files changed, 46 insertions, 116 deletions
diff --git a/debian/autobake-deb.sh b/debian/autobake-deb.sh index c0153f0d805..c0026a1b2dd 100755 --- a/debian/autobake-deb.sh +++ b/debian/autobake-deb.sh @@ -6,35 +6,10 @@ # Exit immediately on any error set -e -# This file is invocated from Buildbot and Travis-CI to build deb packages. -# As both of those CI systems have many parallel jobs that include different -# parts of the test suite, we don't need to run the mysql-test-run at all when -# building the deb packages here. -export DEB_BUILD_OPTIONS="nocheck $DEB_BUILD_OPTIONS" - -# Travis-CI optimizations -if [[ $TRAVIS ]] -then - # On Travis-CI, the log must stay under 4MB so make the build less verbose - sed -i -e '/Add support for verbose builds/,+2d' debian/rules - - # Don't include test suite package on Travis-CI to make the build time shorter - sed '/Package: mariadb-test-data/,/^$/d' -i debian/control - sed '/Package: mariadb-test/,/^$/d' -i debian/control - - # Don't build the test package at all to save time and disk space - sed 's|DINSTALL_MYSQLTESTDIR=share/mysql/mysql-test|DINSTALL_MYSQLTESTDIR=false|' -i debian/rules - - # Also skip building RocksDB and TokuDB to save even more time and disk space - sed 's|-DDEB|-DPLUGIN_TOKUDB=NO -DPLUGIN_MROONGA=NO -DPLUGIN_ROCKSDB=NO -DPLUGIN_SPIDER=NO -DPLUGIN_OQGRAPH=NO -DPLUGIN_PERFSCHEMA=NO -DPLUGIN_SPHINX=NO -WITH_EMBEDDED_SERVER=OFF -DDEB|' -i debian/rules -fi - -# Convert gcc version to numberical value. Format is Mmmpp where M is Major -# version, mm is minor version and p is patch. -# -dumpfullversion & -dumpversion to make it uniform across old and new (>=7) -GCCVERSION=$(gcc -dumpfullversion -dumpversion | sed -e 's/\.\([0-9][0-9]\)/\1/g' \ - -e 's/\.\([0-9]\)/0\1/g' \ - -e 's/^[0-9]\{3,4\}$/&00/') +# On Buildbot, don't run the mysql-test-run test suite as part of build. +# It takes a lot of time, and we will do a better test anyway in +# Buildbot, running the test suite from installed .debs on a clean VM. +export DEB_BUILD_OPTIONS="nocheck" # Look up distro-version specific stuff # @@ -50,49 +25,8 @@ case "${CODENAME}" in ;; esac -# If libcrack2 (>= 2.9.0) is not available (before Debian Jessie and Ubuntu Trusty) -# clean away the cracklib stanzas so the package can build without them. -if ! apt-cache madison libcrack2-dev | grep 'libcrack2-dev *| *2\.9' >/dev/null 2>&1 -then - sed '/libcrack2-dev/d' -i debian/control - sed '/Package: mariadb-plugin-cracklib/,/^$/d' -i debian/control -fi - -# If libpcre3-dev (>= 2:8.35-3.2~) is not available (before Debian Jessie or Ubuntu Wily) -# clean away the PCRE3 stanzas so the package can build without them. -# Update check when version 2:8.40 or newer is available. -if ! apt-cache madison libpcre3-dev | grep 'libpcre3-dev *| *2:8\.3[2-9]' >/dev/null 2>&1 -then - sed '/libpcre3-dev/d' -i debian/control -fi - -# If libsystemd-dev is not available (before Debian Jessie or Ubuntu Wily) -# clean away the systemd stanzas so the package can build without them. -if ! apt-cache madison libsystemd-dev | grep 'libsystemd-dev' >/dev/null 2>&1 -then - sed '/dh-systemd/d' -i debian/control - sed '/libsystemd-dev/d' -i debian/control - sed 's/ --with systemd//' -i debian/rules - sed '/systemd/d' -i debian/rules - sed '/\.service/d' -i debian/rules - sed '/galera_new_cluster/d' -i debian/mariadb-server-10.3.install - sed '/galera_recovery/d' -i debian/mariadb-server-10.3.install - sed '/mariadb-service-convert/d' -i debian/mariadb-server-10.3.install -fi - -# The binaries should be fully hardened by default. However TokuDB compilation seems to fail on -# Debian Jessie and older and on Ubuntu Xenial and older with the following error message: -# /usr/bin/ld.bfd.real: /tmp/ccOIwjFo.ltrans0.ltrans.o: relocation R_X86_64_PC32 against symbol -# `toku_product_name_strings' can not be used when making a shared object; recompile with -fPIC -# Therefore we need to disable PIE on those releases using gcc as proxy for detection. -if [[ $GCCVERSION -lt 60000 ]] -then - sed 's/hardening=+all$/hardening=+all,-pie/' -i debian/rules -fi - -# Don't build rocksdb package if gcc version is less than 4.8 or we are running on -# x86 32 bit. -if [[ $GCCVERSION -lt 40800 ]] || [[ $(arch) =~ i[346]86 ]] || [[ $TRAVIS ]] +# Don't build rocksdb package on x86 32 bit. +if [[ $(arch) =~ i[346]86 ]] then sed '/Package: mariadb-plugin-rocksdb/,/^$/d' -i debian/control fi @@ -112,26 +46,6 @@ then sed '/Package: mariadb-plugin-cassandra/,/^$/d' -i debian/control fi -# From Debian Stretch/Ubuntu Bionic onwards dh-systemd is just an empty -# transitional metapackage and the functionality was merged into debhelper. -# In Ubuntu Hirsute is was completely removed, so it can't be referenced anymore. -# Keep using it only on Debian Jessie and Ubuntu Xenial. -if apt-cache madison dh-systemd | grep 'dh-systemd' >/dev/null 2>&1 -then - sed 's/debhelper (>= 9.20160709~),/debhelper (>= 9), dh-systemd,/' -i debian/control -fi - -# Mroonga, TokuDB never built on Travis CI anyway, see build flags above -if [[ $TRAVIS ]] -then - sed -i -e "/Package: mariadb-plugin-tokudb/,/^$/d" debian/control - sed -i -e "/Package: mariadb-plugin-mroonga/,/^$/d" debian/control - sed -i -e "/Package: mariadb-plugin-spider/,/^$/d" debian/control - sed -i -e "/Package: mariadb-plugin-oqgraph/,/^$/d" debian/control - sed -i -e "/usr\/lib\/mysql\/plugin\/ha_sphinx.so/d" debian/mariadb-server-10.3.install - sed -i -e "/Package: libmariadbd-dev/,/^$/d" debian/control -fi - # Adjust changelog, add new version echo "Incrementing changelog and starting build scripts" @@ -146,13 +60,6 @@ dch -b -D ${CODENAME} -v "${EPOCH}${UPSTREAM}${PATCHLEVEL}~${CODENAME}" "Automat echo "Creating package version ${EPOCH}${UPSTREAM}${PATCHLEVEL}~${CODENAME} ... " -# On Travis CI, use -b to build binary only packages as there is no need to -# waste time on generating the source package. -if [[ $TRAVIS ]] -then - BUILDPACKAGE_FLAGS="-b" -fi - # Build the package # Pass -I so that .git and other unnecessary temporary and source control files # will be ignored by dpkg-source when creating the tar.gz source package. @@ -161,17 +68,13 @@ fakeroot dpkg-buildpackage -us -uc -I $BUILDPACKAGE_FLAGS -j$(nproc) # If the step above fails due to missing dependencies, you can manually run # sudo mk-build-deps debian/control -r -i -# Don't log package contents on Travis-CI to save time and log size -if [[ ! $TRAVIS ]] -then - echo "List package contents ..." - cd .. - for package in `ls *.deb` - do - echo $package | cut -d '_' -f 1 - dpkg-deb -c $package | awk '{print $1 " " $2 " " $6}' | sort -k 3 - echo "------------------------------------------------" - done -fi +echo "List package contents ..." +cd .. +for package in `ls *.deb` +do + echo $package | cut -d '_' -f 1 + dpkg-deb -c $package | awk '{print $1 " " $2 " " $6}' | sort -k 3 + echo "------------------------------------------------" +done echo "Build complete" diff --git a/debian/control b/debian/control index be8d2b87506..dece7de2bd3 100644 --- a/debian/control +++ b/debian/control @@ -5,10 +5,9 @@ Maintainer: MariaDB Developers <maria-developers@lists.launchpad.net> Build-Depends: bison, chrpath, cmake (>= 2.7), - debhelper (>= 9.20160709~), + debhelper (>= 10), dh-apparmor, dh-exec, - dh-systemd, gdb, libaio-dev [linux-any], libboost-dev, @@ -427,7 +426,7 @@ Pre-Depends: adduser (>= 3.40), mariadb-common (>= ${source:Version}) Depends: galera-3 (>=25.3), gawk, - iproute | iproute2, + iproute2, libdbi-perl, lsb-base (>= 3.0-10), lsof, diff --git a/mysql-test/main/error_simulation.result b/mysql-test/main/error_simulation.result index 457e5c8ec9c..680937accfd 100644 --- a/mysql-test/main/error_simulation.result +++ b/mysql-test/main/error_simulation.result @@ -128,3 +128,13 @@ SELECT f1(1); Got one of the listed errors DROP FUNCTION f1; SET debug_dbug= @saved_dbug; +# +# MDEV-27978 wrong option name in error when exceeding max_session_mem_used +# +SET SESSION max_session_mem_used = 8192; +SELECT * FROM information_schema.processlist; +ERROR HY000: The MariaDB server is running with the --max-session-mem-used=8192 option so it cannot execute this statement +SET SESSION max_session_mem_used = DEFAULT; +# +# End of 10.2 tests +# diff --git a/mysql-test/main/error_simulation.test b/mysql-test/main/error_simulation.test index f713e2da6ba..2c155bc9a22 100644 --- a/mysql-test/main/error_simulation.test +++ b/mysql-test/main/error_simulation.test @@ -158,3 +158,16 @@ SET SESSION debug_dbug="+d,simulate_create_virtual_tmp_table_out_of_memory"; SELECT f1(1); DROP FUNCTION f1; SET debug_dbug= @saved_dbug; + +--echo # +--echo # MDEV-27978 wrong option name in error when exceeding max_session_mem_used +--echo # +SET SESSION max_session_mem_used = 8192; +--error ER_OPTION_PREVENTS_STATEMENT +SELECT * FROM information_schema.processlist; +SET SESSION max_session_mem_used = DEFAULT; + + +--echo # +--echo # End of 10.2 tests +--echo # diff --git a/sql/mysqld.cc b/sql/mysqld.cc index d2e1f1fbbb7..10e6214128a 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -4137,13 +4137,18 @@ static void my_malloc_size_cb_func(long long size, my_bool is_thread_specific) /* Ensure we don't get called here again */ char buf[50], *buf2; thd->set_killed(KILL_QUERY); - my_snprintf(buf, sizeof(buf), "--max-thread-mem-used=%llu", + my_snprintf(buf, sizeof(buf), "--max-session-mem-used=%llu", thd->variables.max_mem_used); if ((buf2= (char*) thd->alloc(256))) { my_snprintf(buf2, 256, ER_THD(thd, ER_OPTION_PREVENTS_STATEMENT), buf); thd->set_killed(KILL_QUERY, ER_OPTION_PREVENTS_STATEMENT, buf2); } + else + { + thd->set_killed(KILL_QUERY, ER_OPTION_PREVENTS_STATEMENT, + "--max-session-mem-used"); + } } DBUG_ASSERT((longlong) thd->status_var.local_memory_used >= 0 || !debug_assert_on_not_freed_memory); diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc index 2d641d9fe20..f04b295a953 100644 --- a/sql/sys_vars.cc +++ b/sql/sys_vars.cc @@ -6145,7 +6145,7 @@ static Sys_var_ulong Sys_log_tc_size( BLOCK_SIZE(my_getpagesize())); #endif -static Sys_var_ulonglong Sys_max_thread_mem( +static Sys_var_ulonglong Sys_max_session_mem_used( "max_session_mem_used", "Amount of memory a single user session " "is allowed to allocate. This limits the value of the " "session variable MEM_USED", SESSION_VAR(max_mem_used), |