diff --git a/mariadb/0002-MDEV-31443-FATAL-InnoDB-Unable-to-find-charset-colla.patch b/mariadb/0002-MDEV-31443-FATAL-InnoDB-Unable-to-find-charset-colla.patch new file mode 100644 index 0000000..c827e5a --- /dev/null +++ b/mariadb/0002-MDEV-31443-FATAL-InnoDB-Unable-to-find-charset-colla.patch @@ -0,0 +1,113 @@ +From 313c5a1dfb744aaef10586526dda89d2b4a50651 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= +Date: Wed, 5 Jul 2023 12:37:05 +0300 +Subject: [PATCH 1/1] MDEV-31443 [FATAL] InnoDB: Unable to find + charset-collation in ibuf_upgrade() + +dtype_new_read_for_order_and_null_size(): Correctly assign type->prtype. +This caused the fatal error and crash. + +ibuf_merge(): Relax a too strict condition that would result in +[ERROR] InnoDB: Unable to upgrade the change buffer +when there exist buffered changes to redundant secondary indexes, such as +PRIMARY KEY(x), INDEX(x). + +ibuf_upgrade(): Modify at most one user tablespace per mini-transaction, +to be crash-safe. + +page_cur_insert_rec_zip(), page_cur_delete_rec(): Relax debug assertions +for ibuf_upgrade(). + +ibuf_log_rebuild_if_needed(): Invoke recv_sys.debug_free() only after +srv_log_rebuild_if_needed() to avoid an assertion failure. This code +is executed when the innodb_log_file_size is changed when upgrading +from 10.x to 11.0. + +Tested by: Matthias Leich, Christian Hesse +--- + storage/innobase/ibuf/ibuf0ibuf.cc | 14 ++++++++++++-- + storage/innobase/page/page0cur.cc | 5 +++-- + storage/innobase/srv/srv0start.cc | 3 ++- + 3 files changed, 17 insertions(+), 5 deletions(-) + +diff --git a/storage/innobase/ibuf/ibuf0ibuf.cc b/storage/innobase/ibuf/ibuf0ibuf.cc +index 5303b592c71..a13af290d8d 100644 +--- a/storage/innobase/ibuf/ibuf0ibuf.cc ++++ b/storage/innobase/ibuf/ibuf0ibuf.cc +@@ -156,7 +156,7 @@ dtype_new_read_for_order_and_null_size( + << 16; + + if (dtype_is_string_type(type->mtype)) { +- type->prtype |= charset_coll << 16; ++ type->prtype |= charset_coll; + + if (charset_coll == 0) { + /* This insert buffer record was inserted before +@@ -709,7 +709,7 @@ static dberr_t ibuf_merge(fil_space_t *space, btr_cur_t *cur, mtr_t *mtr) + rec_t *rec= cur->page_cur.rec; + ulint n_fields= rec_get_n_fields_old(rec); + +- if (n_fields <= IBUF_REC_FIELD_USER + 1 || rec[4]) ++ if (n_fields < IBUF_REC_FIELD_USER + 1 || rec[4]) + return DB_CORRUPTION; + + n_fields-= IBUF_REC_FIELD_USER; +@@ -910,7 +910,17 @@ ATTRIBUTE_COLD dberr_t ibuf_upgrade() + prev_space_id= space_id; + space= fil_space_t::get(space_id); + if (space) ++ { ++ /* Move to the next user tablespace. We buffer-fix the current ++ change buffer leaf page to prevent it from being evicted ++ before we have started a new mini-transaction. */ ++ cur.page_cur.block->fix(); ++ mtr.commit(); ++ log_free_check(); ++ mtr.start(); ++ mtr.page_lock(cur.page_cur.block, RW_X_LATCH); + mtr.set_named_space(space); ++ } + spaces++; + } + pages++; +diff --git a/storage/innobase/page/page0cur.cc b/storage/innobase/page/page0cur.cc +index 8d3a44d630d..2562ae1d0e4 100644 +--- a/storage/innobase/page/page0cur.cc ++++ b/storage/innobase/page/page0cur.cc +@@ -1791,7 +1791,8 @@ page_cur_insert_rec_zip( + ut_ad(rec_offs_comp(offsets)); + ut_ad(fil_page_get_type(page) == FIL_PAGE_INDEX || + fil_page_get_type(page) == FIL_PAGE_RTREE); +- ut_ad(mach_read_from_8(PAGE_HEADER + PAGE_INDEX_ID + page) == index->id); ++ ut_ad(mach_read_from_8(PAGE_HEADER + PAGE_INDEX_ID + page) == index->id || ++ index->is_dummy); + ut_ad(!page_get_instant(page)); + ut_ad(!page_cur_is_after_last(cursor)); + #ifdef UNIV_ZIP_DEBUG +@@ -2258,7 +2259,7 @@ page_cur_delete_rec( + == index->table->not_redundant()); + ut_ad(fil_page_index_page_check(block->page.frame)); + ut_ad(mach_read_from_8(PAGE_HEADER + PAGE_INDEX_ID + block->page.frame) +- == index->id); ++ == index->id || index->is_dummy); + ut_ad(mtr->is_named_space(index->table->space)); + + /* The record must not be the supremum or infimum record. */ +diff --git a/storage/innobase/srv/srv0start.cc b/storage/innobase/srv/srv0start.cc +index 33545f42d05..9e1efa3c85d 100644 +--- a/storage/innobase/srv/srv0start.cc ++++ b/storage/innobase/srv/srv0start.cc +@@ -1165,8 +1165,9 @@ ATTRIBUTE_COLD static dberr_t ibuf_log_rebuild_if_needed() + if (recv_sys.is_corrupt_log() || recv_sys.is_corrupt_fs()) + return DB_CORRUPTION; + ++ dberr_t err= srv_log_rebuild_if_needed(); + recv_sys.debug_free(); +- return srv_log_rebuild_if_needed(); ++ return err; + } + + static tpool::task_group rollback_all_recovered_group(1); +-- +2.41.0 + diff --git a/mariadb/PKGBUILD b/mariadb/PKGBUILD index 6cc748e..df4cb18 100644 --- a/mariadb/PKGBUILD +++ b/mariadb/PKGBUILD @@ -9,7 +9,7 @@ pkgbase=mariadb pkgname=('mariadb-libs' 'mariadb-clients' 'mariadb' 'mytop') pkgdesc='Fast SQL database server, derived from MySQL w/o systemd and zstd' pkgver=11.0.2 -pkgrel=01 +pkgrel=02 url='https://mariadb.org/' makedepends=('boost' 'bzip2' 'cmake' 'cracklib' 'curl' 'jemalloc' 'judy' 'krb5' 'libaio' 'libxcrypt' 'libxml2' 'lz4' 'openssl' 'pcre2' 'zlib' 'xz') @@ -20,8 +20,9 @@ makedepends=('boost' 'bzip2' 'cmake' 'cracklib' 'curl' 'jemalloc' 'judy' 'krb5' # https://mariadb.com/kb/en/library/mirror-sites-for-mariadb/ source=("https://rsync.osuosl.org/pub/mariadb/mariadb-${pkgver}/source/mariadb-${pkgver}.tar.gz"{,.asc} mariadb.sysusers.conf - mariadb.tmpfile.conf) -# 0001-arch-specific.patch) + mariadb.tmpfile.conf +# 0001-arch-specific.patch + '0002-MDEV-31443-FATAL-InnoDB-Unable-to-find-charset-colla.patch') prepare() { cd $pkgbase-$pkgver/ @@ -31,6 +32,11 @@ prepare() { # * force preloading jemalloc for memory management # * make systemd-tmpfiles create MYSQL_DATADIR ## patch -Np1 < ../0001-arch-specific.patch + + # MDEV-31443 assert [FATAL] InnoDB: Unable to find charset-collation for 254 after upgrade from 10.11.4 to 11.0 + # https://jira.mariadb.org/browse/MDEV-31443 + patch -Np1 < ../0002-MDEV-31443-FATAL-InnoDB-Unable-to-find-charset-colla.patch + } build() { @@ -38,6 +44,8 @@ build() { # build options -DCOMPILATION_COMMENT="joborun Linux" -DCMAKE_BUILD_TYPE=RelWithDebInfo + #-DCMAKE_BUILD_TYPE=Debug + #-DMYSQL_MAINTAINER_MODE=WARN -Wno-dev # file paths @@ -244,10 +252,11 @@ validpgpkeys=('177F4010FE56CA3336300305F1656F24C74CD1D8') # MariaDB Signing Key sha256sums=(3c71576cad0ea416882270e383f94cc89693b7fbcce1fa4f306fe3e931e464ae # mariadb-11.0.2.tar.gz 6b9c7327d92ba68810a62dff4a4661fa0e69ce87b20205b28e1c8758a115bf4b # mariadb-11.0.2.tar.gz.asc 711b4e7cf40e2b1ab132655a8d64f5a721027296f7a5731ffa70b504b3d805cd # mariadb.sysusers.conf - 5ff8916c32c87ac45f05171669ff94e5a1a81c6bd7e6516b63fd9db8723916fc) # mariadb.tmpfile.conf + 5ff8916c32c87ac45f05171669ff94e5a1a81c6bd7e6516b63fd9db8723916fc # mariadb.tmpfile.conf + e4ea86c72fe0258e442cc8a2dc6cf040696535e22d70be4cb63007130e39d222) # 0002-MDEV-31443-FATAL-InnoDB-Unable-to-find-charset-colla.patch -## 9fd0003a0fe64e7de67e7fe69a7c40e8e2eb3f4e10c9e7cac39b4f5ebb1fc159 mariadb-11.0.2-01-x86_64.pkg.tar.lz -## 77dc96fa5130c0c6eef978c2c1e7c5c9e968945845c599965800488ba5e2ed8b mariadb-clients-11.0.2-01-x86_64.pkg.tar.lz -## 37bc0d8461b5b93362abb6f496ecaa7d299a0dd7b439edfa538edaf8aca56262 mariadb-libs-11.0.2-01-x86_64.pkg.tar.lz -## 8cd11fefac6305a065121a0a69e110197419e0c0442997300cf3dfa4ec46c059 mytop-11.0.2-01-x86_64.pkg.tar.lz +## c90b63ee23305b579b62fd0b11c49c203f6f64d5f7d37097e32ef14dfa79f72e mariadb-11.0.2-02-x86_64.pkg.tar.lz +## aae72970eb2e17d24fe64bc48e06a311396fbc5d9d7b929ce0f8c9a4f4250ad4 mariadb-clients-11.0.2-02-x86_64.pkg.tar.lz +## 76a3be27ffa1a7a28ced2bc19a768b7fae8a9486dd768b9f6a066655f8722f29 mariadb-libs-11.0.2-02-x86_64.pkg.tar.lz +## afb838dad67c8fc68d50ada358fb1124e3971a6155dfc96321b9359f4feeab31 mytop-11.0.2-02-x86_64.pkg.tar.lz diff --git a/mariadb/PKGBUILD-arch b/mariadb/PKGBUILD-arch index b244fbe..6a8289f 100644 --- a/mariadb/PKGBUILD-arch +++ b/mariadb/PKGBUILD-arch @@ -5,7 +5,7 @@ pkgbase=mariadb pkgname=('mariadb-libs' 'mariadb-clients' 'mariadb' 'mytop') pkgdesc='Fast SQL database server, derived from MySQL' pkgver=11.0.2 -pkgrel=1 +pkgrel=2 arch=('x86_64') license=('GPL') url='https://mariadb.org/' @@ -17,9 +17,11 @@ validpgpkeys=('177F4010FE56CA3336300305F1656F24C74CD1D8') # MariaDB Signing Key # rsync source via https and hope it does not hurt them too much. # https://mariadb.com/kb/en/library/mirror-sites-for-mariadb/ source=("https://rsync.osuosl.org/pub/mariadb/mariadb-${pkgver}/source/mariadb-${pkgver}.tar.gz"{,.asc} + '0002-MDEV-31443-FATAL-InnoDB-Unable-to-find-charset-colla.patch' '0001-arch-specific.patch') sha256sums=('3c71576cad0ea416882270e383f94cc89693b7fbcce1fa4f306fe3e931e464ae' 'SKIP' + 'e4ea86c72fe0258e442cc8a2dc6cf040696535e22d70be4cb63007130e39d222' '3289efb3452d199aec872115f35da3f1d6fd4ce774615076690e9bc8afae1460') prepare() { @@ -30,6 +32,10 @@ prepare() { # * force preloading jemalloc for memory management # * make systemd-tmpfiles create MYSQL_DATADIR patch -Np1 < ../0001-arch-specific.patch + + # MDEV-31443 assert [FATAL] InnoDB: Unable to find charset-collation for 254 after upgrade from 10.11.4 to 11.0 + # https://jira.mariadb.org/browse/MDEV-31443 + patch -Np1 < ../0002-MDEV-31443-FATAL-InnoDB-Unable-to-find-charset-colla.patch } build() { @@ -37,6 +43,8 @@ build() { # build options -DCOMPILATION_COMMENT="Arch Linux" -DCMAKE_BUILD_TYPE=RelWithDebInfo + #-DCMAKE_BUILD_TYPE=Debug + #-DMYSQL_MAINTAINER_MODE=WARN -Wno-dev # file paths diff --git a/upower/PKGBUILD b/upower/PKGBUILD index f83995e..4914d69 100644 --- a/upower/PKGBUILD +++ b/upower/PKGBUILD @@ -6,8 +6,8 @@ #-----------------------------------------| DESCRIPTION |--------------------------------------- pkgname=upower -pkgver=1.90.0 -pkgrel=04 +pkgver=1.90.1 +pkgrel=01 pkgdesc="Abstraction for enumerating power devices, listening to device events and querying history and statistics w/o systemd" url="https://upower.freedesktop.org" depends=(libimobiledevice libgudev usbmuxd) @@ -15,7 +15,7 @@ makedepends=(docbook-xsl gobject-introspection python git gtk-doc meson) checkdepends=(python-{dbus,dbusmock,gobject} umockdev) backup=(etc/UPower/UPower.conf) # options=(debug) ## uncomment this to have the debug pkg produced -_commit=d4259c009b3ca1169dfd19231a040c233fc3b58d # tags/v1.90.0^0 +_commit=96c34a3bb9167a204afc7b9d00086325169a7586 # tags/v1.90.1^0 source=("git+https://gitlab.freedesktop.org/upower/upower.git#commit=$_commit") pkgver() { @@ -26,8 +26,8 @@ pkgver() { prepare() { cd upower - # Fix use of libimobiledevice - git cherry-pick -n 81a89385a45d3de1028bcd86b3688fb465b4035c +# # Fix use of libimobiledevice +# git cherry-pick -n 81a89385a45d3de1028bcd86b3688fb465b4035c } @@ -56,5 +56,4 @@ license=(GPL) sha256sums=(SKIP) -## 9942a082a6494423dd46e3c0fe5d8d29a8cb64e17c3b09eb157fad7b965c64ff upower-1.90.0-04-x86_64.pkg.tar.lz - +## 6a6fe6abe39e0ef23bfbb86f3a304a058c0ae0330df4546ce176dd49bf82270d upower-1.90.1-01-x86_64.pkg.tar.lz diff --git a/upower/PKGBUILD-arch b/upower/PKGBUILD-arch index a91310e..72123f6 100644 --- a/upower/PKGBUILD-arch +++ b/upower/PKGBUILD-arch @@ -2,8 +2,8 @@ # Contributor: Jan de Groot pkgname=upower -pkgver=1.90.0 -pkgrel=4 +pkgver=1.90.1 +pkgrel=1 pkgdesc="Abstraction for enumerating power devices, listening to device events and querying history and statistics" url="https://upower.freedesktop.org" arch=(x86_64) @@ -30,7 +30,7 @@ checkdepends=( umockdev ) backup=(etc/UPower/UPower.conf) -_commit=d4259c009b3ca1169dfd19231a040c233fc3b58d # tags/v1.90.0^0 +_commit=96c34a3bb9167a204afc7b9d00086325169a7586 # tags/v1.90.1^0 source=("git+https://gitlab.freedesktop.org/upower/upower.git#commit=$_commit") b2sums=('SKIP') @@ -41,9 +41,6 @@ pkgver() { prepare() { cd upower - - # Fix use of libimobiledevice - git cherry-pick -n 81a89385a45d3de1028bcd86b3688fb465b4035c } build() {