git » mariadb.git » commit efa91b3

Backport patch to prevent possible mysqld crash when mysql_upgrade is used on

author Bartłomiej Piotrowski
2015-05-09 12:28:00 UTC
committer Bartłomiej Piotrowski
2015-05-09 12:28:00 UTC
parent 7c5188e88e0dc93aff74fc76769b597a9e8e00ce

Backport patch to prevent possible mysqld crash when mysql_upgrade is used on

database with REPAIR VIEW.

PKGBUILD +7 -5
mariadb-10.0.18-MDEV-8115.patch +61 -0

diff --git a/PKGBUILD b/PKGBUILD
index 1399132..b158c69 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -4,7 +4,7 @@ pkgbase=mariadb
 pkgname=('libmariadbclient' 'mariadb-clients' 'mytop' 'mariadb')
 pkgver=10.0.18
 _pkgver=${pkgver/.a/a}
-pkgrel=1
+pkgrel=2
 arch=('i686' 'x86_64')
 license=('GPL')
 url='http://mariadb.org/'
@@ -13,15 +13,17 @@ makedepends=('cmake' 'openssl' 'zlib' 'libaio' 'libxml2' 'openssl' 'pcre'
 source=(https://downloads.mariadb.org/interstitial/mariadb-$pkgver/source/mariadb-$pkgver.tar.gz
         mariadb.service
         mariadb-post.sh
-        mariadb-tmpfile.conf)
+        mariadb-tmpfile.conf
+        mariadb-10.0.18-MDEV-8115.patch)
 md5sums=('eab4f9303883d33558c0059af9e30aa4'
          'd488fffa9f62f9949c4aa1bb6e6db692'
          'b79e65a5aa536e6b5bc60988eb0b78a2'
-         '2fa6e456964d4ff5e6d4f9ff0126aed6')
+         '2fa6e456964d4ff5e6d4f9ff0126aed6'
+         '4be445c305df3cca61aa9a40a1886964')
 
 prepare() {
-  sed -i 's/_SVID_SOURCE/_DEFAULT_SOURCE/' \
-    $pkgbase-$pkgver/storage/tokudb/ft-index/cmake_modules/TokuSetupCompiler.cmake
+  cd $pkgbase-$pkgver
+  patch -p1 -i ../mariadb-10.0.18-MDEV-8115.patch
 }
 
 build() {
diff --git a/mariadb-10.0.18-MDEV-8115.patch b/mariadb-10.0.18-MDEV-8115.patch
new file mode 100644
index 0000000..6ada096
--- /dev/null
+++ b/mariadb-10.0.18-MDEV-8115.patch
@@ -0,0 +1,61 @@
+From 0014bdc7eef141dcd66930e853242b3be4960831 Mon Sep 17 00:00:00 2001
+From: Sergei Golubchik <serg@mariadb.org>
+Date: Thu, 7 May 2015 22:18:34 +0200
+Subject: [PATCH] MDEV-8115 mysql_upgrade crashes the server with REPAIR VIEW
+
+on REPAIR don't do table-specific stuff for views
+(because even if the view has a temp table opened for it,
+it's not opened all the way down the engine. In particular,
+Aria crashes in maria_status() because MARIA_HA* info - that is
+table->table->file->file - is NULL)
+---
+ mysql-test/r/repair.result | 7 +++++++
+ mysql-test/t/repair.test   | 9 +++++++++
+ sql/sql_admin.cc           | 2 +-
+ 3 files changed, 17 insertions(+), 1 deletion(-)
+
+diff --git a/mysql-test/r/repair.result b/mysql-test/r/repair.result
+index 52ae9c3..51c3374 100644
+--- a/mysql-test/r/repair.result
++++ b/mysql-test/r/repair.result
+@@ -207,3 +207,10 @@ check table t1;
+ Table	Op	Msg_type	Msg_text
+ test.t1	check	status	OK
+ drop table t1;
++create table t1 (a blob);
++create view v1 as select * from t1;
++repair view v1;
++Table	Op	Msg_type	Msg_text
++test.v1	repair	status	OK
++drop view v1;
++drop table t1;
+diff --git a/mysql-test/t/repair.test b/mysql-test/t/repair.test
+index 337b73f..f625965 100644
+--- a/mysql-test/t/repair.test
++++ b/mysql-test/t/repair.test
+@@ -208,3 +208,12 @@ repair table t1 use_frm;
+ select count(*) from t1;
+ check table t1;
+ drop table t1;
++
++#
++# MDEV-8115 mysql_upgrade crashes the server with REPAIR VIEW
++#
++create table t1 (a blob);
++create view v1 as select * from t1;
++repair view v1;
++drop view v1;
++drop table t1;
+diff --git a/sql/sql_admin.cc b/sql/sql_admin.cc
+index 44057b6..9827c67 100644
+--- a/sql/sql_admin.cc
++++ b/sql/sql_admin.cc
+@@ -901,7 +901,7 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables,
+         break;
+       }
+     }
+-    if (table->table)
++    if (table->table && !table->view)
+     {
+       if (table->table->s->tmp_table)
+       {